我正在浏览我的网站并进行安全审核。我只是接受了这样一个事实,即我需要清理所有用户输入,但我从未真正停止并尝试过真正发生的事情。我现在开始尝试了。
我在PHP页面上有一个典型的联系表单。这是_POST
数据。 $_POST["first_name"];
等。
我执行此操作$firstName = htmlspecialchars($_POST["first_name"]);
来清理并显示如下所示的消息。
echo $firstName . ', thank you for your interest. We'll be in touch soon!'
我开始使用此功能,如果我在名字字段中输入<script>alert('hello')</script>
之类的内容,则htmlspecialchars
执行此操作并转换标记。
当我删除htmlspecialchars
时,脚本未被转换,并且它在源中显示为<script>alert('hello')</script>
但是它不会执行。
我的问题是,为什么不执行?这基本上不是XSS攻击会做的吗?我误解了什么吗?
答案 0 :(得分:5)
当我在Chrome中尝试此操作时,我在控制台中看到错误:
拒绝执行JavaScript脚本。请求中找到的脚本源代码。
因此现代浏览器可以进行此检查以防止它。无论如何,你应该继续消毒你的输入,但检查你的控制台,你可能会看到这一点。