Archive for May 30th, 2008

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.