合理的分析事件 API - 防止操纵

Plausible Analytics Events API - prevent manipulation

根据 Plausible Analytics docs,您可以向 /events/api 端点发出 POST 请求以记录页面浏览量。我是自托管的 Plausible,我很惊讶我可以简单地使用 Postman 对端点进行一些 POST 请求,并使用一些虚拟数据,并将其记录为实际的页面视图。

我检查了另一个站点(使用云版本),似乎我也可以在那里操作数据。这是正常的,还是我设置错了?人们应该如何防止对分析数据的操纵,或者这仅仅是技术的工作原理?

  1. 这与 Plausible 无关。它几乎适用于任何基于前端的分析跟踪系统。 Matomo、Adobe Analytics、Google Analytics:它们在这方面都极易受到攻击。更不用说跟踪转化以优化流量细分的第三方服务大军了。

  2. 但是: 2.1 没有人愿意破坏他人的数据。好吧,没有人足以让人们不关心它。它很少发生。 2.2 以可靠的方式破坏数据是相当困难的。您必须研究跟踪模式,获取代理,设置分布式事件泛洪,合理地随机化有机设置的每个维度。这很难。 2.3 即使你足够优秀来破坏数据,优秀的分析师和数据科学家如果不清理数据中的垃圾,也至少能够检测到攻击。 2.4 像这样的攻击比设置非常好的跟踪成本更高。因此,从商业角度来看,破坏所有竞争对手的数据代价太大。

  3. 最后,是的,您可以确保它安全。但目前价格昂贵。这里的想法是使用一种服务器端标签管理器。 Adobe Launch(现在称为标签)、Matomo、Tealium 和 GTM 都提供服务器端选项。它不仅提供了隐藏您的分析端点的机会,而且还允许您绕过广告拦截器,这些广告拦截器通常会阻止 5% 到 75% 的所有跟踪,具体取决于受众。

服务器端,然而,现在要求跟踪实施专家不仅要懂 JS 和 DOM,还要懂服务器端,还要有一些 API 技能。而服务器端 TMS 不允许您在服务器上执行通用代码,所以现在您必须准备好编写自己的后端代码。

显然,您可以忽略服务器端 TMS 并改用测量协议,直接将事件从您的服务器端点发送到跟踪端点,绕过 TMS。 TMSes 提供了价值,但服务器端 TMS 只是成为一个漂亮且有据可查的路由器。

您的跟踪方案现在如下所示:

event happened >> 
you generate a data object >> 
you encrypt it >> 
you send it to your generic endpoint >> 
the endpoint decrypts it >> 
it checks the validity of the event >> 
it builds a proper payload to send to the actual server-side TMS endpoint OR to the analytics system, using its measurement protocol >>
Done.

看看您的跟踪变得有多复杂?

如果不是跟踪端点,您仍然会刷新后端端点。仍然有可能侵入它,但现在它需要深入挖掘潜在的一堆混淆的 JS 来寻找加密逻辑。因此,您现在可能希望尽可能多地混淆您的加密代码:使用 eval 和 base64,或者 Function 构造函数来隐藏 eval。或者在后端使用一些代码完成加密。

同样,这不值得。我从来没有见过有人对这种攻击足够关心以解决所有这些麻烦,无论它看起来多么有趣。