我有内容安全政策:
default-src 'none';
style-src 'self';
script-src 'self' https://www.google-analytics.com;
img-src 'self' https://www.google-analytics.com;
connect-src 'self';
在我的页面上,我已将内联 GA 代码放入异步脚本中:
<script src="/javascript/ga.js" async></script>
这会导致 CSP 错误:
Refused to load the script 'data:application/javascript;base64,KGZ1bmN0aW9uKCkgewoJLy8gaHR0cHM6Ly9kZXZl…07Cgl9OwoJZ2EucmVtb3ZlID0gbm9vcGZuOwoJd2luZG93W2dhTmFtZV0gPSBnYTsKfSkoKTs=' because it violates the following Content Security Policy directive: "script-src 'self' https://www.google-analytics.com".
有没有办法从 JS 文件提供这个脚本,如果没有,我需要如何更改 CSP?
最佳答案
Google Analytics 与 CSP 兼容。 base64 编码的 data:
blob OP 看到的是由 uBlock Origin 扩展注入(inject)的。要验证,禁用它/尝试隐身。 IIRC,这是由于扩展中的“实验性/未中断”设置。
请抵制白名单的诱惑data:
在script-src
.这将使该策略对 XSS 缓解完全无用,因为攻击者可以注入(inject) <script src="data:text/javascript,alert(1)"></script>
。执行 Javascript。
关于javascript - 谷歌分析内容安全政策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41395591/