Мне нужно получить 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-адрес пользователя?
Риск с X-Forwarded-For
заключается в том, что пользователь может создать заголовок самостоятельно и, таким образом, передать любой IP-адрес, который он пожелает.
Решение состоит в том, чтобы доверять заголовку только тогда, когда REMOTE_ADDR
это ваш доверенный прокси. Есть Laravel пакет это позволяет вам применять это ограничение.
Других решений пока нет …