Content-Security-Policy报告与strict-dynamic治理
概览
- 使用
script-src 的 nonce/hash 搭配 strict-dynamic,限制脚本信任链并防止不受控的动态加载。
- 以
Content-Security-Policy-Report-Only 进行无损试运行,结合 Report-To/Reporting API 收集命中与误报。
- 阻断回退与宽松策略(如
unsafe-inline),并治理第三方脚本来源与子资源完整性。
技术参数(已验证)
- 脚本:
Content-Security-Policy: script-src 'nonce-' 'strict-dynamic' https:; object-src 'none'; base-uri 'none';至少包含一个 nonce/hash 才能激活 strict-dynamic。
- 报告:
Content-Security-Policy-Report-Only: ...; report-to=csp-endpoint;配合 Report-To: { group: "csp-endpoint", max_age: 10800, endpoints: [{ url: "https://report" }] }。
- 继承:
strict-dynamic 忽略静态白名单域;通过受信脚本的加载链传递信任。
- 完整性:对第三方脚本使用 SRI
integrity 与 crossorigin;避免混合内容与宽松通配符。
- 兼容:旧浏览器不支持 Reporting API 时可回退
report-uri;逐步切换到 Report-To。
实战清单
- 为入口脚本注入一次性
nonce,启用 strict-dynamic 并移除 unsafe-inline。
- 配置
Report-Only 观察命中与误报,收敛策略后再正式生效;治理第三方脚本与 SRI。
- 建立仪表盘跟踪违规类型与来源,推动最小权限来源列表与发布流程。
- Importance: CSP 严格模式与报告闭环降低 XSS 面风险并支撑策略演进。
发表评论 取消回复