我正在尝试测试我学到的有关PHP安全性的信息。我有一个带有POST表单和单个textarea输入的简单HTML5页面,我在其中输入以下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上都会发生这种情况。我检查了发送和接收的标题,但找不到任何可疑的内容。
有谁知道这个奇怪的伏都教魔法是什么?因为我在这里失去了理智。
答案 0 :(得分:1)
我运行你的代码并在chrome的控制台上显示
“拒绝执行JavaScript脚本。在请求中找到脚本的源代码。”
所以它可能是一种自然的安全措施,代码没有错。
由于浏览器与浏览器的不同,行为可能会有所不同
答案 1 :(得分:0)
找到解决方案。 这是WebKit本身的安全功能 - 这就是Chrome和Safari都拥有它的原因。为了防止某些形式的XSS攻击,它阻止页面执行在请求标头中发送的JS代码。 绕过这种情况的方法是发送响应头
x-xss-protection: 0
现在我所有的假冒恶意代码都是恶意的。