【问题标题】:HTTP Spoofing?HTTP 欺骗?
【发布时间】:2013-01-29 22:54:52
【问题描述】:

我有两个问题:

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

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

非常感谢。

【问题讨论】:

    标签: php http spoofing


    【解决方案1】:

    REMOTE_ADDR 取自 TCP/IP 连接,很难进行欺骗。

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

    【讨论】:

      【解决方案2】:

      $_SERVER["REMOTE_ADDR"] : 如前所述,从 TCP 连接中的 IP 套接字获取 IP... 欺骗您的真实 IP 的方法很容易,例如使用远程服务器: 'TOR 网络'。

      示例: 如果我想向站点服务器发送请求(但我需要欺骗我的 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 更改。

      玩得开心。

      【讨论】:

      • 设置密码和端口号。我什么也得不到。页面尝试加载一段时间然后死掉。有什么想法吗?
      • 你在运行 Tor 服务器吗?确保 Tor 使用端口 9050,确保您的 php 设置为公开错误。现在再试一次,看看会发生什么。
      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-03-05
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 2011-06-27
        • 1970-01-01
        • 2010-11-13
        • 2023-03-09
        • 2019-06-05
        相关资源
        最近更新 更多