内容安全策略使用 iOS 客户端破坏站点

Dan*_*Dan 2 ios content-security-policy

我最近开始在现有网站上使用 CSP 标头,它似乎对大多数用户都运行良好,但我现在收到了该网站未通过 iOS(Safari 和 Chrome)加载的报告,并且还可以确认我的古老 iPad 不能加载网站。

“违反指令”报告为:

"script-src 'self' 'nonce-sh7cn3n6shh36sa1' cdn.jsdelivr.net ..other uris
Run Code Online (Sandbox Code Playgroud)

即非常标准。

我环顾四周,发现有关iframe和网络套接字的类似问题报告的报告,但我的网站不使用其中任何一个,即标准的 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; \
Run Code Online (Sandbox Code Playgroud)

这里的最佳实践是什么?有什么方法可以确保 CSP 与所有浏览器和操作系统兼容(就像一个安全的子集?)。

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

Knu*_*Knu 5

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