架构师_程序员_码农网

查看: 138|回复: 1

HTTP 请求头中 X-Forwarded-For 多个 IP 地址

[复制链接]
发表于 2021-5-19 09:22:43 | 显示全部楼层
X-Forwarded-For X-Forwarded-For 是一个扩展头。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP,现在已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中.

在包含多层代理的网络结构下(例如,除过Web应用防火墙还接入了CDN和DDoS高防IP),所有代理的IP地址都会被添加在x-forwarded-for字段中。这是因为每经过一次转发,代理服务器都会写入代理IP地址。

格式如下:

X-Forwarded-For: client_ip, proxy1_ip, proxy2_ip
伪造 X-Forwarded-For

我们通过 postman 添加 X-Forwarded-For 请求头,伪造如下:



QQ截图20210519091543.jpg

我是使用了阿里云的 SLB 服务,SLB -> IIS,如果我们获取第一个 ip 地址,肯定是不正确的,最后一个 ip 地址才是客户端的真实 ip 地址。

真实情况下,要根据自己的架构来获取,获取客户端真实ip地址,取决于你经过了几层代理,你相信第几层就取第几层

对于使用 nginx 做反向代理的,可以设置如下:

最外层代理服务器不信任客户端的 X-Forwarded-For 输入,直接覆盖,而不是追加。





上一篇:【转】C#/.NET 将 Stream 保存到文件的方法
下一篇:关闭Quartz .Net中的调试日志记录
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2021-5-19 09:23:53 | 显示全部楼层
asp.net mvc获取客户端IP地址
https://www.itsvse.com/thread-3312-1-1.html
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2021-6-25 19:07

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表