目前,我在Apache中的CSP配置看起来像这样:
Header set Content-Security-Policy "default-src 'self' 'unsafe-inline' https:"
我想删除unsafe-inline
指令以提高我网站的安全性,请参阅Mozilla's Observatory。
然而,每当我删除它时,我的浏览器控制台都会显示一个错误,表明内联GA无法加载......
有解决方法吗?
答案 0 :(得分:5)
很抱歉再次编辑。
中建议的解决方案New Google Analytics code into external file
对我不起作用。相反,我让它像这样工作:
我在页面中添加了一个脚本标记来加载analytics.js:
<script src="https://ssl.google-analytics.com/analytics.js" async id="ga"></script>
<script src="my_other.js" async></script>
然后在my_other.js文件中执行此操作:
window.addEventListener("load", function(){
ga('create', 'UA-********-1', 'auto');
ga('send', 'pageview');
})
然后在你的csp头文件中你必须为script-src和image-src设置一些exeption。沿着这些方向做的事情:
img-src data: 'self' *.google-analytics.com *.g.doubleclick.net;
script-src 'self' *.google-analytics.com
答案 1 :(得分:1)
作为替代方法,您可以通过向内容安全策略添加脚本哈希来允许特定的静态脚本。 (nonce适用于动态脚本):
script-src 'sha256-[MYHASH]'
添加到您的内容安全政策中。有关详细信息,请参阅MDN。 IE11上的Not supported。