CSP(内容安全策略)是通过响应头声明页面允许加载哪些资源的浏览器机制,核心价值是作为 XSS 的纵深防御:即使攻击者注入了脚本,不符合白名单来源的脚本也不会执行。
典型配置:
Content-Security-Policy: default-src 'self';
script-src 'self' https://cdn.example.com;
img-src 'self' data:;
frame-ancestors 'self';
object-src 'none'; base-uri 'self'
关键指令:default-src 兜底,script-src 最重要;object-src 'none' 禁插件,base-uri 防 <base> 劫持,frame-ancestors 防点击劫持。内联脚本优先用 nonce 或 hash 白名单而非 'unsafe-inline'(后者基本架空 CSP)。落地建议:先用 Report-Only 模式灰度收集违规报告,再切换强制执行。易错点:script-src 允许了可被滥用的 JSONP CDN 域名时仍可绕过。追问方向:nonce 方案、Trusted Types。