防止cURL Referrer欺骗

dem*_*ico 18 php curl spoofing

我们从开发人员那里收到了PHP代码,这些代码完全依赖于web-stats脚本$_SERVER['HTTP_REFERER'].使用cURL,您可以轻松伪造它,如下所示:

curl_setopt($curl, CURLOPT_REFERER, "client website");
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来防止它.这甚至可以由客户网站完成,以获得更高的统计数据.我正在寻找一种方法来防止这种欺骗.这有可能吗?如果是这样,怎么能实现呢?

Ama*_*ali 11

不,没有明确的方法来确定URL Referrer.

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

简而言之,HTTP_REFERER价值是不可信任的.总会有一些方法来修改这些值.这在(强调我的)PHP手册文档中$_SERVER提到:

将用户代理引用到当前页面的页面地址(如果有).这是由用户代理设置的.并非所有用户代理都会设置此功能,有些用户可以将HTTP_REFERER修改为功能.简而言之,它无法真正被信任.

回答你的问题:不,没有办法阻止HTTP_REFERER改变价值.我建议您在使用之前仔细检查该值(可选地,应用htmlspecialchars()它以防止注射)或根本不使用它.不幸的是,这是一个"接受或回家"的交易.