小编典典

php / ajax REMOTE_ADDR设置为假网络适配器的IP

ajax

今天,我遇到了一个基于我的php应用程序的非常奇怪的行为。在系统的某个部分中,有一个UI使用AJAX调用来用后端的内容填充列表框。

现在,AJAX侦听器会对所有传入请求执行安全检查,确保只有有效的客户端IP才能获得响应。有效的IP也存储在后端。

为了获得客户的IP,我使用了普通的

$_SERVER['REMOTE_ADDR']

适用于大多数客户。今天,我遇到了一个安装,其中remote_addr包含一个网络适配器的IP,它不是为我的应用程序执行实际通信的IP。

在Google上搜索Roshan关于topuic的Blog条目

function getRealIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))//check ip is pass from prxy
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

可悲的是问题仍然存在。

有没有人遇到过这样的问题(实际上我不认为我发现了一个完整的新问题^^),并且对我有一个解决办法?

编辑:

我上线了

  • PHP版本5.2.9-1
  • Apache / 2.2.9(Win32)

通过常规的LAN卡完成通信。现在实际的客户端还有更多的设备。VMNet适配器等。

我想知道客户端配置如何“干扰” Web服务器这么多…

TIA

ķ


阅读 234

收藏
2020-07-26

共1个答案

小编典典

不幸的是,您必须花费所有的IP信息。

在请求期间,通过考虑数据包和请求信息来收集IP地址。可悲的是,此信息很容易被欺骗甚至是不正确的(基于大量的网络概率),并且不应将其用于虚荣目的。

2020-07-26