【问题标题】:Securely Keeping Track of Page Views in Meteor在 Meteor 中安全地跟踪页面浏览量
【发布时间】:2014-06-17 05:37:09
【问题描述】:

我想在 Meteor 中进行页面浏览。

问题是 Meteor 路由是客户端的,我似乎无法找到一种方法来计算每次查看页面时的次数。

我可以做一些简单的事情,比如每次有人访问一个页面时调用一个方法,但显然这并不安全。 一种选择是简单地让它不安全并使其只能每 15 分钟左右浏览一次页面,或者跟踪他们的 user_id。跟踪 user_id 的问题在于,为每个访问的页面存储每个人的 id 似乎需要大量资源。

如何在 Meteor 中安全地跟踪页面浏览量?

【问题讨论】:

    标签: meteor iron-router pageviews


    【解决方案1】:

    “不安全”很容易被欺骗?只需在路由定义中使用 Iron Router 的 onBeforeAction

    this.route('viewPage', {
      path: '/viewPage/:_id',
      onBeforeAction: function() {
        // Put your code for tracking pageviews here
      }
    });
    

    如果不先运行onBeforeAction 函数,就无法查看页面;这就是为什么应用程序通常会在此处检查用户是否已登录(如果已登录,则呈现路由;否则,呈现登录页面)。参见文档:https://github.com/EventedMind/iron-router/blob/dev/DOCS.md#before-and-after-hooks

    如果“安全”是指加密,请按照 Meteor 文档实施用户帐户和 HTTPS。

    【讨论】:

    • 问题是,如果我把代码放在 onBeforeAction 中(一些简单的 Meteor.call()),那么有人可以找到该方法并简单地重复调用该方法来搞乱我的页面浏览量。我的想法是我想跟踪趋势页面和诸如此类的东西,而 Iron Router 中的一个简单方法调用将允许某人轻松更改趋势。
    • 您在客户端放置的任何代码仍需要在服务器端进行验证;例如,如果未在服务器上验证“登录”检查,则该检查非常漏洞。就像您说的那样,您可以使用 Meteor.call,但在计算页面浏览量之前,请在服务器端检查是否存在欺骗行为。例如,让呼叫发送页面 ID 和该用户的 ID,并在服务器端检查该用户在过去一小时(或其他任何时间)内查看的页面不超过 60 个,并且还没有查看当前页面;然后才增加该页面的计数器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多