HTTP请求头X-Forwarded-For,Remote_Addr

X-Forwarded-For(XXF)是HTTP请求头中的一个扩展字段,最初由Squidcache代理服务自定义,用于标识请求的源IP。随着广泛应用,它被纳入RFC7239标准。XXF值是一个列表,记录请求经过的代理节点IP。然而,依赖XXF进行IP验证可能存在安全风险,因为它依赖于代理服务的正确设置。Remote_Addr也是转发请求时的头参数,但本文主要关注XXF的详细解析和潜在安全问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP协议定义了很多头部参数,这些参数由请求的发起方和响应方设置,所以头部参数可以分为请求头和响应头,通信双方(浏览器和服务器)会去读取这些头部参数并做出对应的的动作。如果有人不按协议设置这些参数,就可以达到一些非法的目的。

X-Forwarded-For起源

xxf这个请求头,很多应用层在使用,所以这里必须要了解他的意义。X代表这是一个扩展的头参数。事实也正是如此,最开始xxf是Squid cache这个缓存代理服务软件自定义的一个头部参数,用来标识请求的源IP。后来,xxf的使用范围越来越广泛,被各种HTTP代理软件,负载均衡软件采用,HTTP标准就将xxf写入RFC 7239(Forwarded HTTP Extension)标准之中。自此,xxf就转正了。

X-Forwarded-For格式

现在的网络拓扑结构不再简单,一个请求从发起到服务端收到,往往会经历很多代理服务,这个时候,源IP的定义就不再简单,xxf规定其值是一个列表,列表元素用逗号分割,从左往右依次是HTTP请求出发到终点经历的转发节点IP。假设一个HTTP请求经历的节点是浏览器,代理1,代理2,代理3,那么xxf的值将会是,源IP,代理1的IP,代理2的IP。没错,没有代理3的IP,因为每一个节点都只能添加他的下游节点。所以你在浏览器上并不会看到请求会带着xxf,浏览器一般是源IP,他不必添加xxf。所以xxf请求头是一个服务转发使用的请求头。

X-Forwarded-For: 源IP,代理1的IP,代理2的IP

这就要求每一个代理服务按照约定追加请求他的节点的IP到请求头xxf。代理服务器都会提供这种配置功能。如果某些代理服务不按约定做,或是做错了,那么xxf就会失去了他应有的语义。如果服务方通过获取xxf中IP来校验是否是允许请求的白名单,这就是一个漏洞,因为xxf只是一个展示参数,完全依赖代理服务的自觉性,所以依赖xxf做IP检验的安全系数并不高。

Remote_Addr

ra也是一个转发请求时定义的请求头参数,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值