常见漏洞验证121 条

CSP 策略有效性检查

检查 CSP 是否含 unsafe-inline/unsafe-eval、是否用通配源、是否覆盖关键页面;策略需按报告数据持续收紧。

CSP 有效性怎么看

「有 CSP 头」和「CSP 能防住跨站脚本」是两回事。判断有效性要看策略的关键指令:script-src 是否含 unsafe-inline 或 unsafe-eval、是否使用宽泛通配源、object-src 与 base-uri 是否受限。落地方式同样重要:直接上强制策略容易打断业务,稳妥做法是先以仅上报模式收集违规,再逐步收紧到强制,并覆盖全部关键页面。

基本信息

关键指令script-src 强度、通配源、object-src、base-uri、frame-ancestors
加固手段nonce 或 hash 替代 unsafe-inline;严格来源清单
上线流程仅上报模式收集违规 → 修正 → 切换强制
违规收集配置上报端点并接入日志
覆盖范围全部关键页面,含登录、支付与后台

典型使用场景

  • 安全基线核查中判断 CSP 是否具备实际防护能力
  • 为跨站脚本问题提供纵深防御建议
  • 评估策略上线的推进方式:是否已有仅上报模式的过渡
  • 排查「上了 CSP 但脚本仍能执行」的原因
  • 修复验证:确认 unsafe 指令已去除且关键页面全覆盖

检查要点

检查要点
# 1. 抓取关键页面的 CSP 头并逐项解读
curl -sI https://example.com/ | grep -i 'content-security-policy'
# 2. 标出弱指令:unsafe-inline、unsafe-eval、宽泛通配源
# 3. 核对 script-src 是否覆盖全部脚本入口(含第三方统计与广告脚本)
# 4. 检查是否配置了违规上报端点(仅上报模式的报告地址)
# 5. 建议路径:nonce 或 hash + 仅上报模式过渡,再切换到强制

策略现状与判断

现状有效性处置
script-src 含 unsafe-inline对跨站脚本缓解有限建议改用 nonce 或 hash
使用宽泛通配源外部脚本可被任意引入收敛到具体域名
object-src 与 base-uri 未限制可被跳转劫持与插件加载补充限制
关键页面未覆盖策略缺口明显统一在网关或框架层注入
存在 CSP 不等于有防护:含 unsafe-inline 的宽松策略对跨站脚本的缓解作用非常有限,判断要看指令内容而不是头部是否存在。
直接强制新策略可能导致业务中断:缺少仅上报模式的过渡,页面脚本被拦截会造成大面积功能不可用。

易错点

  • 看到有 CSP 头即判定合规:未解读指令内容,结论会被开发方直接反驳
  • 直接强制新策略导致业务中断:缺少仅上报过渡是大面积故障的常见原因
  • 忽略第三方脚本:统计、客服与广告脚本常成为难以收敛的例外
  • 只检查首页:登录与支付页的脚本加载方式不同,需要分别核查

数据来源与参考

  • W3C CSP Level 3
  • OWASP Cheat Sheet:Content Security Policy
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌