我们收到了一个开发人员的PHP代码,它的web统计脚本完全依赖于$_SERVER['HTTP_REFERER']。使用cURL,您可以很容易地伪造它,如下所示:
curl_setopt($curl, CURLOPT_REFERER, "client website");我在寻找一种方法来阻止它。这甚至可以通过客户网站来实现,以获得更高的统计数据。我在找一种方法来防止这种欺骗。这有可能吗?如果是的话,怎样才能做到呢?
发布于 2014-02-16 05:15:31
不,没有确定URL引用者的确切方法。
根据HTTP规范,HTTP_REFERER是可选的。一些防火墙包在默认情况下去掉了这些,一些客户端不发送引用值,并且有许多方法(如您在问题中所展示的)来修改这个值。
简而言之,不能信任HTTP_REFERER值。总会有一些方法来修改这些值。在$_SERVER (mine)中提到了这一点:
将用户代理转到当前页的页(如果有的话)的地址。这是由用户代理设置的。并不是所有的用户代理都会设置它,有些代理还提供了将HTTP_REFERER作为一个特性进行修改的能力。简而言之,不能真正被信任。
要回答您的问题:不,没有办法防止更改HTTP_REFERER值。我建议您在使用它之前仔细检查它的值(可选地,将htmlspecialchars()应用于它以防止注入),或者根本不使用它。不幸的是,这是一个“要么拿要么回家”的交易。
发布于 2014-02-22 14:56:03
对于这种referrer回火,你无能为力。所有的web-stats脚本都依赖于这个referrer。甚至包括google分析在内的大型web-stats网站也被这个假冒的referrer愚弄了。
可以是,这是一个很好的解决方案,可以检查referrer。我的意思是访问推荐人并检查你的网址是否存在。但当然,它的时间消耗,缓慢,也需要一个巨大的带宽以及。然而,仅仅解决这个问题是不够的。
这里有几个问题,当您跟踪referrer时,您将找不到链接:
javascript链接/单击怎么办?iframe的链接还是javascript链接。https://stackoverflow.com/questions/21807604
复制相似问题