php发展

首页 » 常识 » 诊断 » php获取客户端ip以及ip伪造
TUhjnbcbe - 2022/12/1 20:48:00
北京扁平疣哪家医院好 https://m-mip.39.net/m/mipso_8813030.html

php获取客户端ip以及伪造ip伪造

获取ip使用场景比较多,如投票、获取发言者的发言所在省份、对用户ip做登记等.本文主要介绍三个php超全局变量获取客户端ip的方法以及存在的问题

声明:因为使用了cdn之后无法正常的获取客户端ip,则做此次记录,仅供学习交流,请不要用于非法用途,由此教程产生的法律问题均与本人无关!

?php//获取客户端ip,但是如果使用了代理,则获取到的是代理之后的ipecho1-.getenv("REMOTE_ADDR")./br;//获取的是客户端访问时header头部带的ip,可任意伪造echo2-.getenv("HTTP_CLIENT_IP")./br;//客户端真实IP,但是如果没有使用代理就不返回真实ipecho3-.getenv("HTTP_X_FORWARDED_FOR")./br;

0x02

1、如果客户端使用了透明代理,则getenv("REMOTE_ADDR")返回的是最后一个代理服务器IP.getenv("HTTP_X_FORWARDED_FOR")返回的是客户端代理之前的ip地址,即客户端真实ip,又浏览器head头部发送.

2、若用户使用普通匿名代理服务器则getenv("REMOTE_ADDR")=最后一个代理服务器IPgetenv("HTTP_X_FORWARDED_FOR")=代理服务器IP

3、用户使用欺骗性代理服务器,getenv("REMOTE_ADDR")=代理服务器IPgetenv("HTTP_X_FORWARDED_FOR")=随机IP

4、用户使用高匿名代理getenv("REMOTE_ADDR")=代理服务器IPgetenv("HTTP_X_FORWARDED_FOR")返回空或unkown

由于getenv("HTTP_X_FORWARDED_FOR")和getenv("HTTP_CLIENT_IP")获取的IP是由浏览器传过来的,所以可以不使用代理直接进行伪造.代码如下

?php//使用curl伪造head信息发送欺骗服务器。随机生成ip=mt_rand(1,).mt_rand(0,).mt_rand(0,).mt_rand(0,);header=array(CLIENT-IP:.ip,X-FORWARDED-FOR:.ip,);//伪造浏览器信息info=array(Mozilla/4.0(

1
查看完整版本: php获取客户端ip以及ip伪造