Mozilla Observatory无法解析CSP致托管WP站点评分降至B,求助排查
问题解答
核心结论
是的,缺少nonce/哈希值的strict-dynamic配置就是导致Mozilla Observatory判定CSP无法解析的直接原因。
原因拆解
strict-dynamic的核心逻辑是信任由已验证脚本加载的后续脚本,但它必须搭配至少一个「信任锚点」——也就是nonce(随机值)或哈希值,用来标记页面中初始的可信脚本。没有这个锚点,strict-dynamic就失去了生效的基础,Mozilla Observatory会判定整个CSP存在语法或逻辑错误,进而标记为无法解析并扣分。- securityheaders.com的评分规则和Mozilla Observatory不一样,它更侧重CSP是否存在、关键防护指令是否覆盖,对
strict-dynamic的锚点要求没那么严格,所以依然能给出A+评分。
修复方向
要解决这个问题,你需要给script-src补充nonce或哈希:
- Nonce方案:每次请求生成一个随机字符串(格式如
nonce-xxxxxx),在HTTP头的CSP里声明这个nonce,同时给页面内的初始<script>标签加上nonce="对应随机值"属性,标记该脚本为可信锚点。 - 哈希方案:计算页面内初始内联脚本的SHA256/SHA384/SHA512哈希值,把
'sha256-xxxxxx'这类格式的哈希值添加到script-src指令中,作为可信锚点。
内容的提问来源于stack exchange,提问作者Asafomba
相关产品推荐
相关产品推荐

