X-Forwarded-For和X-Real-IP区分

前言

在做检测产品的时候,碰到了X-Forwarded-For和X-Real-IP这两个HTTP头部字段,这两个一直稀里糊涂的,专门针对两个字段进行了分析和理解。

代理的区分

反向代理和正向代理

企业服务器以集群方式进行部署,并通过负载均衡方式对外提供应用服务,一般负载均衡可以是软件(nginx),也可以是硬件设备,以B/S通信数据(浏览器)为例,我们通过GET方式访问企业域名服务器,负载均衡设备就会按照当前各个子服务器运行状况进行任务分发,分给空闲的服务器,从客户端来看,请求的目的地址就是服务器设备,其实,只是负载均衡设备的对外IP,这种情况,我们就称为反向代理。

站在客户端的角度,客户端 -》负载均衡(代理)-》服务器,代理是为服务器服务的,不是为客户端服务的,对客户端来说就是,“代理”就是叛逆,同理,如果客户端-》代理(受客户端控制服务)-》web服务器 ,那么站在客户端的角度,代理是为客户我服务的,那么就是正向的。

X-Forwarded-For和X-Real-IP

相同点: 以B/S架构通信为例,这两个字段都是记录客户端IP信息。

客户端(1.2.3.4) -》GET请求-》负载均衡设备或代理(3.3.3.4)-》web服务器(192.168.1.3)

负载均衡设备或代理收到HTTP GET请求后,在请求上添加一个X-Forwarded-For或X-Real-IP字段,也可以添加两个字段,对应的信息如下:
X-Forwarded-For: 1.2.3.4
X-Real-IP: 1.2.3.4
web服务器收到HTTP请求,就知道是哪个客户端IP在请求服务,比如做日志记录的时候,就需要客户端IP;如果从wireshark原始报文来看,该条数据的通信是源地址3.3.3.4与目的地址192.168.1.3之间的通信,对已服务器来说,获取客户端的真实IP就是从X-Forwarded-For字段中来提取。

区别: X-Forworded-FOR 展示的是一条完整的通信链路表,而X-Real-ip只是展示最近的一个代理的IP。

客户端(1.2.3.4) -》GET请求-》负载均衡设备或代理(3.3.3.4)-》负载均衡设备或代理2(3.3.5.4)-》web服务器(192.168.1.3)

那么HTTP请求报文头部两个字段的展示分别为:
X-FORWORD-FOR: 1.2.3.4,3.3.3.4,3.3.5.4
X-Real-ip:3.3.5.4

攻击层面的考虑

1、SQL注入
     使用该字段并且入库的话,那么写入和查询的时候一定要进行预编译处理;
2、字段的伪造
	 x-forworded-for:伪造的IP,代理口1添加的IP,代理2添加的IP
     攻击者在提交请求的时候就自带了X-Real-ip或X-Forwarded-For这两个字段,那么最终服务器在针对该字段处理的时候,需要考虑到字段第一个值是客户自己伪造的IP,提取自己代理添加的IP1.
3、脚本类攻击(XSS)
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值