将$ _SERVER ['REMOTE_ADDR']设置为伪造的IP地址

时间:2012-10-03 00:54:27

标签: php ip-address

我正在调解从客户端A到服务器B的请求。客户端A可以是电话或笔记本电脑。服务器B想知道客户端A的IP地址,但他们正在$_SERVER['REMOTE_ADDR']中查找它。因为我正在点击服务器B,他们正在获得$_SERVER['REMOTE_ADDR']的“错误”值 - 他们正在获取我服务器的IP地址。我可以做些什么,以便服务器B在其端点访问$_SERVER['REMOTE_ADDR']时会看到客户端的IP地址?

2 个答案:

答案 0 :(得分:5)

这发生在PHP脚本无法覆盖的图层上。 X-Forwarded-For标头用于中继真正的客户端IP,但远程服务器必须支持这种易于欺骗的值。

$header = "X-Forwarded-For: {$_SERVER['REMOTE_ADDR']}, {$_SERVER['SERVER_ADDR']}";
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array($header));

答案 1 :(得分:0)

编辑:先前的答案是完美的。这仅适用于您自己的开发人员干扰客户统计数据的情况。

如果缺少更多信息,在最基本的级别,您应该删除自己的“开发者IP”,这样您就不会包含在任何统计信息/数据/日志中......

您的IP可能与相关服务器不同:

<?php 

$dev_ip = '217.12.14.14' // your dev IP address

if ($_SERVER['REMOTE_ADDR'] == $dev_ip){
    // do nothing
} else {
    // do|show|log something
}

这不考虑动态IP地址分配(而不是静态IP)。动态IP通常由ISP分配,这会导致进一步的问题。