Google Adwords CSP 脚本-src

Posted

技术标签:

【中文标题】Google Adwords CSP 脚本-src【英文标题】:Google Adwords CSP script-src 【发布时间】:2017-11-09 08:58:05 【问题描述】:

我想将 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】:

如何在我的策略中允许所有域,而不必列出世界上的所有国家和地区?

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

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

第三个选项通常是最好的,我使用的是 adense 而不是 adwords,但我的大部分流量来自美国,我愿意失去来自几个点击率低的特定国家的广告展示次数,以免保持荒谬列表。

这里唯一真正的解决方案可以来自 Google:他们必须停止提供来自不同 TLD 的资源(这是,IMO,在所有情况下都是一种糟糕的做法,因为无论如何 HREF LANG 标签都是一个东西)。 Google 甚至在 2018 年仍然在做这件事有点惊讶,因为 CSP 是一个相当大的交易,但我们到了。

至于img-src 只需使用https: IMO。如果您正在处理不可预测的第三方域集,则可以过分急切地加载图像。 CSP 旨在阻止危险内容。 img-src 是一个相当低的风险因素,几乎必须与第二个漏洞混合使用才能造成真正的伤害。

【讨论】:

以上是关于Google Adwords CSP 脚本-src的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Apps 脚本中使用 Adwords API (MccApp)

在 Google Adwords 脚本中加载外部 JS 文件

Google AdWords AdGroup API 脚本中的多个标签名称

将 Google Adwords 脚本添加到 Vaadin 应用程序

使用 AdWords 脚本,如何将 Merchant Center 中的 Feed 替换为 Google Drive 中的 .txt 文件?

在 Google AdWords 中创建可重用函数