是否可以欺骗 X-Forwarded-For 标头的最后一个代理?

信息安全 php 代理人
2021-08-14 19:33:58

我正在使用 firefox 插件https://addons.mozilla.org/en-US/firefox/addon/x-forwarded-for-header/将 X-Forwarded-For Header 欺骗为8.8.8.8.

对于以下 php 页面:

echo $_SERVER['REMOTE_ADDR']  . '<br />'; 
echo $_SERVER['HTTP_X_FORWARDED_FOR']  . '<br/>' . '<br />'; 

从实例 IP 地址访问实例时,输出如下:

72.14.255.255
8.8.8.8

从实例所在的负载均衡器地址访问实例时,输出如下:

10.173.25.72
8.8.8.8, 72.14.255.255

第一个值是我的弹性负载均衡器的本地 ip。

由于 X-Forwarded-For 标头的格式类似于http://en.wikipedia.org/wiki/X-Forwarded-For

X-Forwarded-For: client, proxy1, proxy2

假设最后一个代理不能被欺骗是否安全?

2个回答

负载均衡器设置标头的“最新”部分。

只要您信任负载均衡器(以及您的服务器和负载均衡器之间的连接)将标头设置为其 TCP 连接另一端的 IP 地址,那么您就可以相信标头中的最后一个条目是连接源的准确表示(从负载平衡器的角度来看)。

X-Forwarded-For 标头字段的值可以在客户端设置 - 这也可以称为 X-Forwarded-For 欺骗。但是,当通过代理服务器(具有低匿名级别的非精英代理服务器)发出 Web 请求时,代理服务器通过附加客户端(用户)的 IP 地址来修改 X-Forwarded-For 字段。这将导致 X-Forwarded-For 字段中有 2 个逗号分隔的 IP 地址。因此,如果需要,Web 服务器可以检测到代理服务器的使用,并且很可能检测到欺骗。以下文章使用 Python 代码示例Spoof X-Forwarded-For对此进行了解释。因此,使用精英代理(具有高匿名级别)可能有助于隐藏客户端的实际 IP 地址。