X-XSS-保护与 CSP

X-XSS-Protection vs CSP

据我了解,CSP 可用于与 X-XSS-Protection 相同的所有事情,甚至更多。如果您正在使用 CSP,是否有充分的理由也使用 X-XSS-Protection

is there any good reason to use X-XSS-Protection as well?

With some doubts(请参阅下面凯文的评论)答案可能是肯定的。

X-Xss-Protection 激活启发式反射 xss 检测功能。反射xss以参数的形式出现,可以很容易判断潜在攻击的范围。

浏览器执行 HTML。根据定义,浏览器无法为服务器生成的 HTML 代码的数据安全提供任何保证。无法确定可信与恶意 javascript... 除非您使用 CSP。 CSP 允许您选择 javascript 浏览器执行的内容。

不允许内联 javascript、eval 或第 3 方来源的强制 CSP 非常可靠,x-xss-protection 对大多数用户几乎没有好处。

如果您的用户浏览器支持 CSP,即。

x-xss-protection多年来一直被IE支持。因此,在有人使用 IE < 12 的情况下,CSP 在 x-xss-protection 可以提供帮助的地方毫无用处。

So, yes. Both. Always. The internet would be a much safer world if every website deployed both.

Consensus has changed since this was originally written。现在建议使用 X-Xss-Protection: 0.

显式禁用该功能

我没有深入挖掘,但我还没有找到一个使用 CSP 而不是 x-xss-protection

的站点
for i in twitter.com vine.co github.com
do
   echo "$i"
   curl -Is "https://$i" | grep -iE "(x-xss-protection|content-security-policy)"
done

内容安全策略

内容安全政策 (CSP) 是一些兼容浏览器添加的附加安全层。通过适当的配置,CSP 有助于减轻某些攻击,例如 XSS 和脚本注入攻击或数据包嗅探攻击。 从技术上讲,如果 header Content-Security-Policy 由后端提供,则启用 CSP。或者,它也可以由前端启用。它是通过使用如下元素完成的:

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">

CSP 通过将已执行的 javascript 源列入白名单来帮助阻止 XSS,其中还包括内联脚本和 event-handling HTML 属性。白名单由管理员配置。管理员可以决定是否所有 javascript 链接都指向相同的来源、特定域以及每个域期望的媒体类型。配置示例:

同源:Content-Security-Policy: default-src 'self'

显式信任域:Content-Security-Policy: default-src 'self' *.trusted.com

X-XSS-PROTECTION

此 header 的目标是阻止加载页面中的 XSS。管理员获得了最少的配置选项,例如报告 url、阻止页面加载... 使用正确的 CSP 配置,这个 header 不是很有效。特别是在现代浏览器中。