Каковы возможные возвращаемые значения для $ _SERVER ['REMOTE_ADDR'] ;? - PullRequest
2 голосов
/ 06 октября 2009

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

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

Ответы [ 3 ]

3 голосов
/ 06 октября 2009

Согласно онлайн-документации PHP, должен быть возвращен только IP-адрес.

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

« 'REMOTE_ADDR':

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

0 голосов
/ 25 декабря 2012

Значением может быть адрес 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-адресов может иметь смысл в зависимости от того, что вы хотите делать с данными, но использование их как (часть) формы контроля доступа может вызвать больше проблем, чем стоит.

0 голосов
/ 06 октября 2009

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

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

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

...