首页 > 解决方案 > Safari CSP 忽略 nonce 和 unsafe-inline

问题描述

我正在进一步锁定我们的 CSP 并应用基于 CSP3 nonce 的方法。在除 Safari 之外的所有浏览器中一切正常:

带有 nonce 和以下 CSP 的示例内联脚本(修剪以删除我们允许的一些 URL - 我也检查了 Nonce 匹配项):

content-security-policy-report-only: script-src 'self' 'unsafe-inline' https: 'strict-dynamic' 'nonce-xxxx'; upgrade-insecure-requests; default-src 'self' gap: blob:; style-src 'self' 'unsafe-inline'; base-uri 'none'; report-uri https://xxx.report-uri.com/r/d/csp/reportOnly

Safari 的错误: Safari 错误

我正在 OSx 上的 Safari 11 上进行测试,但根据我们的测试报告,问题出现在 Safari 12 上。

任何帮助表示赞赏。

标签: safaricontent-security-policy

解决方案


好的,我解决了这个问题:

根据我的经验和这里的测试:您不能同时使用 Safari 执行强制和仅报告 CSP,它似乎将它们之间的策略混合在一起并报告非违规项目的违规行为。

删除 CSP 指令之一并仅发送报告或强制执行,它将开始按预期工作。


推荐阅读