php / ajax REMOTE_ADDR установлен на IP-адрес фиктивного сетевого адаптера

сегодня я столкнулся с довольно странным поведением моего основанного на php приложения. В определенной части системы есть пользовательский интерфейс, использующий AJAX-вызовы для заполнения списков с содержимым из бэкэнд.

Теперь слушатель AJAX выполняет проверку безопасности всех входящих запросов, следя за тем, чтобы только действительные клиентские IP-адреса получали ответы. Действительный IP-адрес также хранится в бэкэнде.

Чтобы получить IP-адрес клиента, я использовал простой старый

$_SERVER['REMOTE_ADDR'] 

который работает для большинства клиентов. Сегодня я столкнулся с установкой, где remote_addr содержал IP-адрес сетевого адаптера, который был не тот, который выполнял фактическое сообщение для моего приложения.

Googling вокруг agve меня Запись записи Рошана на 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)

Связь осуществляется с помощью обычной сетевой карты. Теперь у исполнительного клиента еще несколько устройств. Адаптеры VMNet и тому подобное.

Мне интересно, как конфигурация клиента может «нарушить» веб-сервер так много …

ТИА

К

К сожалению, вам нужно передать всю информацию о IP-адресе с солью.

IP-адреса собираются во время запроса, принимая во внимание пакет и информацию о запросе. К сожалению, эта информация может быть легко подделана или даже неверна (на основе большого числа сетевых вероятностей) и не должна использоваться ни для чего более, чем для тщеславия.