没有不安全内联的内容安全政策和Google Analytics?

时间:2016-08-27 11:12:58

标签: google-analytics content-security-policy

目前,我在Apache中的CSP配置看起来像这样:

Header set Content-Security-Policy "default-src 'self' 'unsafe-inline' https:"

我想删除unsafe-inline指令以提高我网站的安全性,请参阅Mozilla's Observatory

然而,每当我删除它时,我的浏览器控制台都会显示一个错误,表明内联GA无法加载......

有解决方法吗?

2 个答案:

答案 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适用于动态脚本):

  1. 哈希你的脚本(例如,使用sha256)。包括空白/大写。不要包含脚本标记。
  2. script-src 'sha256-[MYHASH]'添加到您的内容安全政策中。
  3. 有关详细信息,请参阅MDN。 IE11上的Not supported