Profile picture for Admin

На shared хостингах вместо айпишников пользователей детектится айпи сервера.

Для обхода этой ошибки можно юзать $_SERVER['HTTP_X_REAL_IP'] или $_SERVER['X_FORWARDED_FOR'] или посмотреть в phpinfo() где детекстится верно и подставить.

 

REMOTE_ADDR — содержит IP адрес непосредственно обращающегося к нему nginx, в нашем случае 127.0.0.1

HTTP_X_FORWARDED_FOR — содержит цепочку прокси адресов и последним идёт IP непосредственного клиента обратившегося к прокси серверу. И тут рассмотрим два частных случая:

Не каскадное проксирование. В HTTP_X_FORWARDED_FOR последним или единственным IP адресом (в зависимости от того что прислал/не прислал пользователь в заголовке x-forwarded-for) будет реальный, искомый, тот самый адрес пользователя.

 Казалось бы ну в чем проблема парсить эту переменную и доставать оттуда последний элемент. Но в нашем случае настройки не были до конца корректными и весь HTTP_X_FORWARDED_FOR заменялся заголовком от браузера x-forwarded-for, а должен был приклеивать к нему реальный IP непосредственного пользователя.

 Для примера проверил на промышленном vps хостинге:

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

Каскадное проксирование. В этом случае действительно HTTP_X_FORWARDED_FOR — содержит цепочку прокси адресов и последним идёт IP непосредственного клиента обратившегося к прокси серверу. Но это не реальный IP пользователя, а всего лишь IP предыдущей прокси в списке.

Казалось бы ну в чем проблема парсить эту переменную и доставать оттуда первый элемент. Но как было показано выше на рисунке, это уж точно не корректные данные и пользователь может нас ввести в заблуждение в два счёта, прислав в x-forwarded-for первым элементом какой захочет IP

HTTP_X_REAL_IP (или любая другая переменная на которую договорятся Админ и Разраб) — содержит IP обращающегося к php пользователя или первой от сервера недоверенной прокси (что для нас равно адресу клиента)

На хабре подробный разбор данной проблемы http://habrahabr.ru/post/177113/

Добавить комментарий

Содержимое данного поля является приватным и не предназначено для показа.
  • HTML-теги не обрабатываются и показываются как обычный текст
 dP    dP   .88888.     .d888888   d88   dP   dP 
Y8. .8P d8' `8b d8' 88 88 88 88
Y8aa8P 88 88 88aaaaa88a 88 88aaa88
d8' `8b 88 db 88 88 88 88 88
88 88 Y8. Y88P 88 88 88 88
dP dP `8888PY8b 88 88 d88P dP

Введите код, изображенный в стиле ASCII-арт.