2012-08-01 14 views
3

我正在通过我的网站并进行安全审计。我只是接受了我需要清理所有用户输入的事实,但我从来没有真正停下脚步,尝试过真正发生的事情。我现在开始尝试。PHP安全和XSS攻击 - 获取错误拒绝执行JavaScript脚本。在请求中找到脚本的源代码

我在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

您是否检查了javascrpt控制台的错误? – symcbean 2012-08-01 22:49:00

+0

@symcbean - 我刚查过。是的,有一个错误。 “拒绝执行JavaScript脚本。在请求中找到脚本的源代码。” – 2012-08-01 22:52:20

+0

使用'htmlspecialchars($ _ POST [“first_name”],ENT_QUOTES);'而不是 – zerkms 2012-08-01 22:53:46

回答

5

当我尝试这样做在Chrome中我看到控制台错误:

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

因此,现代浏览器可能会检查以防止它。无论如何,你应该继续清理你的输入,但检查你的控制台,你可能会看到这个。

+1

我刚查过,看到了同样的错误。那么,从理论上讲,这就是XSS攻击如何发生的,对吗? – 2012-08-01 22:51:48

+0

@Paul在Internet Explorer(旧版本)中尝试它,它可能没有这样复杂的检查。除此之外,请阅读XSS攻击方式。他们可以用很多方式制造......唯一的限制就是你的想象力。 – 2012-08-01 22:57:27

+0

是的,刚刚在IE8中检查,它的工作。谢谢。 – 2012-08-01 22:59:57

相关问题