php – $_SERVER [‘REMOTE_ADDR’]是不可靠的?

前端之家收集整理的这篇文章主要介绍了php – $_SERVER [‘REMOTE_ADDR’]是不可靠的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我通常假设在 PHP脚本中,我可以测试$_SERVER [‘REMOTE_ADDR’]来建立请求发起的IP地址.但是,我开始怀疑事情是不是更复杂一些.这是场景

>我运行了一些服务器,称为A,B和C – 用户必须在其上注册
>我运行一个单独的注册服务器,称之为S,其中用户凭据等首先被验证,然后向服务器A,B和C发送完整的注册请求. C

请求退出

file_get_contents('https://url?data=value')

在服务器A,B& C我非常天真地测试$_SERVER [‘REMOTE_ADDR’]来确定请求实际上来自服务器S.令我感到惊讶的是,结果证明是可变的

> REMOTE_ADDR中的值是与注册服务器S交互的人类用户的IP地址
> REMOTE_ADDR中的值是注册服务器的IP地址,S – 我一直以来一直看到的
> REMOTE_ADDR中的值是从主机服务器S的虚拟服务器上的IP地址池中的另一个IP地址

我真的不需要执行这个额外的验证测试,所以我可以完全删除它.不过,这个结果使我感到非常惊讶,所以我很好奇,看看有没有人可以看出发生了什么.

我应该提到,我在服务器A,B& A上的Lighttpd上运行PHP 5.5 C和PHP 5.3在Apache 2上在服务器S.

REMOTE_ADDR是Apache(或任何其他Web容器)填充的变量,它包含通信另一端的终端的IP地址.

可靠吗是.

是否安全?取决于您是否使用它,认为它会向您显示发起呼叫的用户的IP地址,您错了,任何代理人将阻止该信息.

在您的情况下,发出HTTP呼叫的服务器应提供其IP地址,因此场景2应始终发生.我不知道什么时候出了什么问题,但是它的奇怪.

为了回应Dany Caissy,不要依靠HTTP_X_FORWARDED_FOR,它可以很容易地修改为HTTP头,而不是TCP / IP属性.

猜你在找的PHP相关文章