【发布时间】:2017-11-05 07:20:42
【问题描述】:
http_x_forwarded_for 安全吗?
在请求中,是否可以用fake ip修改http_x_forwarded_for?
黑客能做到吗?
【问题讨论】:
http_x_forwarded_for 安全吗?
在请求中,是否可以用fake ip修改http_x_forwarded_for?
黑客能做到吗?
【问题讨论】:
is http_x_forwarded_for safe?
这取决于您所依赖的代理服务器。代理服务器可以完全控制此标头,它可以设置标头中的任何值。因此,如果您可以控制代理,则可以信任该属性并确认其正确信息。我过去曾成功地使用它通过受信任的代理服务器设置读取客户端 IP 地址。
is it able to modify the http_x_forwarded_for with fake ip?
Can hackers do that?
如果您正在讨论在包含多个代理服务器的网络中的特定跃点处修改请求,然后再到达服务器,那么是的,这是可能的。因此,这取决于您的代理设置如何控制它。如果它通过拦截转发的代理请求来更改网络隧道上的标头,IMO 可能是可能的,但可以使用适当的握手协议来避免。
【讨论】:
由于 IP 网络的工作方式,无法知道连接到服务器的客户端的实际 IP 地址。这个问题甚至没有意义。如果在网络上使用 NAT,您希望将哪个 IP 视为客户端 IP、NATed 网络上的内部(本地)IP,还是第一个公共 IP?如果整个互联网提供商公司都在 nat 后面使用客户端网络(尽管这种情况越来越不常见),您将从后者中获得什么?
您需要承认,在 IP 网络中,流量会通过许多节点,其中一些节点可能会更改请求的表面 IP 地址。这些包括 NAT 服务器和不同类型的代理,您无法在数据包到达您的服务器之前知道发生了什么。
同样在 HTTP 中,任何请求标头都可以伪造。这包括您喜欢的语言中以SERVER_ 开头的任何变量。这些是不可信的,用户可以发送他想要的任何东西。
唯一的例外是实际明显的客户端 IP,它更难伪造,但只会为您提供最后一跳(最后一个代理或最后一个 nat 服务器)。
而且大多数时候,如果您需要准确地知道客户端 IP,那么 elae 在逻辑上是错误的。例如,您必须接受客户端 IP 绝不是用户(人)的标识符。
【讨论】: