Google Adwords CSP script-src

时间:2017-11-09 08:58:05

标签: google-adwords content-security-policy

我想将Google Adwords转换脚本集成到我的网络应用中,因此我必须扩展我的CSP规则以允许此版本。

我遇到允许https://www.google.xx/ads/进入script-src政策的问题,因为根据地区情况,该网域似乎会发生变化。

例如,如果我在瑞士访问该页面,则允许的脚本应为https://www.google.ch/ads/,但如果我在罗马尼亚访问该页面,则允许的脚本应为https://www.google.ro/ads/等。

如何在不必列出全球所有国家和地区的情况下,允许我的政策中的所有域名?

提前帮助

P.S。:控制台堆栈跟踪

  

拒绝加载脚本' https://www.google.ro/ads/user-lists/8 ...

P.P.S:我尝试使用nonce将其列入白名单,但看起来以下脚本不能像这样列入白名单

<script nonce="random-base64">
  window.dataLayer = window.dataLayer || [];
  var gtag = function gtag(){ // <---- There, CSP problem
    dataLayer.push(arguments);
  };
  gtag('js', new Date());

  gtag('config', 'SOMETHING');
</script>

P.P.P.S。:与img-src btw相同的问题。 Google Adwords CSP (content security policy) img-src

1 个答案:

答案 0 :(得分:2)

  

如何在不必列出全球所有国家和地区的情况下,允许我的政策中的所有域名?

你没有。没有TLD级别的白名单;并且有充分的理由。您不可能保证具有相同主域的不同TLD是同一个实体,因此通配符没有意义。

使用谷歌Adsense我也有这个问题,基本上你唯一的选择是过多的白名单(手动列出每个可能的域名,并希望他们不添加新的域名),一个更加过度的全球白名单(这是非常不推荐),或者只是列出最常见的原产国并接受一些地理位置将被排除在外。

第三种选择通常是最好的,我使用adsense而不是adwords,但我的大部分流量来自美国,我愿意失去来自少数特定国家/地区的广告展示次数以保持荒谬列表。

这里唯一真正的解决方案可能来自Google:他们不得不停止提供来自不同TLD的资源(这是IMO,在所有情况下都是一种可怕的做法,因为HREF LANG标签无论如何都是如此)。令人惊讶的谷歌甚至在2018年仍然这样做,CSP是一个中等规模的交易,但我们在这里。

至于img-src,只需使用https: IMO即可。如果您正在处理不可预测的第三方域集,那么过度加载图像是可以的。 CSP旨在阻止危险内容。 img-src是一个非常低风险的因素,几乎不得不与第二次利用混合在一起造成真正的伤害。