一,获取客户端IP目的
一般对于访问比较频繁的接口,服务端都会根据IP做接口访问频率限制;例如,对于给定的IP,1分钟只能调用接口100次,频率过快服务端可以针对该IP进行特殊处理,比如接口直接调用失败或加入IP黑名单列表等操作。那么,对于服务端来说,能够获取客户端真实的IP信息,是至关重要的。
二,如何伪造来源IP,欺骗服务端
#获取客户端IP的方法(可能经过多个代理) public String getIpAddr(HttpServletRequest request) { String ip = null; String ips = request.getHeader("X-Forwarded-For");//XFF头:client_ip,proxy1_ip,proxy2_ip... if(ips != null && ips.trim() != ""){ ip = ips .split("\\s*,\\s*")[0]; } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr();//remoteAddr取自网络层IP地址,是不可能伪造的 } return ip; }
X-Forwarded-For头是由代理自动设置的,如果代理不设置XXF请求头,服务器端是获取不到客户端真实IP信息的,getRemoteAddr()获取的是上一层代理的IP地址,如果客户端的访问没有经过代理,那么
getRemoteAddr()获取的才是用户的真实IP。XFF头格式:client_ip,proxy1_ip,proxy2_ip...(由代理自动设置)。
了解了服务端代码获取客户端IP的原理后可知,客户端完全可以伪造X-Forwarded-For,Proxy-Client-IP,WL-Proxy-Client-IP请求头,从而对服务端进行欺骗。可以通过程序修改请求头,也可以使用代理软件拦截请求,动态修改请求头信息。
三,相关疑惑
//一个伪造的IP能否跟服务端建立TCP连接通信? 答案:是不可能的,因为TCP是面向连接的协议,每个连接都需要经过三次握手建立连接。 client发送syn报文给服务端,服务端响应syn+ack报文,由于IP是伪造的,伪造的IP是接收不到服务端响应的syn+ack报文并返回ack的,也就是说三次握手根本不能正常完成,TCP连接是不可能建立的。本文讲的伪造IP欺骗服务端是基于服务端获取IP的原理,修改http请求头,完成的欺骗。其底层建立TCP通信链路的IP,肯定是真实存在的,要不然没办法进行通信和交互。 如果攻击者使用大量伪造IP,发送syn报文给服务器,会导致服务器半连接队列堆满,正常用户无法和服务器建立TCP连接,也就是所谓的syn flood攻击(DDOS攻击中的一种)。 //一个伪造的IP能否跟服务器以UDP协议进行通信 答案:单向通信,client只能单向的发送数据给服务端,同样由于IP是伪造的,接收不到服务返回的UDP报文。UDP是一个面向非连接的协议,建立通信前不需要经过三次握手建立连接,也没有消息确认ack,超时重传等保障数据安全传输的机制。但是如果大量伪造的IP,发送垃圾数据给服务器,会造成服务瘫痪,影响正常用户使用,也就是所谓的udp flood攻击(DDOS攻击中的一种)。
相关推荐
易语言伪造网页访问ip地址 结合HTTP扩展请求头 X-Forwarded-For 可以对客户端IP进行伪造 X-Forwarded-For 是一个 HTTP 扩展头部,用来表示HTTP请求端真实 IP,HTTP/1.1 协议并没有对它的定义,但现如今X-Forwarded-...
可以伪造出http头,以达到修改请求来源的方法。
用协议头欺骗服务器,来造成伪造IP地址的效果!
* * * * * * * IP欺骗的攻击与防御 IP欺骗的定义 IP地址欺骗是指行动产生的IP数据包伪造源IP地址,以便冒充其他系统或发件人的身份。 IP欺骗的目的:有效地隐藏攻击者的身份或者为了绕过系统认证过程。 IP欺骗的原理...
源码可以伪造ip访问多数论坛网站,用于隐藏访问痕迹,还可以刷很多论坛的论坛币(如论坛中有:推广访问加金币的)
如何伪造IP 发送HTTP请求request.zip
PHP 伪造IP 发送HTTP请求.zip
注,需要安全scapy 在centos下,请执行以下脚本安装scapy #!/usr/bin sh cd /tmp wget scapy.net unzip scapy-latest.zip cd scapy-2.* python setup.py install 需要手工启动和杀线程关闭 经测python2可用
本文实例讲述了php使用curl伪造来源ip和refer的方法。分享给大家供大家参考,具体如下: php curl伪造来源ip和来路refer实例代码1: //随机IP function Rand_IP(){ $ip2id= round(rand(600000, 2550000) / 10000);...
vb系统操作100例,读写系统文件,注册表,伪造IP等先进技术 vb系统操作100例,读写系统文件,注册表,伪造IP等先进技术 vb系统操作100例,读写系统文件,注册表,伪造IP等先进技术
DELPHI7伪造ip头 仅供学习之用 很好的一个例子
php 伪造IP和HTTP-REFERER的方法,对于采集,匿名投票等很有用处
可以实现伪造IP来源, 伪造域名, 伪造用户信息,分享给大家供大家参考。具体实现方法如下: 定义伪造用户浏览器信息HTTP_USER_AGENT 复制代码 代码如下:$binfo =array(‘Mozilla/4.0 (compatible; MSIE 8.0; Windows ...
通过检查伪造IP地址防御DDoS攻击是高速链路上防御DDoS攻击的一种有效方法。由Wang Haining 等人提出的HCF在训练完全的情况下对伪造IP地址具有较强的检测能力。但由于网络流量构成的显著变化,网络流量的动态性明显...
用c# winform的可以伪造来源本地无限提交数据,主要用于恶意提交留言,本地提交数据
$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_...
主要介绍了java 伪造http请求ip地址的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
IP地址计算器 说明:学习使用VUE+html实现快速计算IP地址,可算可用地址、网络地址、最小可用ip、最大可用ip、广播地址。 功能:包含计算可用地址、网络地址、最小可用ip、最大可用ip、广播地址。 使用:打开index....