PHP安全和XSS攻击-获取错误拒绝执行JavaScript脚本。在请求中找到脚本的源代码

PHP安全和XSS攻击-获取错误拒绝执行JavaScript脚本。在请求中找到脚本的源代码,php,security,xss,code-injection,Php,Security,Xss,Code Injection,我正在浏览我的网站并进行安全审计。我只是接受了一个事实,即我需要清理所有用户输入,但我从来没有真正停下来尝试真正发生的事情。我现在开始做实验 我在PHP页面上有一个典型的联系人表单。这是\u POSTing数据$\u POST[“名字”]等 我这样做$firstName=htmlspecialchars($\u POST[“first\u name”])以清理并显示如下消息 echo $firstName . ', thank you for your interest. We'll be in

我正在浏览我的网站并进行安全审计。我只是接受了一个事实,即我需要清理所有用户输入,但我从来没有真正停下来尝试真正发生的事情。我现在开始做实验

我在PHP页面上有一个典型的联系人表单。这是
\u POST
ing数据<代码>$\u POST[“名字”]

我这样做
$firstName=htmlspecialchars($\u POST[“first\u name”])
以清理并显示如下消息

echo $firstName . ', thank you for your interest. We'll be in touch soon!'
我开始玩这个游戏,如果我在名字字段中输入诸如
alert('hello')
之类的内容,
htmlspecialchars
完成它的工作并隐藏标记

当我删除
htmlspecialchars
时,脚本不会被转换,它在源代码中显示为
alert('hello')
,但不会执行


我的问题是,为什么不执行?这难道不是XSS攻击的基本功能吗?我有什么误解吗?

当我在Chrome中尝试此操作时,我在控制台中看到一个错误:

拒绝执行JavaScript脚本。在请求中找到脚本的源代码


因此,现代浏览器可能会执行此检查以防止它。你应该继续清理你的输入,不管怎样,但是检查你的控制台,你可能会看到这一点。

你检查过javascrpt控制台有没有错误吗?@symcbean-我刚刚检查过。是的,有一个错误。“拒绝执行JavaScript脚本。在请求中找到脚本的源代码。”使用
htmlspecialchars($\u POST[“first\u name”],ENT\u引号)
insteadI刚刚检查并看到了相同的错误。因此,从理论上讲,XSS攻击就是这样发生的,对吗?@Paul在Internet Explorer(一个较旧的版本)中尝试一下,它可能没有这么复杂的检查。除此之外,请阅读XSS攻击是如何进行的。它们可以用很多方法制作。。唯一的限制是你的想象力。因为,它包括一个XSS过滤器。许多其他浏览器没有,XSS过滤器无法捕获任何内容(特别是XSS)。