当前位置:首页 > 网站运营杂谈 > 正文

REMOTE_ADDR和XFF有什么区别?别再搞混了教你快速判断真假IP!

REMOTE_ADDR和XFF有什么区别?别再搞混了教你快速判断真假IP!

我得说,这个问题我以前也懵,老把自己绕进去。搞后端的,谁没跟IP地址打过交道?但一遇到REMOTE_ADDR和XFF,脑子立马就成一团浆糊了。我就把这个坑,彻底给大家翻...

我得说,这个问题我以前也懵,老把自己绕进去。搞后端的,谁没跟IP地址打过交道?但一遇到REMOTE_ADDRXFF,脑子立马就成一团浆糊了。我就把这个坑,彻底给大家翻出来。

第一次动手:直接访问,先摸底

最开始的时候,我专门写了一个超小的测试脚本(别问我用啥语言,能打印出数据头就行)。我就是想看看,一个请求,它到底能带回来什么东西。

  • 直接打开浏览器,输入地址,回车!
  • 脚本立即运行,把拿到的所有IP地址信息一股脑儿全打印了出来

这时候,我发现了:我没有走任何中间商,我的IP地址,稳稳当当趴在REMOTE_ADDR这个位置。这很直觉,因为服务器直接就看到了我的电脑。

第二次动手:请个中间人,看它变戏法

光看自己的IP没意思,我要看它变脸。我找了一台用来做“保护层”的服务器(也就是大家常用的那个“中间人”)。我设置好,让所有的访问请求都必须先经过它,再传到我的测试脚本那儿。

这一次,我再次用浏览器访问,脚本又一次运行

REMOTE_ADDR和XFF有什么区别?别再搞混了教你快速判断真假IP!

结果立马不一样了

  • REMOTE_ADDR它变了! 这回显示的,是那个“保护层”服务器的IP。
  • XFF:这个地方突然就冒出来一长串IP地址。最前面,那个才是我的真IP。后面那一堆,是中间服务器自己加上去的。

我当时一拍大腿,明白了。REMOTE_ADDR只管跟它“说话”的这个IP是哪个。它是个“近视眼”,只看得到最近的。可那个XFF,它就是个“记事本”,记录了一路走来,都经过了哪些IP。

实战教训:差点背锅的深夜事故

为什么要这么纠结这个?因为我吃过大亏!那是一个深夜,系统警报响得跟催命一样。流量突然暴增,服务器CPU直接飙到顶。我赶紧去看日志,一查REMOTE_ADDR,看到一个IP地址在疯狂地请求。

REMOTE_ADDR和XFF有什么区别?别再搞混了教你快速判断真假IP!

我当时脑子一热,没多想,直接就把那个REMOTE_ADDR对应的IP给封了。心想:搞定!

结果刚封完,警报又响了,流量丝毫没减!我当时冷汗都下来了,手忙脚乱,翻来覆去地找问题。我抓耳挠腮地搞了两个小时,差点被领导骂死

还是一个老伙计,他扫了一眼我的日志,淡淡地说:你看下XFF。我把目光转过去,才看到那里藏着另一个,不断变化的IP。我赶紧封禁了XFF里最前面的那个真IP。警报立马停了,世界瞬间安静。

我一下子就顿悟了。我之前封的,是那个中间保护层的IP!那个攻击者,聪明地躲在了后面,让我自己人打了自己人。我当时的感觉,就像是白白被隔离了十几天,结果老东家跑路,那种说不出的委屈和无力!就差那么一点,我辛苦维护的系统就完了!

快速判断:一句话教你定真假

有了这个血泪教训,我总结出了一个快速判断的土办法:

  • 如果你的服务器,前面没有任何代理或保护层(就是裸奔):那么直接相信REMOTE_ADDR,它就是真IP。
  • 如果你的服务器,前面挂着中间服务器(有防护):那么REMOTE_ADDR就是假的,必须看XFF里最前面的那个IP,那才是客户端的真身!

只要看到有XFF这个数据头出现,我立马知道,这后面肯定有戏。实践出真知,别再让这种小问题坑了自己!

最新文章