检测url是否从页面中命中的最佳选项,而不是在浏览器中复制粘贴


Best option to detect if url is hit from page rather than copy paste in browser

我需要计算从页面命中的url的命中次数,但为此,我需要检测url是从页面命中还是简单地复制粘贴。

有人能建议我在方法中选择什么吗:

    1. Using $_SERVER['HTTP_REFERER']
    2. Using sessions
    3. IP matching

$_SERVER['HTTP_REFERER']似乎是自然的选择,然而http://php.net/manual/en/reserved.variables.server.php有一些有趣的东西要说:

"HTTP_REFERER"引用用户代理到当前页面。这是由用户代理设置的。不是全部用户代理将对此进行设置,有些代理提供修改的能力HTTP_REFERER作为一个功能。简言之,它不能真正被信任。

一种更可靠的方法是,当点击页面时,将一些数据动态编码到URL中,比如当前的UTC日期时间。然后,服务器端检查接收到的时间戳是否在当前时间的1或2秒内。如果有复制和粘贴,要么没有时间戳,要么时间戳是错误的。

客户可能会选错时间,但现在不太可能。为了更加确定,您需要从服务器发送一个时间戳,并将其用作生成日期时间的基础。


以下评论:

同意,时间戳可能会受到网络波动的影响。用Javascript(服务器可以验证)在一次性cookie中编码一些数据(即立即过期)怎么样。你不能复制粘贴饼干!