据我了解,我需要在头服务器端禁用X-XSS-Protection,以防止通过GET请求发生XSS。
例如,用户浏览
http://mysite.com/index.php?page=<script type='text/javascript'> alert("XSS"); </script>
假设$ _GET ['page']从PHP回显到页面而没有以任何方式进行更改,XSS Auditor应该发现请求中的内容被回显到页面并停止它。
这是否足以阻止XSS攻击,还是攻击者可以绕过此浏览器保护?
所有主流浏览器都支持它的充分含义,并且不可绕过。
答案 0 :(得分:2)
不,一点也不。客户端XSS过滤试图在客户端解决服务器端问题(缺少输出转义),因为没有足够的知识来解决问题。它永远不会100%工作,它总会产生误报。这是一项深度防御措施,也是一个值得怀疑的措施。您必须单独依赖它作为XSS的解决方案。
客户端XSS过滤:
无法防御多重反射的XSS(即在一个参数中包含<
,在另一个参数中包含script
,而
无法抵御特定于应用程序的编码层(例如,以JSON格式提交,解码和显示而不进行转义);
无法抵御表单参数以外的输入类型;
无法防止基于将其他内容插入页面而非脚本的攻击;
有一个非常不完整的历史,可以防止像CSS一样注入脚本的模糊方法;
根本无法抵御存储的XSS;
;
允许攻击者有选择地禁用页面上的脚本,并对其进行破坏。
这不是胜利。
答案 1 :(得分:1)
我不建议依赖用户的浏览器进行任何类型的保护,因为浏览器的版本和类型总是不可预测的。这意味着您需要确保采取所有措施来防止服务器/应用程序级别的XSS(或任何其他类型的攻击)。
答案 2 :(得分:1)
它可能足以捕获反映的 XSS攻击,但是它无法阻止甚至更有害的持久性 XSS攻击。此外,并非所有浏览器都具有XSS保护。您是否真的只希望某些用户只有保护因为您忽略了转义输出?即使在浏览器缺少XSS保护的情况下,在适当的位置转义也会修复两种类型的XSS。