Fri 30 May 2008

“It is possible for style sheet authors to abuse the :link and :visited pseudo-classes to determine which sites a user has visited without the user’s consent.”
(dalle specifiche W3C CSS 2.1)
Chi ha un minimo di familiarità con il web e i fogli di stile sa che esiste la pseudo-classe CSS “a:visited” (collegamento visitato) che permette a un webmaster la personalizzazione grafica dei link già visitati in precedenza da un utente. E’ grazie a questo selettore che i collegamenti che portano a pagine web già viste appaiono generalmente di colore diverso rispetto ai restanti link.
Ora, Aza Raskin ha pensato di sfruttare questa caratteristica per rilasciare SocialHistory.js, uno javascript che è in grado di risalire ai siti di social-bookmarking visitati da un utente. La tecnica usata è primitiva ma efficace: si compila un elenco di siti e si usa su ognuno il selettore “a:visited” per estrarre quelli presenti nella cronologia dell’utente. In questo modo i mostruosi badge di bookmark-sharing del tipo rappresentato nell’immagine che apre questo post potrebbero essere rimpiazzati da badge più evoluti, che propongono solo i siti effettivamente rilevanti per chi sta leggendo.
Sorge però un interrogativo: e la privacy?
Se usate Firefox o Internet Explorer potete rendervi conto di persona del problema testando un mio adattamento dello script che elenca i blog italiani che avete visitato di recente (tenete conto che la lista comprende solo 28 blog, seppure tutti più o meno noti, per cui potreste ritrovarvi con una pagina vuota).
Colpiti? Esistono anche altre variazioni sul tema.
Poniamo che su un sito commerciale siano inclusi nell’elenco i siti della concorrenza. Usando la tecnica descritta da Raskin si potrebbe scrivere qualcosa del genere:
- if ( ha_visitato(www.concorrente.com) )
{offri-sconto-extra}
Un altro esempio:
- if ( non_ha_visitato(www.altro_mio_sito.com) )
{mostra-pubblicità}
else
{non-mostrare-pubblicità}
Si potrebbe andare avanti all’infinito; e se pensate che basti disabilitare i javascript, ripensateci: su ha.ckers.org è descritta una tecnica analoga che funziona senza javascript.
UPDATE. Jan segnala che Torbutton, un’estensione per Firefox che sfrutta il network distribuito Tor, ha fra le sue caratteristiche quella di bloccare la lettura CSS dei siti visitati: buono a sapersi.
Non mi funge con ff su mac… mi esce la lista di tutti e 28 :-(
30 May 2008 @ 00:41
lloogg.com mi dice che usi Safari. Questi javascript a volte sclerano…
30 May 2008 @ 00:46
Positivo, a me risulta visitato il mio sito, unico su 28, giusto perché l’ho come homepage di Firefox [(che non è morto ma non sarà più un blog, giusto per la cronaca degli avventori che abbiamo in comune) very cool l'opzione di 15 minuti per modificare un commento, non la ricordavo].
30 May 2008 @ 01:06
sono anni che sostengo che i css sono il MALE ASSOLUTO!
ora c’ho le prove. grazie.
30 May 2008 @ 10:57
o ca22o!!!!
30 May 2008 @ 21:23
Mi è venuta la pagina vuota, allora sono andato a sbirciare il sorgente.
Ma io che molti li leggo con il reader quindi non riulto come visitatore? Potrebbe essere una soluzione…
31 May 2008 @ 01:17
Torbutton blocca da tempo questa operazione, dato che può essere usata per ridurre il set di anonimato durante la navigazione. da:
http://torbutton.torproject.org/dev/
# Block History Reads during Tor (crucial)
Based on code contributed by Collin Jackson, when enabled and Tor is enabled, this setting prevents the rendering engine from knowing if certain links were visited. This mechanism defeats all document-based history disclosure attacks, including CSS-only attacks.
5 June 2008 @ 13:51