safari - 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
我正在 OSx 上的 Safari 11 上进行测试,但根据我们的测试报告,问题出现在 Safari 12 上。
任何帮助表示赞赏。
解决方案
好的,我解决了这个问题:
根据我的经验和这里的测试:您不能同时使用 Safari 执行强制和仅报告 CSP,它似乎将它们之间的策略混合在一起并报告非违规项目的违规行为。
删除 CSP 指令之一并仅发送报告或强制执行,它将开始按预期工作。
推荐阅读
- c - C 中不兼容的指针类型 || 无效(*)(无效*)
- reactjs - 功能组件的 props 的默认值有什么问题
- javascript - 我如何在 html 中制作超过 1 个幻灯片画廊?
- java - Java:为什么在使用 Stream+Iterator 时不会发生 ConcurrentModificationException?
- javascript - 如何在 Fetch GET 请求中插入参数?
- python - Python图形x轴反转,如何显示0到n?
- junit - 运行 JUnit 测试用例时,ANTLR4 的 TreeViewer 不工作/显示
- vue.js - 在 cent os 7.5 sh 上为 vue.js 运行构建:vue-cli-service:找不到命令
- python - 如何增加 Seaborn Line 的线条粗细
- ios - 保存在 Core Data 中的 iOS 数据无法在启动后保存