目录

X-XSS-Protection 和 CSP 扫盲

X-XSS-Protection

X-XSS-Protection 是一种内置于浏览器中的安全防护模块,在 IE 浏览器中称为 XSS Filter,在 Chrome 浏览器中称为 XSS Auditor。该模块的作用是在检测到跨站脚本攻击(XSS)时,停止加载页面,从而保护用户的信息和系统安全。

然而,随着安全技术的发展,X-XSS-Protection 已经过时。现在,使用合理的内容安全策略(CSP)可以取代 X-XSS-Protection,提供更加全面和有效的保护。

语法:

  • X-XSS-Protection: 0 — 禁止 XSS 过滤
  • X-XSS-Protection: 1 — 启用 XSS 过滤(默认)
  • X-XSS-Protection: 1; mode=block — 启用 XSS 过滤,检测到攻击时阻止页面加载
  • X-XSS-Protection: 1; report=<reporting-uri> — 启用 XSS 过滤并发送违规报告

内容安全策略(CSP)

CSP 是一种内置于浏览器中的安全防护模块,通过限制网页中可以执行的脚本、样式表、图片等内容的来源,防止 XSS、CSRF 等攻击。

CSP 可以做到:

  • 禁止内联脚本和样式,只允许外部引用
  • 限制脚本来源,只允许指定域名或 IP
  • 禁止通过 eval()Function() 动态生成代码
  • 禁止使用不安全的协议加载资源
  • 禁止使用外部资源的内联代码

使用方式:

HTTP 响应头:

1
Content-Security-Policy: script-src 'self'; style-src 'self';

Meta 标签:

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

CSP 的优势:

  • 精准度高
  • 实时性强
  • 兼容性好

X-XSS-Protection 的使用场景

X-XSS-Protection 仍可为不支持 CSP 的旧版浏览器提供保护。如果网站用户群中有部分使用旧版浏览器,可考虑在响应头中添加 X-XSS-Protection。