X-Encaminhado-Para - X-Forwarded-For

O campo de cabeçalho HTTP X-Forwarded-For ( XFF ) é um método comum para identificar o endereço IP de origem de um cliente que se conecta a um servidor da web por meio de um proxy HTTP ou balanceador de carga .

O X-Forwarded-Forcabeçalho de solicitação HTTP foi introduzido pelos desenvolvedores do servidor proxy de armazenamento em cache Squid .

X-Forwarded-Fortambém é um cabeçalho de e-mail indicando que uma mensagem de e-mail foi encaminhada de uma ou mais contas (provavelmente automaticamente).

Nesse contexto, os servidores de cache são mais frequentemente aqueles de grandes ISPs que encorajam ou forçam seus usuários a usar servidores proxy para acessar a World Wide Web , algo que geralmente é feito para reduzir a largura de banda externa por meio do cache. Em alguns casos, esses servidores proxy são proxies transparentes e o usuário pode não saber que eles estão sendo usados.

Sem o uso de XFF ou outra técnica semelhante, qualquer conexão através do proxy revelaria apenas o endereço IP de origem do servidor proxy, efetivamente transformando o servidor proxy em um serviço de anonimato , tornando a detecção e prevenção de acessos abusivos significativamente mais difícil do que se o endereço IP de origem estavam disponíveis. A utilidade do XFF depende de o servidor proxy relatar com veracidade o endereço IP do host original; por esse motivo, o uso eficaz de XFF requer o conhecimento de quais proxies são confiáveis, por exemplo, pesquisando-os em uma lista branca de servidores cujos mantenedores podem ser confiáveis.

Formato

O formato geral do campo é:

X-Forwarded-For: client, proxy1, proxy2

onde o valor é uma lista de endereços IP separados por vírgula + espaço, sendo o mais à esquerda o cliente original e cada proxy sucessivo que passou a solicitação adicionando o endereço IP de onde recebeu a solicitação. Neste exemplo, a solicitação passou por proxy1, proxy2 e proxy3 (não mostrado no cabeçalho). proxy3 aparece como endereço remoto da solicitação.

Exemplos:

X-Forwarded-For: 203.0.113.195, 70.41.3.18, 150.172.238.178
X-Forwarded-For: 203.0.113.195
X-Forwarded-For: 2001:db8:85a3:8d3:1319:8a2e:370:7348

Como é fácil forjar um campo X-Forwarded-For, as informações fornecidas devem ser usadas com cuidado. O endereço IP mais à direita é sempre o endereço IP que se conecta ao último proxy, o que significa que é a fonte de informações mais confiável. Os dados X-Forwarded-For podem ser usados ​​em um cenário de proxy direto ou reverso.

Apenas registrar o campo X-Forwarded-For nem sempre é suficiente, pois o último endereço IP do proxy em uma cadeia não está contido no campo X-Forwarded-For, mas sim no cabeçalho IP real. Um servidor da web deve registrar AMBOS o endereço IP de origem da solicitação e as informações do campo X-Forwarded-For para integridade.

Servidores proxy e mecanismos de cache

O campo X-Forwarded-For é compatível com a maioria dos servidores proxy.

O registro X-Forwarded-For é suportado por muitos servidores web, incluindo Apache. O IIS também pode usar um módulo HTTP para essa filtragem.

Zscaler irá mascarar um cabeçalho X-Forwarded-For com Z-Forwarded-For, antes de adicionar seu próprio cabeçalho X-Forwarded-For identificando o endereço IP do cliente de origem. Isso evita que endereços IP internos vazem de nós de aplicação Zscaler e fornece a provedores de conteúdo terceirizados o verdadeiro endereço IP do cliente. Isso resulta em uma solicitação HTTP não compatível com RFC.

Alternativas e variações

O RFC  7239 padronizou um Forwardedcabeçalho HTTP com finalidade semelhante, mas com mais recursos em comparação com o X-Forwarded-Forcabeçalho HTTP. Um exemplo de Forwardedsintaxe de cabeçalho:

Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43

O HAProxy define o protocolo PROXY que pode comunicar o endereço IP do cliente de origem sem usar o cabeçalho X-Forwarded-Forou Forwarded. Este protocolo pode ser usado em vários protocolos de transporte e não requer a inspeção do protocolo interno, portanto, não está limitado a HTTP.

Veja também

Referências

links externos