X-Forwarded-For (HTTP)

Compartir Imprimir Citar

El campo de encabezado HTTP X-Forwarded-For (XFF) es un método común para identificar la dirección IP de origen de un cliente que se conecta a un servidor web a través de un proxy HTTP o un equilibrador de carga.

El X-Forwarded-Forencabezado de solicitud HTTP fue introducido por los desarrolladores del servidor proxy de caché Squid.

X-Forwarded-Fortambién es un encabezado de correo electrónico que indica que un mensaje de correo electrónico se reenvió desde una o más cuentas (probablemente automáticamente).

Sin el uso de XFF u otra técnica similar, cualquier conexión a través del proxy revelaría solo la dirección IP de origen del servidor proxy, convirtiendo efectivamente el servidor proxy en un servicio anónimo, lo que hace que la detección y prevención de accesos abusivos sea significativamente más difícil que si la dirección IP de origen estuviera disponible. La utilidad de XFF depende de que el servidor proxy informe verazmente la dirección IP del host original; por esta razón, el uso efectivo de XFF requiere saber qué proxies son confiables, por ejemplo, buscándolos en una lista blanca de servidores en cuyos mantenedores se puede confiar.

Formato

El formato general del campo es:

X-Reenviado-Para: cliente, proxy1, proxy2

donde el valor es una lista de direcciones IP separadas por comas y espacios, la más a la izquierda es el cliente original y cada proxy sucesivo que pasó la solicitud agrega la dirección IP de donde recibió la solicitud. En este ejemplo, la solicitud pasó por proxy1, proxy2 y luego proxy3 (no se muestra en el encabezado). proxy3 aparece como dirección remota de la solicitud.

Ejemplos:

Reenviado X para: 203.0.113.195, 70.41.3.18, 150.172.238.178
X-Reenviado-Para: 203.0.113.195
Reenviado X para: 2001:db8:85a3:8d3:1319:8a2e:370:7348

Dado que es fácil falsificar un campo X-Forwarded-For, la información proporcionada debe usarse con cuidado. La dirección IP más a la derecha es siempre la dirección IP que se conecta al último proxy, lo que significa que es la fuente de información más confiable. Los datos X-Forwarded-For se pueden usar en un escenario de proxy directo o inverso.

Solo registrar el campo X-Forwarded-For no siempre es suficiente, ya que la última dirección IP de proxy en una cadena no está contenida dentro del campo X-Forwarded-For, está en el encabezado IP real. Un servidor web debe registrar AMBOS, la dirección IP de origen de la solicitud y la información del campo X-Forwarded-For para que esté completo.

Servidores proxy y motores de almacenamiento en caché

El campo X-Forwarded-For es compatible con la mayoría de los servidores proxy.

El registro X-Forwarded-For es compatible con muchos servidores web, incluido Apache. IIS también puede usar un módulo HTTP para este filtrado.

Zscaler enmascarará un encabezado X-Forwarded-For con Z-Forwarded-For, antes de agregar su propio encabezado X-Forwarded-For que identifique la dirección IP del cliente de origen. Esto evita que las direcciones IP internas se filtren fuera de los nodos de aplicación de Zscaler y proporciona a los proveedores de contenido de terceros la verdadera dirección IP del cliente. Esto da como resultado una solicitud HTTP que no cumple con RFC.

Alternativas y variaciones

RFC 7239 estandarizó un Forwardedencabezado HTTP con un propósito similar pero con más funciones en comparación con el X-Forwarded-Forencabezado HTTP. Un ejemplo de Forwardedla sintaxis de un encabezado:

Reenviado: para=192.0.2.60;proto=http;por=203.0.113.43

HAProxy define el protocolo PROXY que puede comunicar la dirección IP del cliente de origen sin usar el encabezado X-Forwarded-Foro. Este protocolo se puede usar en múltiples protocolos de transporte y no requiere inspeccionar el protocolo interno, por lo que no se limita a HTTP. Forwarded