Подтвердить что ты не робот

В чем разница между X-Forwarded-For и X-Forwarded-IP?

Чтобы получить IP-адрес клиента в моем приложении ASP.NET, я использовал X-Forwarded-For и получил первый IP-адрес из списка (в соответствии с информацией, которую я нашел, есть клиент, proxy1, proxy2..). Но недавно я слышал, что лучше получить эту информацию из заголовка X-Forwarded-IP, потому что IP-адрес клиента в X-Forwarded-For может быть изменен прокси-сервером, какая разница и какой адрес я должен использовать

4b9b3361

Ответ 1

X-Forwarded-For является обычным способом идентификации исходящего IP-адреса пользователя, подключающегося к серверу web, исходящим из HTTP прокси, балансировщик нагрузки.

X-Forwarded-IP является обычным способом идентификации исходящего IP-адреса пользователя, подключающегося к серверу электронная почта через почтовую службу HTTP.

Ответ 2

X-Forwarded-For - нестандартный заголовок, введенный первоначально Squid. Это заголовок, зависящий от прокси-сервера, который помогает серверу идентифицировать первоначальный запросчик вызова, который прошел через прокси-сервер, поэтому очевидно, что любой прокси-сервер на пути запроса должен/будет изменять X-Forwarded-For. Без прокси-сервера на пути запроса этот заголовок не должен быть даже в запросе.

Поскольку этот заголовок нестандартен, нет никакой гарантии, что вы его получите, и способ его обработки может отличаться в реализации прокси. У вас нет гарантии, что он будет содержать правильный IP-адрес.

Начиная с 2014 года, IETF одобрил стандартное определение заголовка для прокси, называемое "Переадресовано", зарегистрированное здесь https://tools.ietf.org/html/rfc7239, которое должно использоваться вместо заголовков X-Forwarded. Это тот, который вы должны надежно использовать, чтобы получить исходный IP-адрес, если ваш запрос обрабатывается прокси-сервером.

В общем, заголовки прокси (Forwarded или X-Forwarded-For) - это правильный способ получить IP-адрес вашего клиента только тогда, когда вы уверены, что приходят к вам через прокси-сервер. Если нет прокси-заголовка или нет полезного значения, вы должны по умолчанию использовать серверную переменную REMOTE_ADDR.