Google Analytics 如何防止针对实体流量的虚假数据攻击?

信息安全 谷歌 欺骗
2021-08-17 09:48:04

为了在 Google Analytics 上注册“命中”,所需的清单如下:

  1. Google Analytics 的唯一 API 密钥
    • Public:可以从页面上嵌入的 JavaScript 文件中获取以进行跟踪。
  2. 似乎来自相关页面的 HTTP 请求。
    • 可以通过多种方式进行欺骗:这意味着检测并制止它已经很难到不值得了。
  3. 表示流量的 JSON 数据,采用 Google 期望的架构。

如果我的列表有误,请在此处阻止我。

如果我不是,那么在网站上欺骗流量并让某人的 Google Analytics(分析)看起来非常好,即使他们没有获得任何流量也很容易!

那么,谷歌如何防止这些攻击呢?这不会损害分析统计数据的可信度吗?

我对此感兴趣是因为另一个我仍在努力制定的问题涉及 Alice、Bob、Mary 和一些需要以某种方式安全公开的私钥。我希望谷歌可以通过尝试解决这个问题来解决这个问题。一旦我提出这个问题,我会在这里发布一个链接。

2个回答

最终将真实数据与虚假数据区分开来几乎是不可能的,但除了您列出的措施之外,谷歌还采用了黑名单。这个问题很可能永远不会消失。

查看此问题以获取更多信息。 https://stackoverflow.com/questions/2418609/how-does-google-analytics-prevent-traffic-spoofing#2419115

如前所述,没有真正的方法不允许发送虚假数据。但是,如果您可以访问两个服务器(被跟踪的网站 + 跟踪服务),则可以使其“防弹”。

在向用户显示页面之前,从被跟踪的网站中生成一个随机散列到他的会话中,并将散列与会话 ID 一起显示为纯 JS 变量,然后将其与通常的跟踪对象一起发送到跟踪服务。

反过来,跟踪服务在将接收到的对象写入数据库之前,应该使用会话 ID 向网站发送一个附加请求,询问当前其中的随机哈希是什么?如果哈希匹配,这是一个有效的请求,可以插入到数据库中。

这里的缺点是分析服务预计会有很多请求,并且通过此验证,它们会加倍。如果两个服务都位于同一服务器上或具有保存会话文件的共享目录,也可以避免这种情况。

如果不是这种情况,为了减少验证请求的加载和时间,在被跟踪的网站上,创建一个非常小的 .php 文件,它只会接收带有会话 ID 和随机哈希的请求,打开会话文件/存储并进行验证。为此,不需要任何数据库连接或其他任何东西。

更新: 此外,当为每个页面生成和替换时,会在会话中加载一个新的随机散列,如果用户打开多个选项卡,则只有最后一个选项卡的散列有效。为了解决这个问题,您可以在一定时间内重复使用相同的哈希,或者更好的是,在会话中创建一个有效哈希池(列表)(即最多 3-4 个),这将允许最多 3-4 个跟踪打开的选项卡在平行下。