HTTP欺骗?

时间:2013-01-29 22:54:52

标签: php http spoofing

我有两个问题:

1)在PHP中,当程序员使用“REMOTE_ADDR”变量获取Web客户端的IP地址时,该IP地址取自HTTP头中的字段?或者从哪里来?

2)如果客户端的IP地址来自HTTP标头,Web客户端是否可以“欺骗”或“更改”HTTP标头以隐藏其真实的IP地址?

非常感谢你。

3 个答案:

答案 0 :(得分:5)

REMOTE_ADDR取自TCP / IP连接,并且非常难以来欺骗。

但是,如果您的服务器位于反向代理之后,则可能不准确。在这种情况下,您必须阅读X-Forwarded-For标头,如果您的代理不总是覆盖它,那么可以轻易欺骗。

答案 1 :(得分:2)

$ _ SERVER [“REMOTE_ADDR”]:正如所说的从TCP连接中的IP套接字获取IP ...使用远程服务器很容易欺骗真实IP的方式:'TOR network'。

示例: 如果我想向站点服务器发送请求(但我需要欺骗我的IP),我使用:

<?php

$ip = '127.0.0.1';
$port = '9051';
$auth = 'PASSWORD';
$command = 'signal NEWNYM';
$fp = fsockopen($ip,$port,$error_number,$err_string,10);
if(!$fp) { echo "ERROR: $error_number : $err_string";
    return false;
          } else {
                     fwrite($fp,"AUTHENTICATE \"".$auth."\"\n");
                     $received = fread($fp,512);
                     fwrite($fp,$command."\n");
                     $received = fread($fp,512);
                 }
 fclose($fp);
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, "http://whatismyip.org"); //ipimg.php
 curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1:9050");
 curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_VERBOSE, 0);
 $response = curl_exec($ch);
 curl_close($ch);
 echo $response;
?>

此代码演示了如何使用使用SOCKS5 / SOCKS4的TOR服务欺骗我的IP 不使用我的真实IP将请求发送到另一台服务器。 我正在用whatismyip.org测试它以查看IP更改。

玩得开心。

答案 2 :(得分:0)

1)$_SERVER["REMOTE_ADDR"]直接来自TCP连接。

2)$_SERVER["REMOTE_ADDR"]只能在非SSL TCP连接上使用中间人攻击的人进行欺骗(SSL握手有一些防止IP欺骗的保护)。

2)来自HTTP标头的$_SERVER变量以HTTP_为前缀,是的,如果它们包含IP地址,则调用者可以轻易地欺骗它们。您永远不应该信任包含IP地址的$_SERVER["HTTP_*"]变量。