IP 地址 - HTTP 欺骗?

问题描述 投票:0回答:3

我有两个问题:

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

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

php http spoofing
3个回答
5
投票

REMOTE_ADDR
取自 TCP/IP 连接,并且“非常难以”进行欺骗。

如果您的服务器位于反向代理后面,则它可能不准确。在这种情况下,您必须读取

X-Forwarded-For

 标头,如果您的代理并不总是覆盖它,则该 
can 很容易被欺骗。


4
投票

$_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 变化。

玩得开心。


0
投票
1)

$_SERVER["REMOTE_ADDR"]

 直接来自 TCP 连接。 

2)

$_SERVER["REMOTE_ADDR"]

 只能在非 SSL TCP 连接上使用中间人攻击来进行欺骗(SSL 握手具有一些针对 IP 欺骗的保护措施)。

2) 来自 HTTP 标头的

$_SERVER

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

© www.soinside.com 2019 - 2024. All rights reserved.