php curl 对IP与来源地址的伪造,伪造IP

[ 2012-06-20 16:46:47 | 作者: admin ]
字号: | |
第一篇文章,正好赶上了curl应用,之前也是做过curl的模拟登录

curl的强大也还真的不是吹出来的哦!

facebook,msn,hotmail.yahoo(因为工作需要)这些都模拟进去过

原本以为IP是不能模拟的,来源地址伪造还听说过

说这也搞笑,自己都用了curl这长时间,竞然都不了解这个哦

不扯远了

正题…

curl发出请求的文件fake_ip.php:
<?php
$ch = curl_init();
  
$url = "http://localhost/target_ip.php";
  
$header = array(
  'CLIENT-IP:58.68.44.61',
  'X-FORWARDED-FOR:58.68.44.61',
);
  
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  
$page_content = curl_exec($ch);
  
curl_close($ch);
  
echo $page_content;
  
?>



请求的目标文件target_ip.php:
<?php
echo getenv('HTTP_CLIENT_IP');
echo getenv('HTTP_X_FORWARDED_FOR');
echo getenv('REMOTE_ADDR');
?>

目标文件target_ip里面的IP打印顺序是目前很多开源系统的IP获取顺序
访问fake_ip.php,看到结果:
58.68.44.61
58.68.44.61
127.0.0.1
也就是说只有REMOTE_ADDR的值没有被伪造,在网上找了找资料这里的REMOTE_ADDR通过PHP是改不了的,如果哪位能改,请赐教.
如果非得让REMOTE_ADDR改变,那就只能用代理了,curl支持代理,用上代理后REMOTE_ADDR的值就是你的代理IP值了.
小小的总结一下:
伪造的IP,最大程度上的识别请用REMOTE_ADDR来获取客户端IP
这里说的是最大程序上的,如果伪造者拥有很多代理IP,那就没话说了

参考:http://www.onlypo.com/archives/7
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1841

这篇日志没有评论。

此日志不可发表评论。