PHP-php 如何验证ip是否真实性
php是否能真实验证客户端获取的ip是真实性的!比如有个60.28.10.199 这样的ip,检验出是否使用程序hash算法拼出的ip。
大伙给点建议。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
php是否能真实验证客户端获取的ip是真实性的!比如有个60.28.10.199 这样的ip,检验出是否使用程序hash算法拼出的ip。
大伙给点建议。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
我在网上看到有关可以验证IP地址属于国内还是国外的,不知道这个是否可以对你有用处。也添加以下地址吧,http://www.poluoluo.com/jzxy/201004/82387.html
理论上,一般情况下$_SERVER['REMOTE_ADDR']就是用户的真实IP,也很难进行伪造。
不过也有例外,我就碰到了,通过$_SERVER['REMOTE_ADDR']取到的时负载均衡机器的IP,用户的IP无法在WEB SERVER上通过PHP获到。
另外IP真实性跟IP格式是否对应该是二码事。
个人理解
http 协议是一个tcp协议。需要3次握手。如果IP是伪装到TCP头的(如 synflood),那么TCP连接就无法建立,http无法完成,PHP就不会执行。所以认为PHP应该是可以获得到真实IP的
PHP在获取用户IP地址的方式都是从客户端发送的header头信息中获取得到的,所以这就依赖于客户端所发送的header头信息,这个IP地址就是PHP认为是真实的客户端地址,但只要是客户端发送的信息都是可以伪造的,由于PHP是服务端语言,无法获取客户端的任何信息,所以想要通过PHP来获取客户端的真实IP地址目前没有好的解决方案。
不要太过于依赖客户端发送的HTTP请求,php的$_SERVER['REMOTE_ADDR']等获得IP的方式都是从网络包中的IP层获得的。这些包都是可以进行伪造的,比如:
1.WindowsXPsp2以下的版本可以修改Raw包的源IP地址。
2.在内核层合成数据包,不经过操作系统协议栈发送。
3.通过跳板(代理)连接。