Safari CSP 忽略随机数和不安全内联

Safari CSP ignores nonce and unsafe-inline

我正在进一步锁定我们的 CSP 并应用基于 CSP3 随机数的方法。在除 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 的错误:

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

感谢任何帮助。

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

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

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

编辑(2022 年 3 月 16 日):如果您同时具有只读和强制 CSP 策略,Safari 现在无法完全加载。自首次记录以来,webkit 错误一直完全闲置,因此我们必须删除只读 CSP 才能让 Safari 正常工作。

如果有人在 Webkit 上有联系,我真的很感激有人对此有所启发,尝试让 Webkit 像浏览器一样实际工作,而不是再次使用新的 IE6。