Как я могу получить реальный IP-адрес клиента PHP
, если это возможно.
Это означает, что есть прямое соединение, или через proxy
, или router
что-то еще, я всегда идентифицирую IP
реальный клиентский компьютер.
Как я могу получить реальный IP-адрес клиента PHP
, если это возможно.
Это означает, что есть прямое соединение, или через proxy
, или router
что-то еще, я всегда идентифицирую IP
реальный клиентский компьютер.
Я поделюсь скриптом PHP, который я создал в ходе исследования. Я использую его, чтобы узнать людей, которые обращаются к приложению Android, которое обращается к данным на моем сервере через URL-адрес.
Скрипт отображает следующее:
Оценки:
Это в сценарии с большим количеством опций, чем вы просите, если вы просто хотите получить IP, вы можете игнорировать другие части, такие как использование Geoplugin или получение URL-адреса и т. д.
Geoplugin — это интересный API , бесплатный ресурс для веб-мастеров, который легко предоставляет технологию геолокации...
Он служит для определения IP-адреса и для других целей, вы можете попробовать его в Интернете по ссылке.
Хорошо, теперь мы идем со сценарием. Я прокомментировал несколько вещей, так что это очень легко понять:
Код:
Результат
Часть данных записывается в файл:
Коды, приведенные в ответах, уязвимы для спуфинга , и вы должны быть осторожны при их использовании.
Простыми словами:
В ответах есть несколько заголовков (
HTTP_
), которые неизвестны, если они установлены разными прокси , и проблема в том, что с заголовками имиHTTP
можно легко манипулировать:curl --header "X-Forwarded-For: 192.168.0.2" http://example.com
То есть в целях безопасности ( например, в среде аутентификации или аналогичной ) ни одно из этих значений не должно использоваться, поскольку клиент/пользователь может изменить заголовок
X_FORWARDED_FOR
илиCLIENT_IP
любое значение, если только у вас нет доверенного обратного проксиИ вам все равно следует проверять ввод данных клиентом/пользователем , так как он может содержать опасные утверждения в заголовке
HTTP
, например:'; DROP TABLE users;--
Не быть за прокси:
REMOTE_ADDR
даст вам реальный IP -адрес , который будет самым надежным, который вы можете получить, поскольку он является исходным IP-адресом TCP -соединения и не может быть заменен путем изменения заголовкаHTTP
.Зная все это и соблюдая меры предосторожности, получить ИП можно следующим образом:
* Мы используем функцию
filter_var()
для фильтрации значений со следующими признаками:FILTER_VALIDATE_IP
FILTER_FLAG_NO_PRIV_RANGE
:FILTER_FLAG_NO_RES_RANGE
:Источники:
Исходя из вашего вопроса, попробуйте этот метод. Надеюсь, это поможет вам.