摘要:对协议进行扩展。通过此项措施,强行将设置为客户端使客户端无法通过本文所述方式伪造。
在阅读本文前,大家要有一个概念,由于TCP需要三次握手连接,在实现正常的TCP/IP 双方通信情况下,是无法伪造来源 IP 的,也就是说,在 TCP/IP 协议中,可以伪造数据包来源 IP ,但这会让发送出去的数据包有去无回,无法实现正常的通信。
一些DDoS 攻击,它们只需要不断发送数据包,而不需要正常通信,它们就会采取这种“发射出去就不管”的行为来进行攻击。
那么在HTTP 中, “ 伪造来源 IP”, 又是如何造成的?如何防御之?
先搞明白后端应用IP获取来源
1.’REMOTE_ADDR’是远端IP,默认来自tcp连接客户端的Ip。可以说,它最准确,确定是,只会得到直接连服务器客户端IP。如果对方通过代理服务器上网,就发现。获取到的是代理服务器IP了。
如:a→b(proxy)→c ,如果c 通过’REMOTE_ADDR’ ,只能获取到b的IP,获取不到a的IP了。
这个值是无法修改的。
2.’HTTP_X_FORWARDED_FOR’,’HTTP_CLIENT_IP’ 为了能在大型网络中,获取到最原始用户IP,或者代理IP地址。对HTTp协议进行扩展。定义了实体头。
HTTP_X_FORWARDED_FOR = clientip,proxy1,proxy2其中的值通过一个 逗号+空格 把多个IP地址区分开, 最左边(client1)是最原始客户端的IP地址, 代理服务器每成功收到一个请求,就把请求来源IP地址添加到右边。
HTTP_CLIENT_IP 在高级匿名代理中,这个代表了代理服务器IP。
其实这些变量,来自http请求的:X-Forwarded-For字段,以及client-ip字段。 正常代理服务器,当然会按rfc规范来传入这些值。
但是,攻击者也可以直接构造该x-forword-for值来“伪造源IP”,并且可以传入任意格式IP.
这样结果会带来2大问题,其一,如果你设置某个页面,做IP限制。 对方可以容易修改IP不断请求该页面。 其二,这类数据你如果直接使用,将带来SQL注册,跨站攻击等漏洞。
这类问题,其实很容易出现,比如很多时候利用这个骗取大量伪装投票。那么该如何修复呢?
在代理转发及反向代理中经常使用X-Forwarded-For 字段。
X-Forwarded-For(XFF)的有效性依赖于代理服务器提供的连接原始IP地址的真实性,因此, XFF的有效使用应该保证代理服务器是可信的.
比如Nginx代理服务器,我们可以在其转发/反向代理的时候主动配置X-Forwarded-For为正确的值。
location / { proxy_pass ....; proxy_set_header X-Forwarded-For $remote_addr ; }
$remote_addr 是 nginx 的内置变量,代表了客户端真实(网络传输层) IP 。通过此项措施,强行将 X-Forwarded-For 设置为客户端 ip, 使客户端无法通过本文所述方式“伪造 IP ”。
如果最前端(与用户直接通信)代理服务器是与php fastcgi 直接通信,则需要在其上设定:
location ~ .php$ { fastcgi_pass localhost:9000; fastcgi_param HTTP_X_FORWARD_FOR $remote_addr; }
但是更常用的配置如下:
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
后台代码,通过X-Real-IP头来获取客户真实IP
参考:
http://www.cnblogs.com/chengm...
http://zhangxugg-163-com.itey...
http://blog.csdn.net/lemon_tr...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/44239.html
摘要:在有反向代理的情况下,直接使用获取到的地址是所在服务器的地址,而不是客户端的。如何防范方法一在直接对外的反向代理服务器上配置如果有多层代理,内层的配置在最外层即直接对外提供服务的使用代替上面的,可以防止伪造。 问题背景 在Web应用开发中,经常会需要获取客户端IP地址。一个典型的例子就是投票系统,为了防止刷票,需要限制每个IP地址只能投票一次。 如何获取客户端IP 在Java中,获取客...
阅读 2471·2021-11-24 09:39
阅读 3516·2019-08-30 15:53
阅读 593·2019-08-29 15:15
阅读 2902·2019-08-26 13:23
阅读 3211·2019-08-26 10:48
阅读 642·2019-08-26 10:31
阅读 747·2019-08-26 10:30
阅读 2358·2019-08-23 18:32