web开发中如何准确的获取到用户的ip地址?


在web开发中,经常需要记录操作用户的实际IP地址,但是用户通过某些手段隐藏了真实的IP地址,该如何获取?

TCP/IP Web开发 http协议

不H是不对的 12 years, 5 months ago

同意 @毛杭军 的做法,网上很获取IP的代码都使用了$_SERVER['HTTP_X_FORWARDED_FOR']这个变量,这样是有很大风险的。原因就要从此变量的来源说起:此变量是通过HTTP协议的头信息的X_FORWARDED_FOR字段由客户端发送给服务端的,所以这个变量的值用户是可能随意篡改的。

浏览器中篡改方法:
使用火狐浏览器,下载一个叫Modify Headers,添加如下规则
Action:Modify
Name: X_FORWARDED_FOR
Value: 8.8.8.8
然后去访问通过使用HTTP_X_FORWARDED_FOR来获得用户IP的页面

程序中篡改方法:

   
  <?php
  
$getIpUrl = "http://xxx.com/ip.php";
$ipYouWant = "8.8.8.8";
$opts = array(
'http' =>array(
'method' => 'GET',
'header' => "X_FORWARDED_FOR: $ipYouWant\r\n",
'timeout' => 3,
),
);
$context = stream_context_create($opts);
echo file_get_contents($getIpUrl,false,$context);
echo "\n";
?>

心中的迦南 answered 12 years, 5 months ago

Your Answer