Google Analytics如何避免欺骗?

时间:2012-05-20 01:20:49

标签: javascript security api node.js

所以我一直试图弄清楚Google Analytics如何避免欺骗。当然,当您注册帐户时,他们会通过上传文件来验证您是否拥有该域。但是,您还会获得一些带有唯一公共代码的脚本标记(替换为下面的“XXXXXXX”)。什么阻止某人复制该代码,欺骗请求标头,并假装成为我的网站,遵循谷歌的curl身份验证策略?

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'XXXXXXX']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

我问的原因是因为我正在尝试创建一个类似的JavaScript插件,将我的网站数据暴露给参与的网站(“客户”)。我不确定在客户端服务器端没有私钥的情况下如何才能获得此功能。这种情况很糟糕,因为我真的很想“整合谷歌分析”。有什么想法吗?

2 个答案:

答案 0 :(得分:5)

听起来这个问题确实与谷歌分析无关(我真的建议你从你的问题中删除它,因为我认为它误导了大多数人并且没有让你更接近你的答案)。

您有一些数据,并且您希望仅与选定的网站共享。除了使用某种授权方案保护数据之外没有其他方法可以做到这一点,然后为选定的网站提供某种密码或密钥,让他们可以访问它,而其他没有提供密钥的人则不会访问数据。即使这种方案只有在访问数据的代码位于服务器上的私有区域(密钥/密码可以受到保护)时才有效,而不是浏览器中的javascript。

关于GA欺骗(我认为这与你的真实问题没有任何关系),我怀疑Google并不担心这一点,因为除了对GA的拒绝服务攻击之外(其中我怀疑他们确实有防护),为其他人的网站录制点击有什么好处?无论是谁,都无法访问数据,因为数据位于其他人的GA帐户中。我想有人可能会因为某人试图搞砸他们的GA数字而烦恼,但如果没有一些更有利可图的动机,可能没有很多人试图这样做。

答案 1 :(得分:3)

有趣的问题。

正如评论提示的那样,谷歌并没有真正解决这个问题。事实上,通常有条件代码/预处理功能来禁用暂存站点/开发盒上的GA,因为如果你不这样做,它会搞砸你的号码。

您可以尝试使用分析服务器,客户服务器和客户端的三种方法。它可以像这样工作:

  • 客户服务器和您的分析服务器共享密钥。当客户端访问客户的站点时,客户的服务器会告诉您的分析服务器它想要开始跟踪该特定客户。

  • 您的分析服务器为该用户生成会话ID,并将动态URL返回给客户的服务器。该URL指向您的JavaScript跟踪代码(或其加载器),并使用会话ID注入。

  • 客户的服务器将页面发送给客户端。该页面包含具有唯一会话ID的客户端跟踪代码。跟踪操作并将其发送到您的分析服务器。

  • 在分析服务器上,您会从客户端的计算机接收跟踪信息。您检查会话ID是否有效且未过期,以及IP地址是否匹配。

这应该提供额外的安全级别。不幸的是,它不会“像谷歌分析一样容易集成......”它将涉及客户的服务器端参与。对于未经客户身份验证的用户,它也不会有太大的好处,因为第三方只需访问您客户的网站即可获得有效的会话ID,然后向您的分析服务器发送一些虚假信息。但是,对于客户网站验证的客户,它可能很有用。

祝你好运!