HTTP 请求头中的 X-Forwarded-For(XFF)
来源:互联网 发布:实时人口迁徙大数据 编辑:程序博客网 时间:2024/06/03 01:25
在Java代码实践中,有两种方式可以从HTTP请求中获得请求者的IP地址。一个是从Remote Address中获得,另一个是从X-Forward-For中获得,但他们的安全性和使用场景各有不同。一旦用错,就可能为系统造成漏洞。因此,需要开发者对这两个参数深入的理解。
Remote Address代表的是当前HTTP请求的远程地址,即HTTP请求的源地址。HTTP协议在三次握手时使用的就是这个Remote Address地址,在发送响应报文时也是使用这个Remote Address地址。因此,如果请求者伪造Remote Address地址,他将无法收到HTTP的响应报文,此时伪造没有任何意义。这也就使得Remote Address默认具有防篡改的功能。
在一些大型网站中,来自用户的HTTP请求会经过反向代理服务器的转发,此时,服务器收到的Remote Address地址就是反向代理服务器的地址。在这样的情况下,用户的真实IP地址将被丢失,因此有了HTTP扩展头部X-Forward-For。当反向代理服务器转发用户的HTTP请求时,需要将用户的真实IP地址写入到X-Forward-For中,以便后端服务能够使用。由于X-Forward-For是可修改的,所以X-Forward-For中的地址在某种程度上不可信。
所以,在进行与安全有关的操作时,只能通过Remote Address获取用户的IP地址,不能相信任何请求头。
当然,在使用nginx等反向代理服务器的时候,是必须使用X-Forward-For来获取用户IP地址的(此时Remote Address是nginx的地址),因为此时X-Forward-For中的地址是由nginx写入的,而nginx是可信任的。不过此时要注意,要禁止web对外提供服务。
- HTTP 请求头中的 X-Forwarded-For(XFF)
- HTTP 请求头中的 X-Forwarded-For
- HTTP 请求头中的 X-Forwarded-For
- HTTP 请求头中的 X-Forwarded-For
- HTTP 请求头中的 X-Forwarded-For
- HTTP 请求头中的 X-Forwarded-For
- HTTP 请求头中的 X-Forwarded-For
- HTTP 请求头中的 X-Forwarded-For
- 一个重要的http协议头标:X-Forwarded-For
- 一个重要的http协议头标:X-Forwarded-For
- 谈谈一个重要的http协议头标:X-Forwarded-For
- X-Forwarded-For介绍
- 伪造 X-Forwarded-For
- X-Forwarded-For
- x-forwarded-for
- X-Forwarded-For
- 造 X-Forwarded-For
- 伪造 X-Forwarded-For
- IE下css常见问题总结及解决
- 饼图中扇形点击事件方法
- 添加Logstash Filter以改进集中化日志记录机制
- 导出手机log文件
- 介绍PL/SQL Developer
- HTTP 请求头中的 X-Forwarded-For(XFF)
- 历届试题 连续奇数和
- 【HTML】HTML字符实体
- Java中String、StringBuffer和StringBuilder的区别
- 计算机行业的数理化
- 开发过程遇到的中文乱码问题如何解决
- Android广播的初步认识
- 数据库读数据块过程
- json-lib 的Maven dependency