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 balanceador de carga .
El X-Forwarded-Forencabezado de solicitud HTTP fue introducido por los desarrolladores del servidor proxy de almacenamiento en caché Squid .
X-Forwarded-ForTambién es un encabezado de correo electrónico que indica que un mensaje de correo electrónico fue reenviado desde una o más cuentas (probablemente de forma automática). [ 1 ]
Sin el uso de XFF u otra técnica similar, cualquier conexión a través del proxy revelaría únicamente la dirección IP de origen del servidor proxy, convirtiéndolo efectivamente en un servicio de anonimización . Esto dificulta considerablemente la detección y prevención de accesos abusivos en comparación con si la dirección IP de origen estuviera disponible. La utilidad de XFF depende de que el servidor proxy informe con veracidad la dirección IP del host original; por esta razón, el uso efectivo de XFF requiere conocer qué proxies son confiables, por ejemplo, consultándolos en una lista blanca de servidores cuyos administradores sean de confianza.
Formato
El formato general del campo es: [ 2 ]
X-Forwarded-For: cliente, proxy1, proxy2
donde el valor es una lista de direcciones IP separadas por comas y espacios, siendo la de la izquierda la del cliente original, y cada proxy sucesivo que reenvió la solicitud agrega la dirección IP desde donde la recibió. En este ejemplo, la solicitud pasó por proxy1 , proxy2 y luego por proxy3 (no se muestra en el encabezado). proxy3 aparece como la dirección remota de la solicitud.
Ejemplos: [ 3 ]
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
Debido a que el encabezado X-Forwarded-For no está estandarizado formalmente, existen algunas variaciones en el formato de la dirección IP. Por ejemplo, algunas implementaciones incluyen el número de puerto de los clientes o encierran las direcciones IPv6 entre corchetes incluso sin el número de puerto, de forma similar al formato del encabezado más reciente. Ejemplos:Forwarded
X-Forwarded-For: 203.0.113.195:41237, 198.51.100.100:38523 X-Forwarded-For: [2001:db8::1a2b:3c4d]:41237, 198.51.100.100:26321 X-Forwarded-For: [2001:db8::aa:bb]
Uso
Los proxies HTTP añaden o modifican el encabezado X-Forwarded-For al reenviar una solicitud. El servidor agrega la dirección del cliente a un encabezado X-Forwarded-For existente, separada por una coma, o crea un nuevo encabezado X-Forwarded-For con la dirección del cliente como valor.
Dado que es fácil falsificar un campo X-Forwarded-For, la información proporcionada debe usarse con precaución. La dirección IP situada más a la derecha siempre es la que se conecta al último proxy, lo que significa que es la fuente de información más fiable. Los datos de X-Forwarded-For pueden utilizarse en un escenario de proxy directo o inverso. Si el servidor se encuentra detrás de un proxy inverso de confianza y solo permite conexiones desde dicho proxy, generalmente se puede asumir que el valor del encabezado es fiable.
Registrar únicamente el campo X-Forwarded-For no siempre es suficiente, ya que la última dirección IP del proxy en una cadena no se encuentra en dicho campo, sino en la cabecera IP. Para mayor exhaustividad, un servidor web debería registrar tanto la dirección IP de origen de la solicitud como la información del campo X-Forwarded-For.
Alternativas y variaciones
RFC 7239 estandarizó un encabezado HTTP con un propósito similar pero con más características en comparación con el encabezado HTTP. [ 4 ] Un ejemplo de la sintaxis de un encabezado: ForwardedX-Forwarded-ForForwarded
Reenviado: para=192.0.2.60;proto=http;por=203.0.113.43 Reenviado: para="[2001:db8::1234]"
HAProxy define el protocolo PROXY que puede comunicar la dirección IP del cliente de origen sin usar el encabezado X-Forwarded-Foro . [ 5 ] 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
Véase también
Referencias
- ↑ "Descripción general de los encabezados de correo analizados" . Archivado del original el 20 de septiembre de 2014. Consultado el 5 de mayo de 2014 .
- ↑ "squid : directriz de configuración follow_x_forwarded_for" . Squid-cache.org . Consultado el 12 de noviembre de 2017 .
- ↑ "X-Forwarded-For" . MDN Web Docs . Consultado el 6 de noviembre de 2020 .
- ↑ Petersson, A; Nilsson, M (junio de 2014). Forwarded HTTP Extension . IETF . doi : 10.17487/RFC7239 . RFC 7239. Recuperado el 20 de febrero de 2020 .
- ↑ Willy Tarreau: El protocolo PROXY . haproxy.1wt.eu. Consultado el 24 de diciembre de 2012.
Enlaces externos
- Apache mod_extract_forwarded
- Anonimato
- Encabezados del Protocolo de Transferencia de Hipertexto