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

标签 php ajax

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

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

为了获取客户端的 IP,我使用了普通的旧 IP

$_SERVER['REMOTE_ADDR']

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

谷歌搜索让我很生气 Roshan's Blog entry on the topuic :

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

K

最佳答案

不幸的是,您必须对所有 IP 信息持保留态度。

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

关于php/ajax REMOTE_ADDR 设置为伪造网络适配器的 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1672827/

相关文章:

php - Ajax调用php函数

javascript - 我似乎无法发布一系列对象

javascript - 我想在 codeigniter 中使用 AJAX 重定向 Controller

php - 预定销售结束,但查看产品时可变产品似乎仍在销售 - Woocommerce

PHP 包含文件和文件系统的性能影响

php - JQuery 获取屏幕大小,php 生成图像?好方法?

javascript - 在 PHP 代码中使用 JavaScript 访问动态创建元素的值

java - 如何使用带有 EXTJS 的 Ajax HTTP GET 下载 xlsx?

php - 使用 PHP 或 Imagick 获取图像 ICC 配置文件

php - dokuwiki 中禁止使用 403,CSS 样式不起作用