X-Inoltrato-Per - X-Forwarded-For

Il campo di intestazione HTTP X-Forwarded-For ( XFF ) è un metodo comune per identificare l' indirizzo IP di origine di un client che si connette a un server Web tramite un proxy HTTP o un sistema di bilanciamento del carico .

L' X-Forwarded-Forintestazione della richiesta HTTP è stata introdotta dagli sviluppatori del server proxy di caching di Squid .

X-Forwarded-Forè anche un'intestazione di posta elettronica che indica che un messaggio di posta elettronica è stato inoltrato da uno o più altri account (probabilmente automaticamente).

In questo contesto, i server di cache sono molto spesso quelli di grandi ISP che incoraggiano o costringono i propri utenti a utilizzare server proxy per l'accesso al World Wide Web , cosa che viene spesso eseguita per ridurre la larghezza di banda esterna tramite la memorizzazione nella cache. In alcuni casi, questi server proxy sono proxy trasparenti e l'utente potrebbe non essere consapevole di utilizzarli.

Senza l'uso di XFF o di un'altra tecnica simile, qualsiasi connessione tramite il proxy rivelerebbe solo l'indirizzo IP di origine del server proxy, trasformando di fatto il server proxy in un servizio di anonimizzazione , rendendo così l'individuazione e la prevenzione di accessi abusivi significativamente più difficili che se l'indirizzo IP di origine era disponibile. L'utilità di XFF dipende dal fatto che il server proxy riporti in modo veritiero l'indirizzo IP dell'host originale; per questo motivo, l'uso efficace di XFF richiede la conoscenza di quali proxy sono affidabili, ad esempio cercandoli in una whitelist di server i cui manutentori possono essere considerati attendibili.

Formato

Il formato generale del campo è:

X-Forwarded-For: client, proxy1, proxy2

dove il valore è un elenco di indirizzi IP separati da virgola+spazio, il più a sinistra è il client originale e ogni proxy successivo che ha passato la richiesta aggiungendo l'indirizzo IP da cui ha ricevuto la richiesta. In questo esempio, la richiesta è passata tramite proxy1, proxy2 e quindi proxy3 (non mostrato nell'intestazione). proxy3 appare come indirizzo remoto della richiesta.

Esempi:

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

Poiché è facile creare un campo X-Forwarded-For, le informazioni fornite devono essere utilizzate con cautela. L'indirizzo IP più a destra è sempre l'indirizzo IP che si connette all'ultimo proxy, il che significa che è la fonte di informazioni più affidabile. I dati X-Forwarded-For possono essere utilizzati in uno scenario proxy diretto o inverso.

La semplice registrazione del campo X-Forwarded-For non è sempre sufficiente poiché l'ultimo indirizzo IP proxy in una catena non è contenuto nel campo X-Forwarded-For, ma è nell'intestazione IP effettiva. Un server web dovrebbe registrare ENTRAMBI l'indirizzo IP di origine della richiesta e le informazioni del campo X-Forwarded-For per completezza.

Server proxy e motori di cache

Il campo X-Forwarded-For è supportato dalla maggior parte dei server proxy.

La registrazione X-Forwarded-For è supportata da molti server Web incluso Apache. IIS può anche utilizzare un modulo HTTP per questo filtro.

Zscaler maschererà un'intestazione X-Forwarded-For con Z-Forwarded-For, prima di aggiungere la propria intestazione X-Forwarded-For che identifica l'indirizzo IP del cliente di origine. Ciò impedisce che gli indirizzi IP interni fuoriescano dai nodi di applicazione Zscaler e fornisce ai fornitori di contenuti di terze parti il ​​vero indirizzo IP del cliente. Ciò si traduce in una richiesta HTTP non conforme a RFC.

Alternative e varianti

RFC  7239 ha standardizzato Forwardedun'intestazione HTTP con uno scopo simile ma più funzionalità rispetto all'intestazione X-Forwarded-ForHTTP. Un esempio di Forwardedsintassi di un'intestazione:

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

HAProxy definisce il protocollo PROXY che può comunicare l'indirizzo IP del client di origine senza utilizzare l' intestazione X-Forwarded-Foro Forwarded. Questo protocollo può essere utilizzato su più protocolli di trasporto e non richiede l'ispezione del protocollo interno, quindi non è limitato a HTTP.

Guarda anche

Riferimenti

link esterno