代码之家  ›  专栏  ›  技术社区  ›  Buzut

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

  •  3
  • Buzut  · 技术社区  · 8 年前

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

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

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

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

    2 回复  |  直到 8 年前
        1
  •  9
  •   Community CDub    8 年前

    很抱歉再次编辑。中建议的解决方案

    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>
    

    window.addEventListener("load", function(){
       ga('create', 'UA-********-1', 'auto');
       ga('send', 'pageview');
    })
    

    然后,在csp头中,您必须设置一些exception来脚本src和imagesrc。沿着这些路线:

    img-src data: 'self' *.google-analytics.com *.g.doubleclick.net;
    script-src 'self' *.google-analytics.com
    
        2
  •  2
  •   Brian    7 年前

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

    1. 散列脚本(例如,使用sha256)。请务必包括空格/大写。不要包括脚本标记。
    2. script-src 'sha256-[MYHASH]'

    看见 MDN 了解详细信息。 Not supported IE11上。