我正在浏览我的网站并进行安全审核。我只是简单地接受了我需要清理所有用户输入的事实,但我从未真正停下来尝试过真正发生的事情。我现在开始尝试。
我在 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 攻击会做的事情吗?我是不是误会了什么?
最佳答案
当我在 Chrome 中尝试此操作时,我在控制台中看到一个错误:
Refused to execute a JavaScript script. Source code of script found within request.
因此现代浏览器可能会执行此检查以防止它发生。无论如何,您都应该继续清理您的输入,但是检查您的控制台,您可能会看到这一点。
关于PHP 安全和 XSS 攻击 - 获取错误拒绝执行 JavaScript 脚本。在请求中找到的脚本源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11768633/