Archivi tag: http

HTTP Cache-Control user tracing exploited

dscf1673.jpg Nel pomeriggio di ieri, a seguito del post di commento all’articolo del Corriere su come “aggirare Google”, ho messo su un piccolo script php che vorrebbe dimostrare quanto rapido e veloce sia tracciare gli utenti di un sito web senza dover usare i cookies (sui quali si concentrano molti dei sistemi per migliorare la “privacy” degli utenti).

Tanto per rendere l’idea di quanto semplice sia lo script, qui ne trovate il codice sorgente, che vedo di commentare nelle prossime righe.

Il concetto sul quale si basa questo breve script, è che il sistema di gestione dei files in cache può essere agevolmente utilizzato per correlare tra loro le sessioni di uno stesso utente, anche dopo che questi ha chiuso ed riaperto il browser (magari a distanza di tempo) e senza dover necessariamente mantenere in memoria un cookie, facilmente identificato per altro da una serie di strumenti, o disabilitabile da parte dell’utente in questione (che può per l’appunto rifiutarlo al momento di caricare la pagina).

Lo script php quindi, comunica (inviando un apposito header di sessione HTTP) al browser che la pagina che sta caricando deve essere mantenuta in cache, e che questi dovrà perciò provvedere a validare nuovamente la pagina (alla quale viene per questo motivo associato un codice univoco, l’ETag) alla prossima visita. Il meccanismo della cache è utile perché nel caso in cui la pagina non venga modificata tra le due visite, al browser potrà essere inviato solamente un header con codice 302 (Pagina non modificata), evitando che questi debba andare a ricaricare tutti i componenti della pagina, sprecando tempo e banda. Come tutte le umane cose però, l’ETag (o la data di modifica, o qualsiasi altro parametro della pagina) può essere utilizzato (come nel nostro esempio) per correlare le sessioni, impostandolo ad un valore univoco e differente utente per utente (nel nostro caso impostato banalmente ad un valore casuale di 4 cifre).

Se volete verificare che il sistema effettivamente funzioni, non dovete far altro che cancellare i vostri cookie, chiudere e riaprire il browser, e tornare alla pagina in questione.

Inutile dire che esistono molti altri modi per tenere traccia delle sessioni degli utenti senza dover ricorrere ai cookies, ma ho voluto esplorare in pratica questa possibilità perché l’unico sistema che conosco che rimuova e sostituisca l’ETag è Privoxy (o l’uso di altri proxy appositamente configurati) ed è allo stesso tempo particolarmente semplice da attuare.

Annunci