首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止cURL推荐者欺骗

防止cURL推荐者欺骗
EN

Stack Overflow用户
提问于 2014-02-16 05:13:02
回答 2查看 3.8K关注 0票数 18

我们收到了一个开发人员的PHP代码,它的web统计脚本完全依赖于$_SERVER['HTTP_REFERER']。使用cURL,您可以很容易地伪造它,如下所示:

代码语言:javascript
复制
curl_setopt($curl, CURLOPT_REFERER, "client website");

我在寻找一种方法来阻止它。这甚至可以通过客户网站来实现,以获得更高的统计数据。我在找一种方法来防止这种欺骗。这有可能吗?如果是的话,怎样才能做到呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-16 05:15:31

不,没有确定URL引用者的确切方法。

根据HTTP规范HTTP_REFERER是可选的。一些防火墙包在默认情况下去掉了这些,一些客户端不发送引用值,并且有许多方法(如您在问题中所展示的)来修改这个值。

简而言之,不能信任HTTP_REFERER值。总会有一些方法来修改这些值。在$_SERVER (mine)中提到了这一点:

将用户代理转到当前页的页(如果有的话)的地址。这是由用户代理设置的。并不是所有的用户代理都会设置它,有些代理还提供了将HTTP_REFERER作为一个特性进行修改的能力。简而言之,不能真正被信任。

要回答您的问题:不,没有办法防止更改HTTP_REFERER值。我建议您在使用它之前仔细检查它的值(可选地,将htmlspecialchars()应用于它以防止注入),或者根本不使用它。不幸的是,这是一个“要么拿要么回家”的交易。

票数 11
EN

Stack Overflow用户

发布于 2014-02-22 14:56:03

对于这种referrer回火,你无能为力。所有的web-stats脚本都依赖于这个referrer。甚至包括google分析在内的大型web-stats网站也被这个假冒的referrer愚弄了。

可以是,这是一个很好的解决方案,可以检查referrer。我的意思是访问推荐人并检查你的网址是否存在。但当然,它的时间消耗,缓慢,也需要一个巨大的带宽以及。然而,仅仅解决这个问题是不够的。

这里有几个问题,当您跟踪referrer时,您将找不到链接:

  • 如果被推荐的url在会话后面,该怎么办?例如,链接来自雅虎( yahoo )、谷歌( google )等电子邮件,或者来自私人论坛。
  • 如果url来自javascript链接/单击怎么办?
  • 尽管如此,来自iframe的链接还是javascript链接。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21807604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档