Ну название в основном говорит об этом.
Но для получения дополнительной информации. ,
Этот метод работает, но. ,
$ip = '1.1.1.1'; curl_setopt($handle, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: $ip", "X_FORWARDED_FOR: $ip"));
Он добавляет только эти два keys
в массив $_SERVER
HTTP_REMOTE_ADDR
HTTP_X_FORWARDED_FOR
Ключ REMOTE_ADDR
прежнему остается неизменным.
Можно ли изменить REMOTE_ADDR
? Ответ здесь говорит НЕТ . Но комментарий также говорит, что он может, однако, НЕ быть реальным IP-адресом пользователя, потому что он может быть скрыт прокси и другими методами. Вот почему общее правило состоит в том, чтобы не зависеть от $_SERVER['REMOTE_ADDR']
для функции безопасности.
При всем этом есть метод curl php, который также скрывает / маскирует / меняет ip? (любой другой метод php, помимо указанного выше кода, будет делать.)
А ТАКЖЕ
Есть ли способ противодействия методу ИЛИ Есть ли способ получить ACTUAL REAL IP пользователя?
Ура!
Нет. $_SERVER['REMOTE_ADDR']
– это фактический физический IP-адрес, который клиент использовал для подключения к веб-серверу, что подтверждается трехсторонним рукопожатием TCP. Невозможно подделать это, установив простые HTTP-заголовки. Вы также не можете заставить webserver / PHP перезаписывать это значение каким-либо другим способом. $_SERVER['REMOTE_ADDR']
устанавливается из информации о соединении TCP, периода.
Чтобы на самом деле обмануть IP-адрес, вам нужно гораздо глубже проникнуть в реальный сетевой уровень и иметь некоторый уровень контроля над сетевым оборудованием / человеком в средних позициях / прокси-серверах / whatnot, чтобы фактически иметь возможность установить TCP-соединение с IP-адреса кроме того, из которого вы его устанавливаете.
Есть ли способ противодействия методу ИЛИ Есть ли способ получить ACTUAL REAL IP пользователя?
№ «Фактический IP-адрес пользователя» – это адрес, на который ваш веб-сервер получил соединение из периода. Для вас нет другого адреса. Клиент подключается к вашему серверу с определенного IP-адреса, это подтверждается трехсторонним рукопожатием TCP, это единственный адрес, который вы знаете для этого клиента. Этот клиент может быть прокси-сервером или NAT-маршрутизатором (то есть прокси-сервером) или что-то еще, вы просто не знаете и не должны иметь для вас никакого значения.
Если клиент использует браузер за прокси-сервером, $_SERVER['REMOTE_ADDR']
будет IP-адресом прокси-сервера. Удаленным адресом является IP-адрес машины, которая создает соединение.
Если прокси использует заголовки, чтобы указать, выполняется ли соединение для других компьютеров, вы можете использовать эти заголовки для определения IP-адреса браузера за прокси-сервером.
$_SERVER['HTTP_X_FORWARDED_FOR']
, $_SERVER['HTTP_X_FORWARDED']
, $_SERVER['HTTP_FORWARDED_FOR']
и $_SERVER['HTTP_FORWARDED']
Обратите внимание, что RFC 6648 не X-*
заголовки X-*
а RFC 7239 не поддерживал X-Forwarded-*
, определяя Forwarded
заголовок.
Вы можете проверить ответы на