ios - 内容安全策略破坏了 iOS 客户端的站点

标签 ios content-security-policy

我最近开始在现有网站上使用 CSP header ,它似乎适用于大多数用户,但我现在收到有关该网站无法加载 iOS(Safari 和 Chrome)的报告,并且还可以确认我的古老的 iPad 也无法加载网站。

“violated-directive”被报告为:

"script-src 'self' 'nonce-sh7cn3n6shh36sa1' cdn.jsdelivr.net ..other uris

即非常标准。

我环顾四周,发现了类似问题报告的报告with iframesweb sockets但我的网站不使用其中任何一个,它的标准 HTML + Javascript。

整个 CSP 是:

Header set Content-Security-Policy-Report-Only "default-src 'self'; \
   script-src 'self' 'nonce-sh7cn3n6shh36sa1' cdn.jsdelivr.net \
              oss.maxcdn.com \
              ajax.googleapis.com \
              cdnjs.cloudflare.com \
              www.google-analytics.com;  \
   style-src 'self' 'unsafe-inline' \
              cdn.jsdelivr.net \
              cdnjs.cloudflare.com \
              maxcdn.bootstrapcdn.com; \
   font-src   'self' maxcdn.bootstrapcdn.com; \
   img-src    'self' data: www.google-analytics.com www.paypalobjects.com; \

此处的最佳做法是什么?有什么方法可以确保 CSP 与所有浏览器和操作系统兼容(比如安全子集?)。

我想使用它,但显然不知道可以使用什么是相当有问题的。需要“W3C CSP 兼容性测试”或类似的...

最佳答案

那是因为你的 source expressions缺少方案:Safari 需要它们。
至于 Chrome,与 iOS 上的所有浏览器一样,它只是使用 Safari 引擎的包装器。

关于ios - 内容安全策略破坏了 iOS 客户端的站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42018734/

相关文章:

security - 带有 Paypal 按钮的内容安全策略

http - 内容安全策略不起作用

javascript - 在 Electron 应用程序中定义 CSP HTTP header

ios - 如何相对于图像在背景图像上定位 UI 元素

ios - 如何调试 NSZombies 和内存泄漏?

ios - 使用RxSwift时如何显示和从ViewController中的API错误中恢复

javascript - 拒绝执行内联脚本,因为它违反了以下 CSP,Chrome 扩展

cocoa-touch - 从 Keyboard AccessoryView 按钮中退出FirstResponder

iphone - 使用 AVPlayer 播放视频

content-security-policy - 如何使用 CSP 在 JS 中包含服务器变量?