Каковы возможные возвращаемые значения для $_SERVER['REMOTE_ADDR'];?

При написании модуля входа в систему я хочу регистрировать IP-адреса в качестве дополнительной меры для проверки того, кто на другой стороне остается тем же человеком на другой стороне.

Я использую $_SERVER['REMOTE_ADDR'] как один (из многих) способов получить IP-адрес удаленной машины. Помимо адреса IPv4 или IPv6, есть ли какие-либо другие значения, которые я должен ожидать, что это вернется?


person pxl    schedule 06.10.2009    source источник


Ответы (3)


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

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

Честно говоря, я бы просто не стал заморачиваться. Использование SSL, если вы можете, обычно является лучшим способом избежать проблем с безопасностью, подобных той, которую вы описываете. Удачи тебе с твоим проектом.

person KyleFarris    schedule 06.10.2009
comment
Эй, Кайл, спасибо за ваши комментарии. я просто пытаюсь быть тщательным, когда дело доходит до информации о пользователе и проверки надлежащих учетных данных. И учитывая такие вещи, как точки доступа Wi-Fi и другие области, где пользователя может раздражать ложное срабатывание, я хочу подумать при разработке схемы входа в систему. - person pxl; 06.10.2009
comment
Превосходно. :-) Рад быть полезным. - person KyleFarris; 06.10.2009
comment
-1, потому что нет, вы не можете легко подделать IP-адреса с TCP-соединением. Таким образом, проверка адреса по-прежнему обеспечивает некоторую безопасность. - person bortzmeyer; 29.12.2012

В соответствии с онлайн-документацией PHP должен возвращаться только IP-адрес.

http://us.php.net/manual/en/reserved.variables.server.php

«REMOTE_ADDR»:

IP-адрес, с которого пользователь просматривает текущую страницу».

person Tim    schedule 06.10.2009
comment
проблема в том, что я читал и видел случаи, когда $_SERVER['REMOTE_ADDR'] возвращает несколько адресов. быстрый поиск в Google дает эту ссылку: bigresource.com/ - person pxl; 06.10.2009

Значение может быть адресом IPv4 или IPv6. Хотя вы, вероятно, получите только канонические значения, имейте в виду, что IP-адреса могут быть записаны несколькими способами. 192.0.2.1 совпадает с 192.000.002.001, 2001:db8::1 совпадает с 2001:0db0:0000:0000:0000:0000:0000:0001 и т. д. Адреса IPv4 можно даже записывать в нотации IPv6, например ::ffff:192.0.2.1 или ::ffff:c000:0201, если веб-сервер принимает соединения IPv4 через сокеты IPv6. Я часто вижу это в системах Linux.

Регистрация IP-адресов не должна быть проблемой, если вы резервируете достаточно места. На самом деле использование IP-адресов для управления доступом в наши дни становится все более и более сложным. Поскольку в больших частях мира закончились новые адреса IPv4, вы увидите, что интернет-провайдерам приходится широко использовать NAT, чтобы продолжать подключать новых клиентов к Интернету IPv4. Эти крупномасштабные NAT будут использовать пул общедоступных IPv4-адресов, возможно, для тысяч клиентов. Один IP-адрес может использоваться многими клиентами, и один клиент может в конечном итоге использовать разные адреса из пула.

При отслеживании IPv6 IP-адрес должен принимать во внимание и другие вещи. Исходный механизм автоматической настройки IPv6 основан на использовании MAC-адреса как части адреса IPv6. Из соображений конфиденциальности большинство операционных систем теперь используют (своего рода) случайно сгенерированный идентификатор интерфейса (обычно последние 64 бита адреса) для исходящих соединений, и эти биты могут/будут меняться со временем. Некоторые операционные системы (Mac OS X) даже ведут статистику того, какой протокол быстрее — IPv4 или IPv6, и я видел, как клиенты время от времени переключались между IPv4 и IPv6.

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

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

person Community    schedule 25.12.2012