我最近开始在现有网站上使用 CSP 标头,对于大多数用户来说似乎运行良好,但我现在收到了有关该网站无法通过 iOS(Safari 和 Chrome)加载的报告,并且还可以确认我的 iPad也无法加载网站。
“违反指令”报告为:
"script-src 'self' 'nonce-sh7cn3n6shh36sa1' cdn.jsdelivr.net ..other uris
即相当标准。
我环顾四周,发现类似问题报告的报告使用 iframes 和使用网络套接字,但我的网站不使用其中任何一个,而是使用标准 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 兼容性测试”或类似测试...
那是因为你的源表达式缺乏方案:Safari需要它们。
至于 Chrome,与 iOS* 上的所有浏览器一样,它只是使用 Safari 引擎的包装器。