Non vedo problemi enormi che attivano un self-XSS poiché l'inserimento del contenuto in una connessione TCP esistente è già abbastanza difficile (grazie ai numeri di sequenza iniziali). E, anche se un utente malintenzionato fosse in grado di iniettare pacchetti TCP validi , probabilmente sarebbe più interessato a ottenere le informazioni sulla sessione direttamente sul suo IP, senza passare attraverso XSS.
Le cose cambiano leggermente quando il self-XSS è persistente. cioè termina memorizzato nel DB e può essere rieseguito in una fase successiva. In tal caso è più o meno un XSS completo , in quanto è possibile, ad esempio, consentire l'accesso al proprio account agli altri utenti che eseguiranno l'XSS. Ma non sanificare i dati forniti da un utente che entra nel DB dovrebbe essere un crimine.
Ancora, sulle domande:
While the true solution would be to automatically sanitize ip address before displaying it, i would like to know when should we really do it?
Non solo l'IP, ma ogni informazione fornita da una richiesta dell'utente. E non solo in casi specifici ma sempre. Se non disinfetti ogni informazione e la rimandi, o la lasci nel DB e la rispedisca più tardi, avrai problemi XSS.
Is there any configurations where webservers automatically change the REMOTE_ADDR
to the value of one of this headers?
I server web non lo fanno (anche se alcuni hacking di nginx mi hanno permesso di eseguirlo, ma sarebbe stata una pratica orribile). I server Web passano le variabili al programma / script CGI. mod_cgi
di Apache passa le cose attraverso le variabili d'ambiente e STDIN (per il contenuto POST). Nginx controlla le variabili presenti nella sua configurazione per andare al CGI attraverso il file scgi_params
(normalmente a /etc/nginx/scgi_params
).
How are those headers useful anyway?
Vedi il mio rant-comment su akamai e True-Client-IP
, cioè X-Forwarded-For
è l'intestazione HTTP corretta. X-Forwarded-For
è pensato per le connessioni che passano attraverso una qualche forma di proxy (al contrario di passare attraverso un NAT).
The only thing I'm seeing is when client pass by some proxy for un-obvious reason but still want the website to know his ip address. Is there any other?
E sì, questo è il principale e (non considerando possibili hack sporchi) usare solo per X-Forwarded-For
. Potrebbe non essere molto utile ma è molto più comune di quanto immagini.
Gli uffici / datacenter hanno spesso enormi proxy / firewall a cui la loro rete interna passa attraverso Internet. Alcune macchine interne hanno IP privati e dipendono da un NAT, ma altre hanno i propri IP pubblici e dipendono dal firewall come proxy (il firewall deve essere in grado di essere in ogni modo efficace). Questa situazione richiede l'uso di "X-Forwarded-For" per sapere da quale parte della rete arriva una richiesta.
I proxy Internet (gratuiti e non liberi) spesso usano quell'intestazione per garantire che tu possa visitare siti web personalizzati per la tua posizione. per esempio. Connettersi direttamente a google.com
Mi viene reindirizzato a google.co.uk
(dal momento che vivo nel Regno Unito). Ma se uso un proxy in Polonia e non settaggio X-Forwarded-For
, mi viene reindirizzato a google.com.pl
. Se utilizzo il proxy e impostato X-Forwarded-For
sul mio IP di casa (nel Regno Unito), viene correttamente reindirizzato a google.co.uk
.