Получить IP-адрес пользователя в laravel с помощью метода, аналогичного HTTP_X_FORWARDED_FOR

Мне нужно получить IP-адрес моих пользователей ».

Я нашел эту статью Как получить IP-адрес клиента в Laravel 5.1?

Вышеупомянутая статья использует Request::ip();

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

Этот сайт работает и онлайн, но может относиться к localhostтак как сайт может находиться на своем собственном сервере (у меня нет опыта в настройке сервера, чтобы узнать, правда это или нет, просто предположение).

Когда я подключаюсь к хосту БД, я делаю это, используя localhost ссылки, а не что-то вроде mysql.phpmyadmin.hosting.com в качестве хоста БД. Поэтому, я думаю, что Request::ip(); возвращает ip сервера, потому что на сайте как-то сидит localhost.

Однако, если я использую $ _SERVER [‘HTTP_X_FORWARDED_FOR’]; Я получил правильный IP-адрес.

Теперь к моему последнему вопросу: Это безопасно для использования? Есть ли другой способ использовать функцию Laravel, чтобы сделать этот запрос?

Из того, что я могу понять, $ _SERVER [‘HTTP_X_FORWARDED_FOR’]; может иметь дыры в безопасности, в соответствии с Как получить IP-адрес клиента в PHP?.

Могу ли я использовать $_SERVER['HTTP_X_FORWARDED_FOR']; безопасно не беспокоясь? Если нет, каким другим способом я могу пойти, чтобы безопасно получить IP-адрес пользователя?

2

Решение

Риск с X-Forwarded-For заключается в том, что пользователь может создать заголовок самостоятельно и, таким образом, передать любой IP-адрес, который он пожелает.

Решение состоит в том, чтобы доверять заголовку только тогда, когда REMOTE_ADDR это ваш доверенный прокси. Есть Laravel пакет это позволяет вам применять это ограничение.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector