Google Adwords CSP(内容安全政策)img-src

2024-01-09

中包含哪些域/协议img-src是否需要 Content-Security-Policy 标头指令才能允许 Google AdWords 转化跟踪?

从测试来看,当我们打电话时google_trackConversion,看起来浏览器会创建一个带有 src 的图像,该图像遵循各个域之间的 302 重定向链...

www.googleadservices.com ->
googleads.g.doubleclick.net ->
www.google.com ->
www.google.co.uk

决赛.co.uk我看起来很可疑。当我们在英国进行测试时,我们担心从其他国家/地区拨打的跟踪电话会重定向到其他域。

为了使跟踪发挥作用,我们需要开放哪些域的完整列表?


根据评论中的要求,第一个请求的示例路径组件是:

pagead/conversion/979383382/?random=1452934690748&cv=8&fst=1452934690748&num=1&fmt=3&label=jvoMCNP4umIQ1uiA0wM&guid=ON&u_h=1080&u_w=1920&u_ah=1033&u_aw=1920&u_cd=24&u_his=18&u_tz=0&u_java=false&u_nplug=5&u_nmime=7&frm=0&url=https%3A//beta.captevate.com/payment%3Flevel%3Da00&async=1

第二次重复转换,第一个请求的路径组成部分是

pagead/conversion/979383382/?random=1452934959209&cv=8&fst=1452934959209&num=1&fmt=3&label=jvoMCNP4umIQ1uiA0wM&guid=ON&u_h=1080&u_w=1920&u_ah=1033&u_aw=1920&u_cd=24&u_his=26&u_tz=0&u_java=false&u_nplug=5&u_nmime=7&frm=0&url=https%3A//beta.captevate.com/payment%3Flevel%3Da00&async=1

我使用免费 VPN 服务从几个国家/地区(荷兰和新加坡)进行连接,但最后的重定向并未发生:最终请求www.google.com是 200。但是,我显然还没有尝试过从every国家,所以我原来的问题仍然存在。


不幸的是,解决这个问题的方法并不多。资源需要白名单(在远程资源的情况下,像这样)或内联技巧(即。nonce or sha256-...)当 CSP 处于活动状态时。但归根结底,CSP 可能仍然可以使您的站点更安全并保护大多数资源。

不过,根据您想要做什么,您仍然可以实现您的目标。

以下是一些选项:

  1. 将所有图像列入白名单。

    当然,您可以简单地放置一个"*"在你的img-src指令,但我想您已经知道这一点并且选择不这样做,因为它破坏了 CSP 对图像的保护。

  2. 通过其他方式加载图像。

    如果您所追求的只是专门锁定图像,并且说,不太关心XMLHttpRequest,你可以通过加载像素POST甚至通过<script>带有自定义标签type(使用AdWords 图片标记 https://developers.google.com/adwords-remarketing-tag/image/跟踪方法)。这利用了这样一个事实:Google 只需要浏览器完成 HTTP 请求/响应(和重定向)循环即可用于分析目的,而您并不真正关心解析或执行结果内容,无论如何,结果内容都是 1x1 透明像素。这允许您锁定您的img-src指令(如果这确实是您的目标),同时仍然允许 Google 想要使用的任何域进行重定向。

    我知道这只会解决您的问题,但如果您的主要威胁是恶意图像,它会很有用。

  3. 将所有 Google 域放入您的img-src.

    正如下面所建议的。标头长度will是一个问题(即使规范说你没问题,实施者并不总是那么慷慨),更重要的是,当 Google 更改其域列表时,你可能会遇到虚假的失败,这当然不是公开的或容易引人注目的行为(除了您的广告转化未实现之外!)。因为我想象你的工作isn't要不断更新该列表,您可能不想使用此选项。

  4. 报告几个月的失败,然后继续下去。

    因为 CSP 支持报告 URI 并且Content-Security-Policy-Report-Only变体,您可以在仅报告模式下推出它并等待报告进入。如果您已经拥有有关用户群的良好数据(并且变化不大),这可能是一个不错的选择 - 一旦您看到这些报告稳定在域列表上,将其密封在常规 CSP 标头中。或者,您可以将报告 URI 放置在最终标头上以捕获任何其他故障。当然,这种策略的缺点是,您在仅报告模式下无法获得保护,而当您切换到强制执行该策略时,失败会导致转换数据丢失,而您则需要迎头赶上。

  5. 具有反向代理的静态像素

    好的。好吧,由于上述选项并不是那么好(我承认),是时候跳出框框思考了。这里的问题是 Google 应用的 HTTP 优化技术(分片/地理固定域)与良好的安全实践(即 CSP)不一致。域名模糊的根本原因是客户的地理位置,那么为什么不自己固定呢?

假设您对自己的 HTTP 服务器有高级控制,您可以使用静态像素方法自己跟踪和代理请求,如下所示:

User ---> GET http://your-page/

User <--- <html>...
          pixel: http://your-page/pixel?some=params

User ---> http://your-page/pixel?some=params
          ---> fetch http://googleads.g.doubleclick.net/pagead/viewthroughconversion/12345/?some=params
          <--- redirect to http://google.com, or http://google.co.uk
User <--- return redirect

Using a 静态像素 https://developers.google.com/adwords-remarketing-tag/image/(如方法#2)并将您的代理放在美国或英国,应该确保源 IP 在地理上固定在那里,并且 Google 的任播前端应该将您路由到稳定的端点。如果您愿意,在用户和 Google 之间放置代理还可以让您有机会强制重写重定向。

为了简化代理设置(并添加一些性能香料),您可以选择类似的东西Fastly https://www.fastly.com/ with 起源屏蔽 https://docs.fastly.com/guides/about-fastly-services/about-fastlys-origin-shielding-features而不是自己构建它。如果您从那里添加 DoubleClick 后端和代理,则可以将来自 CDN 的原始请求固定为仅来自特定地理区域。无论哪种方式,您的用户都应该看到一组稳定的重定向,并且您可以将该 Google 域列表缩减为仅img-src 'self' *.google.com *.doubleclick.net *.googleadservices.net.

Edit:还值得注意的是 Fastly(以及越来越多的其他 CDN 提供商 https://cloud.google.com/interconnect/cdn-interconnect#providers) 直接与 Google Cloud 对等 https://www.fastly.com/blog/new-global-interconnects-between-fastly-google-cloud-platform在他们的一些存在点上,为您的代理流量提供进入 Google 网络的优化路径。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Adwords CSP(内容安全政策)img-src 的相关文章