PHP: & lt; script>从$_POST返回的标记被神秘地阻塞了
PHP: <script> tag echoed from $_POST is mysteriously blocked
我正在测试我学到的关于PHP安全性的信息。我有一个简单的HTML5页面,带有POST表单和单个文本区域输入,我在其中输入以下JS代码:
<script>var x = 5; alert(x);</script>
在接收PHP页面中,我简单地echo $_POST['varname'];
来查看JS代码的执行情况。这当然是清理输入的第一步。
…但是行不通!返回的HTML代码是
<doctype html>
<html>
<body>
<script>var P = 3; alert(P);</script></body>
</html>
…但是警报没有运行!更奇怪的是,当我将代码原样复制到PHP文件中,并让它在不使用PHP的情况下返回该代码时,它不会再次运行,但是如果我更改变量的名称或其值-它会运行!
这在Chrome和Safari上都会发生。我检查了发送和接收的标头,没有发现任何可疑之处。
有人知道这奇怪的巫毒魔法是什么吗?我都快疯了
我运行你的代码,在chrome的控制台上它说
"拒绝执行JavaScript脚本。在请求中找到的脚本源代码。"
所以这可能是一种自然的安全措施,代码没有问题。
行为可能因浏览器而异,因为它们的方法不同
找到解决方案。这是WebKit本身的一个安全特性——这就是为什么Chrome和Safari都有它的原因。为了防止某些形式的XSS攻击,它会阻止页面执行在请求头中发送的JS代码。绕过这个的方法是发送响应头
x-xss-protection: 0
现在我所有的假恶意代码都能很好地工作。
相关文章:
- 如何使用WCF服务和javascript表单post上传.doc文件
- Jquery POST未填充数组
- 如何在php文件中获取$.post-ajax传递的值
- 在POST中将html表作为csv提交
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 如何使用post方法从方法上传文件
- Django: AJAX + CSRF POST gives 403
- AJAX不会在文件上传后重定向到网页-POST方法
- 下载使用POST数据动态生成的文件
- 如何使用自定义标头跨域执行AJAX POST
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- jQuery在输入下验证post错误消息
- 在文本区域POST后解码JSON
- html文件中的script标记根本不起作用
- Node.js - POST to iFrame?
- 中止POST XHR可靠
- 当method=post时,jQueryAjax返回404
- 当我在form_for中的text_field_tag中点击Enter时,如何禁止发出POST请求
- HTTP POST 和 Google Apps Script 文件上传
- post - back后调用java-script函数启动flash游戏