2017-06-04 46 views
0

http_x_forwarded_for安全吗?
在请求中,是否可以用fake ip修改http_x_forwarded_for
黑客可以这样做吗?是http_x_forwarded_for安全检查IP

+0

[如何正确使用HTTP_X_FORWARDED_FOR?](https://stackoverflow.com/q/11452938/608639),[HTTP_CLIENT_IP和HTTP_X_FORWARDED_FOR之间的区别是什么?](https://stackoverflow.com/q/7445592/608639)等 – jww

+0

[PHP最准确/安全的方式来获取真实用户IP地址在2017]可能重复(https://stackoverflow.com/questions/44085102/php-most-accurate-safe-way-to -get实时的用户IP地址的功能于2017年) – Narf

回答

0

由于IP网络的工作方式,没有办法告诉连接到您的服务器的客户端的实际IP地址。这个问题甚至没有意义。如果在网络上使用NAT,您希望将哪个IP看作客户端IP,NATed网络上的内部(本地)IP还是第一个公共IP?当整个互联网提供商公司与客户端网络一起工作时(尽管这种情况越来越少见),你会从后者中获得什么?

您需要确认在IP网络中,流量通过许多节点,其中一些节点可能会更改请求的明显IP地址。这些包括NAT服务器和不同种类的代理服务器,在到达服务器之前无法确定数据包发生了什么。

也在HTTP中,可以伪造任何请求标头。这包括任何以您喜欢的语言开头的变量SERVER_。这些不可信,用户可以发送任何他想要的。

唯一的例外是实际明显的客户端IP,这是很难伪造,但只给你最后一跳(最后一个代理,或最后一个NAT服务器)。

此外,大多数情况下,如果您需要了解客户端IP,那么在逻辑上某些事情是错误的。例如,您必须接受客户端IP绝不是用户(个人)的标识符。

0
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,但可以使用适当的握手协议来避免。