X-Inoltrato-Per - X-Forwarded-For
HTTP |
---|
Metodi di richiesta |
Campi di intestazione |
Codici di stato di risposta |
Metodi di controllo dell'accesso di sicurezza |
Vulnerabilità di sicurezza |
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-For
intestazione 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 Forwarded
un'intestazione HTTP con uno scopo simile ma più funzionalità rispetto all'intestazione X-Forwarded-For
HTTP. Un esempio di Forwarded
sintassi 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-For
o 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
- Privacy su Internet
- Elenco dei software proxy
- X-Originating-IP per equivalente SMTP
- Elenco dei campi di intestazione HTTP
Riferimenti
link esterno
- Apache mod_extract_forwarded