Как можно в PHP-скрипте получить на 100% достоверную информацию об IP веб-клиента?
В смежном топике написали, что подделать можно все, но, исходя из логики, я думаю, что IP enter point подделать нельзя - клиенту ведь нужно куда-то ответы получать с сервера, не так ли?
Даже если у него цепочка VPN или типа того, все равно мы на сервере должны иметь доступ к последнему звену этой цепи в качестве его IP.
Контекст:
- Мне для механизма авторизации нужно достоверно знать IP клиента. При этом - мне неважно, что там у него - впн или сокс-прокси или еще чего, у меня обратная задача - дать доступ только с определенных IP. А это, как я понимаю, подделать невозможно в принципе. Да?
В какой переменной сервера это находится? Или как еще?
Кто вообще в этом шарит на 101% ))) Буду рад совету.
P.S. блин) так и думал что поймут меня неправильно)) мне нафиг не нужен ни "реальный IP" клиента (тем более что его "реальный" IP это вообще какой-нибудь 192.168.хххххх))))), ни его MAC-адрес, ничего такого мне не нужно. Мне нужно 100% достоверно узнать в PHP-скрипте последний IP-адрес в цепочке, через которую он коннектится с моим сервером. Например поднял он OpenVPN на серваке и выходит через него, в этом случае нужным мне IP будет адрес этого сервака где OpenVPN - как мне получить этот IP со 100% достоверностью?
Прокси и ВПН-ы как раз и придуманы/используются для скрытия IP-адреса. И бороться с этим - невозможно. Ну разве что может в JS адрес вытащить и передать? Не знаю, не выяснял.
Надо учиться думать логически. Без этого в программировании никак.
Ну например, от обратного: допустим, такой способ есть, и в php в несколько строк кода можно получить реальный IP клиента. Тогда возникает вопрос: а для чего тогда придуманы прокси и VPN?
30 секунд в поисковике дадут нам примерно такой ответ:
И VPN (виртуальные частные сети), и прокси-серверы были разработаны для того, чтобы помочь сохранить анонимность пользователей в интернете.
Анонимность, помимо прочего (или даже в первую очередь) подразумевает скрытие реального IP адреса.
Отсюда следует, что возможность скрыть IP существует.
А отсюда следует, что 100-процентного способа получить реальный IP в php нет.
Л - Логика.
Максимум, что вы можете, это проверять всевозможные дополнительные заголовки, которые могут устанавливать прокси-серверы (HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR, HTTP_X_REAL_IP и т.д.).
Сергей delphinproVitsliputsliAUser0Dr. BaconЛентюй блин) так и думал что поймут меня неправильно)) мне нафиг не нужен ни "реальный IP" клиента (тем более что его "реальный" IP это вообще какой-нибудь 192.168.хххххх))))), ни его MAC-адрес, ничего такого мне не нужно. Мне нужно 100% достоверно узнать в PHP-скрипте последний IP-адрес в цепочке, через которую он коннектится с моим сервером. Например поднял он OpenVPN на серваке и выходит через него, в этом случае нужным мне IP будет адрес этого сервака где OpenVPN - как мне получить этот IP со 100% достоверностью?
Ты достоверно только можешь знать IP с которого пришел запрос на сервак, это переменная $_SERVER['REMOTE_ADDR']. А кто стоит за этим IP дальше не известно, впн, прокси, один из серваков в провайдере или реальный юзер, никак ты не узнаешь. Есть некоторые впн/прокси сервисы которые присылают доп IP в заголовках (типа REAL_USER_IP), но надеяться на них не стоит, не все их шлют, и их можно самому прислать и прописать там что угодно.