防止 cURL 引荐来源网址欺骗

2022-08-30 22:25:05

我们从一位开发人员那里收到了PHP代码,该脚本具有仅依赖于 的Web统计信息脚本。使用cURL,您可以轻松伪造它,如下所示:$_SERVER['HTTP_REFERER']

curl_setopt($curl, CURLOPT_REFERER, "client website");

我正在寻找一种方法来防止它。这甚至可以由客户端网站完成,以获得更高的统计数据。我正在寻找一种方法来防止这种欺骗。这有可能吗?如果是这样,如何做到这一点?


答案 1

不,没有确定 URL 引荐来源网址的确切方法。

根据HTTP规范,是可选的。默认情况下,某些防火墙包会剥离这些值,某些客户端不会发送引用值,并且有很多方法(如您在问题中显示的方法)来修改此值。HTTP_REFERER

简而言之,该值不可信。总会有一些方法来修改这些值。这在 PHP 手册文档中提到了 _SERVER 美元强调我的):HTTP_REFERER

将用户代理引荐到当前页的页面(如果有)的地址。这由用户代理设置。并非所有用户代理都会设置此功能,有些用户代理提供修改HTTP_REFERER的功能。简而言之,它真的不可信

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


答案 2

对于这种回火,你无能为力。所有脚本都依赖于此 .即使是包括谷歌分析在内的大型网站也被这种假网站所愚弄。referrerweb-statsreferrerweb-statsreferrer

这可能是一个很好的解决方案,可以检查引用网址。我的意思是访问引荐来源网址并检查您的网址是否存在。但是,当然它耗时,缓慢,并且还需要巨大的带宽。但是,仅克服此问题是不够的。

以下是您在跟踪引荐来源网址时找不到链接的几个问题:

  • 如果引用的 URL 位于会话后面怎么办?例如,链接来自雅虎,谷歌等电子邮件或私人论坛。

  • 如果网址来自链接/点击怎么办?javascript

  • 来自 的链接仍然是链接。iframejavascript


推荐