X-Encaminhado-Para - X-Forwarded-For
HTTP |
---|
Métodos de solicitação |
Campos de cabeçalho |
Códigos de status de resposta |
Métodos de controle de segurança de acesso |
Vulnerabilidades de segurança |
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-For
cabeçalho de solicitação HTTP foi introduzido pelos desenvolvedores do servidor proxy de armazenamento em cache Squid .
X-Forwarded-For
també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 Forwarded
cabeçalho HTTP com finalidade semelhante, mas com mais recursos em comparação com o X-Forwarded-For
cabeçalho HTTP. Um exemplo de Forwarded
sintaxe 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-For
ou 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
- Privacidade da Internet
- Lista de software proxy
- X-Originating-IP para equivalente de SMTP
- Lista de campos de cabeçalho HTTP
Referências
links externos
- Apache mod_extract_forwarded