繁体   English   中英

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

[英]Is the browser's X-XSS-Protection/XSS Auditor sufficient to prevent XSS?

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

例如,用户浏览到

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

假设$ _GET ['page']是从PHP回显到页面的,而未进行任何更改,则XSS Auditor应该捕获到请求回显到页面的内容,然后停止该操作。

这是否足以防止XSS攻击,或者攻击者可以绕过此浏览器保护功能?

足够的意思是所有主流浏览器都支持它并且不能绕过它。

一点都不。 客户端XSS过滤正在尝试解决客户端方面的服务器端问题(缺少输出转义),因为客户端方面没有足够的知识来解决该问题。 它永远不会100%起作用,并且始终会产生误报。 这是一种纵深防御的措施,也是一项值得深深质疑的措施。 不能仅依靠它作为XSS的解决方案。

客户端XSS过滤:

  • 无法防御多重反射的XSS(即,在一个参数中包含< ,在另一个参数中包含script ,然后在其旁边输出);

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

  • 除表单参数外,无法防御其他输入类型;

  • 无法基于脚本以外的其他内容插入页面来防御攻击;

  • 在防御诸如CSS之类的晦涩的脚本注入方式方面有着非常零星的历史;

  • 根本无法防御已存储的XSS;

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

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

这不是胜利。

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

捕获反射的 XSS攻击可能就足够了,但是它不可能阻止危害更大的持久 XSS攻击。 此外,并非所有浏览器都具有XSS保护。 你真的想只是因为你忘了逃跑输出只有一些用户有保障? 即使在浏览器缺乏XSS保护的情况下,在适当的位置进行转义也可以修复两种类型的XSS。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM