没有不安全内联的内容安全策略和 Google 分析?

Content Security Policy and Google Analytics without unsafe-inline?

目前,我在 Apache 中的 CSP 配置如下所示:

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

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

然而,每当我删除它时,我的浏览器控制台都会显示一条错误消息,指出内联 GA 无法加载…

有解决办法吗?

抱歉再次编辑。

中提出的解决方案

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 header 中,您必须将一些例外设置为 script-src 和 image-src。沿着这些线的东西:

img-src data: 'self' *.google-analytics.com *.g.doubleclick.net;
script-src 'self' *.google-analytics.com

作为替代方法 work-around,您可以通过将脚本的哈希值添加到您的内容安全策略来允许特定的静态脚本。 (随机数适用于动态脚本):

  1. 散列您的脚本(例如,使用 sha256)。包括白色 space/capitalization。不包含脚本标签。
  2. script-src 'sha256-[MYHASH]' 添加到您的内容安全策略。

请参阅 IE11 上的 MDN for details. Not supported