浏览器的X-XSS-Protection / XSS Auditor是否足以阻止XSS?

时间:2013-07-23 01:57:58

标签: php javascript security xss

据我了解,我需要在头服务器端禁用X-XSS-Protection,以防止通过GET请求发生XSS。

例如,用户浏览

http://mysite.com/index.php?page=<script type='text/javascript'> alert("XSS"); </script>

假设$ _GET ['page']从PHP回显到页面而没有以任何方式进行更改,XSS Auditor应该发现请求中的内容被回显到页面并停止它。

这是否足以阻止XSS攻击,还是攻击者可以绕过此浏览器保护?

所有主流浏览器都支持它的充分含义,并且不可绕过。

3 个答案:

答案 0 :(得分:2)

不,一点也不。客户端XSS过滤试图在客户端解决服务器端问题(缺少输出转义),因为没有足够的知识来解决问题。它永远不会100%工作,它总会产生误报。这是一项深度防御措施,也是一个值得怀疑的措施。您必须单独依赖它作为XSS的解决方案。

客户端XSS过滤:

  • 无法防御多重反射的XSS(即在一个参数中包含<,在另一个参数中包含script,而

  • 无法抵御特定于应用程序的编码层(例如,以JSON格式提交,解码和显示而不进行转义);

  • 无法抵御表单参数以外的输入类型;

  • 无法防止基于将其他内容插入页面而非脚本的攻击;

  • 有一个非常不完整的历史,可以防止像CSS一样注入脚本的模糊方法;

  • 根本无法抵御存储的XSS;

  • 所有流行的浏览器都不支持
  • ;

  • 允许攻击者有选择地禁用页面上的脚本,并对其进行破坏。

这不是胜利。

答案 1 :(得分:1)

我不建议依赖用户的浏览器进行任何类型的保护,因为浏览器的版本和类型总是不可预测的。这意味着您需要确保采取所有措施来防止服务器/应用程序级别的XSS(或任何其他类型的攻击)。

答案 2 :(得分:1)

它可能足以捕获反映的 XSS攻击,但是它无法阻止甚至更有害的持久性 XSS攻击。此外,并非所有浏览器都具有XSS保护。您是否真的只希望某些用户只有保护因为您忽略了转义输出?即使在浏览器缺少XSS保护的情况下,在适当的位置转义也会修复两种类型的XSS。