REMOTE_ADDR、HTTP_X_FORWARDED_FOR 获取 IP 地址的区别详解

作者:vkvi 来源:千一网络(原创) 日期:2010-12-25

REMOTE_ADDR 是离服务器“最近”的 IP。

  • 没有使用代理时,也就是客户端 IP。
  • 使用一层代理时,也就是代理的 IP。
  • 使用多层代理时,也就是最近一个(最靠近服务器)的代理的 IP。

HTTP_X_FORWARDED_FOR 是从客户端到 REMOTE_ADDR 前一个 IP。

  • 没有使用代理时,没有值。
  • 使用一层代理时,也就是客户端 IP。
  • 使用二层代理时,也就是“客户端IP,1层代理IP”,也就是相当于 IP 路径,中间用逗号隔开,注意不包括二层代理。
  • 使用三层代理时,也就是“客户端IP,1层代理IP,2层代理”,也就是相当于 IP 路径,中间用逗号隔开,注意不包括三层代理。
  • ……

注意:HTTP_X_FORWARDED_FOR 是 HTTP 头的一部分,就像 HTTP_REFERER 一样,是可以伪造的。这就造成一种情况,并没有使用代理,我们却认为使用了代理,而忽略了 REMOTE_ADDR 对应的是真实 IP。所以如果是做安全方面的记录,最好把 REMOTE_ADDR、HTTP_X_FORWARDED_FOR 二者的值都记录下来。

相关阅读

你前面那位网友看了:BUILTIN\Administrators是什么

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
标题:必填
内容:
赞助商们
vkvi
vkvi

作者简介: vkvi,致力于 .NET Web 开发、移动开发的技术推广,在 .NET、SQL Server、Windows Server 等方面有深入研究和丰富经验,10 年间共计撰写文章 4000 余篇。 主持金融、国土、农业、电商等多个行业项目执行, 推行“技术提升生产力、人心决定成功率”的管理理论。 联系他