$_SERVER['REMOTE_ADDR'] 安全吗?

问题描述 投票:0回答:2

我正在开发一个部分依赖于 $_SERVER['REMOTE_ADDR'] 的 API 项目(大约 50%)。

我的API首先检查客户端的IP,然后检查令牌,我想知道我是否应该担心从这个全局变量获取这个IP。

客户可以如何“伪造”这个吗?

我知道VPN可以伪装IP,但这不是问题,因为他无论如何都无法访问。

php api http ip
2个回答
2
投票

由于 TCP/IP 的三向握手 -

$_SERVER['REMOTE_ADDR']
无法被欺骗。 (但是)不能保证这是最终用户的 IP 地址。他可能使用代理或 VPN。您可以通过
$_SERVER['REMOTE_ADDR']
保证直接连接到您的机器具有这个确切的IP并且是真实的。


0
投票

我觉得人们误解了,或者也许我被误解了。安全和不安全答案的混合。手头的问题更重要的是:如果我有一个用户连接到我的 API,并授予他们一个身份验证令牌,只有 $_SERVER['REMOTE_ADDR'] 与生成令牌时相同,才可以访问该令牌是否安全?

我也有这个问题,但我觉得根据阅读的信息我可以自信地说,这样使用是安全的。用户是否位于代理后面并不重要,重要的是请求访问的同一用户将是唯一能够访问 API 的用户,因为身份验证令牌将与远程地址绑定。在这种情况下无法欺骗这一点。

但是,两个用户很可能使用相同的代理服务器,因此使用相同的远程地址,但在我看来,被恶意使用的可能性非常低。

© www.soinside.com 2019 - 2024. All rights reserved.