Quando si parla di un sito web chiunque avrà sentito almeno nominare la parola cookie. Molti sicuramente ricorderanno che nel 2015 a seguito di una serie di misure approvate dal Garante della Privacy, è divenuto d'obbligo per tutti i siti web notificare i propri utenti dell'utilizzo di cookie tecinici e di profilazione utilizzati a scopo di marketing. Questo provvedimento è anche noto come cookie law e la sua entrata in vigore ha fatto sì che tutti i siti apportassero le opportune modifiche per essere a norma, con l'inserimento di banner informativi all'interno delle pagine web che notificavano l'utente dell'utilizzo di cookie per il miglioramento dei servizi offerti.

Ma cosa sono realmente i cookie? Perchè un sito web dovrebbe utilizzarli e a quali scopi? Queste sono domande che spesso l'utente si pone quando gli viene chiesto di accettare l'utilizzo dei cookie e spesso è difficile trovare una risposta precisa e gli argomenti correlati divagano. Questo articolo ha lo scopo di fare chiarezza sull'utilizzo dei cookie, in modo da rendere gli utenti consapevoli di cosa accettano e di cosa succede quando navigano in un sito web che utilizza dei cookie.

Cosa sono i cookie

Tecnicamente parlando i cookie sono dei file che vengono automaticamente scaricati ed utilizzati da un sito web per archiviare e recuperare informazioni lato client, per cui sono salvati all'interno del browser e conservati fino alla loro scadenza. Vengono rilasciati da un server http a seguito di una richiesta ed è compito del browser salvare il file ed inviarlo nelle richieste successive. Solitamente il file contiene del testo con quattro attributi principali:

  • chiave/valore, per identificare il cookie e il valore ad esso associato
  • scadenza, che permette di stabilire la data di scadenza del cookie
  • modalità di accesso, per rendere il cookie invisibile a linguaggi client-side come Javascript
  • sicuro, indica se il cookie debba essere trasmesso criptato con https

È possibile inoltre definire l'ambito di visibilità di un cookie, tramite due attributi:

  • dominio, che stabilsce che il cookie può essere inviato al server solo per il dominio indicato
  • percorso, che indica che il cookie può essere inviato al server solo per il dominio indicato in precedenza e il percorso indicato

Se questi due valori non sono impostati, di default prendono il dominio e il percorso che li ha inizialmente rilasciati.

Come vengono utilizzati i cookie

I cookie vengono generalmente utilizzati per archiviare informazioni sul browser ed inviarle al server quando richiesto. I cookie vengono salvati ed inviati senza alcuna eccezione, per cui il loro utilizzo si presta a dispositivi desktop, tablet e smatphone. Questo apre chiaramente un'infinità di scenari e casi d'uso, che variano da un sito web a un altro. Essendo semplici stringhe testuali non possono essere eseguite, quindi, a differenza di errate convinzioni, non possono essere fonte di malware o virus e in generale non hanno alcuna implicazione sulla sicurezza di un sito web. In base al loro ciclo di vita, possiamo distinguerli in:

  • cookie di sessione, che vengono cancellati alla chiusura del browser
  • cookie persistenti, che gengono cancellati in base ad una scadenza precisa stabilita dal cookie stesso

In base alla provenienza possiamo distinguerli in:

  • cookie di prima parte, rilasciati direttamente dal sito web ed inviati solo a quest'utltimo
  • cookie di terze parti, appartenenti a domini diversi da quello del sito

Sulla base del loro utilizzo possiamo invece distinguerli in:

  • cookie tecnici, che facilitano l'accesso del sito da parte dell'utente, memorizzando ad esempio informazioni utli per integrarsi con servizi esterni come Google o Facebook
  • cookie statistici, servono a collezionare statistiche sull'utilizzo del sito, come le visite delle pagine, l'interazione con gli elementi e i tempi di sessione
  • cookie per la memorizzazione delle preferenze, con lo scopo di memorizzare le scelte effettuate dall'utente, come ad esempio la lingua o la valuta, in modo da utilizzarle per le navigazioni future
  • cookie di profilazione, vengono utilizzati a scopo pubblicitario per collezionare dati sull'utente e proporre messaggi pubblicitari appropriati
  • cookie di social network, per condividere i contenuti del sito con altri utenti, ad esempio per la funzionalità "mi piace" o "segui"

Implementazione

Quando viene effettuata una richiesta http ad un server (ad esempio il server sui cui è ospitato il sito) solitamente viene generata e restituita una risposta http. All'interno di questa risposta possono essere presenti degli http header con diverse funzionalità, tra cui appunto quello di restituire un cookie. Quest'ultimo fornisce istruzioni al browser di memorizzare il cookie e di inviarlo ad ogni futura richiesta. Vediamo un esempio di risposta:

HTTP/1.0 200 OK
Content-Type: text/html
Set-Cookie: sessionToken=abcdefg; Expires=Thu, 14 Jun 2018 14:30:00 GMT
...

La risposta contiene ad esempio il contenuto html della pagina richiesta ma in aggiunta indica al browser di salvare il cookie sessionToken, che scadrà il 14 Giugno 2018. In questo caso si tratta di un cookie persistente dal momento che contiene una data di scadenza. Le successive richieste al server conterranno dunque il cookie rilasciato:

GET /index.html HTTP/1.1
Host: www.example.org
Cookie: sessionToken=abcdefg
...

I cookie e la privacy

Questo è un argomento molto importante e richiederebbe probabilmente una discussione a parte. È obbligatorio dal 2015 informare gli utenti del fatto che il sito fa uso di cookie ed è necessario specificare la lista nella pagina dell'informativa sul trattamento dei dati personali. I cookie tengono traccia delle azioni compiute dal'utente all'interno del sito web, rendendo migliore l'esperienza utente durante la navigazione. Questo crea dall'altro lato inevitabili implicazioni riguardante la privacy, che è bene specificare e documentare correttamente, in modo da rendere il sito conforme alle normative europee. I cookie possono essere cancellati e disabilitati manualmente da parte dell'utente, intervenendo direttamente nelle impostazioni del browser. Ciascun broswer ha la sue istruzioni: