Мне нужно получить IP-адрес моих пользователей ».
Я нашел эту статью Как получить адрес клиента Ip в Laravel 5.1?
В вышеупомянутой статье используется Request::ip();
Однако этот метод возвращает IP-адрес моего сервера. Из того, что я могу понять из других источников, это происходит, когда сайт является локальным, но сайт размещен и находится на сервере.
Этот сайт доступен в режиме реального времени и онлайн, но он может ссылаться на localhost
, так как сайт может сидеть на своем собственном сервере (у меня нет опыта в конфигурации сервера, чтобы узнать, верно это или нет, просто догадка).
Когда я подключаюсь к mysql.phpmyadmin.hosting.com
базы данных, я делаю это с использованием ссылок на localhost
, а не как mysql.phpmyadmin.hosting.com
качестве узла 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, который позволяет вам применять это ограничение.