Content Security Policy
内容安全策略
内容安全策略(CSP)是一组 HTTP 规则,用来限制浏览器可在页面加载哪些文件,以及哪些脚本可以执行。
另一个例子
银行单页应用先使用 `Content-Security-Policy-Report-Only`,移除内联处理器,再强制执行 `script-src 'nonce-r4…' 'strict-dynamic'; object-src 'none'; base-uri 'none'; frame-ancestors 'none'`。每个响应都使用全新、难以猜中的 `nonce`。抽样的违规报告不会记录客户 URL。
主要部分
- 01策略传递
- 02获取与文档指令
- 03违规报告与发布
什么时候用
把经过测试的严格 CSP 当成额外防线,并优先使用 `nonce` 或哈希。策略更改后,先观察报告再全面强制。
什么时候不要用
不要把宽松的 `*` 或 `unsafe-inline` 规则当成强大防护,也不要重复使用可猜中的 `nonce`。CSP 不能代替普通的 XSS 防护。
代码里的名称
Content-Security-Policy response header with nonces/hashes and restrictive directives 上线前要检查
检查接口约定、任何情况下都不能破坏的规则、授权与输入限制。测试重试、重复执行只生效一次、超时与部分失败。验证数据完整性、兼容性、监控、恢复与回到上一版。
预期结果:为这套系统设计或检查 内容安全策略 (Content Security Policy),并让数据保持正确、安全且容易维护。 用户场景:银行单页应用先使用 `Content-Security-Policy-Report-Only`,移除内联处理器,再强制执行 `script-src 'nonce-r4…' 'strict-dynamic'; object-src 'none'; base-uri 'none'; frame-ancestors 'none'`。每个响应都使用全新、难以猜中的 `nonce`。抽样的违规报告不会记录客户 URL。 技术概念或控制措施:内容安全策略 (Content Security Policy)。 适用理由:把经过测试的严格 CSP 当成额外防线,并优先使用 `nonce` 或哈希。策略更改后,先观察报告再全面强制。 不应使用的情况:不要把宽松的 `*` 或 `unsafe-inline` 规则当成强大防护,也不要重复使用可猜中的 `nonce`。CSP 不能代替普通的 XSS 防护。 工程要求:定义输入、输出、接口约定,以及任何情况下都不能破坏的规则。说明授权与输入检查范围。定义失败、超时、重试和重复执行只生效一次的规则。也要定义数据迁移与兼容限制。 运营要求:加入监控信号与隐藏敏感数据的日志。设置容量上限并写好操作手册。测试恢复与回到上一版的流程。 验收标准:接口约定与失败路径测试通过。重试或部分失败时,数据与授权规则仍正确。性能上限、监控、恢复与回到上一版的方法都已验证。 证据与限制(证据边界):正式文档仍可能是草案、候选版或最终版。请查看文档状态,也要确认浏览器或平台是否支持。 待确认:程序运行环境、数据位置、流量形态、数据一致需求和安全边界。也要确认兼容周期、服务目标(SLO)与恢复上一版的限制。
检查这份需求
请 AI 编程助手检查当前如何使用 内容安全策略 (Content Security Policy)。 定义:内容安全策略(CSP)是一组 HTTP 规则,用来限制浏览器可在页面加载哪些文件,以及哪些脚本可以执行。 生产环境检查:检查接口约定、任何情况下都不能破坏的规则、授权与输入限制。测试重试、重复执行只生效一次、超时与部分失败。验证数据完整性、兼容性、监控、恢复与回到上一版。 修改程序前,先列出看到的证据、缺口、严重程度,以及最小且安全的修正。