# 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 面风险并支撑策略演进。
发表评论 取消回复