I cookies sono degli utili strumenti informatici spesso utilizzati per il funzionamento stesso dei siti web. Essi consentono infatti di gestire funzioni essenziali, come il carrello degli acquisti nei siti di commercio elettronico, o di raccogliere utili informazioni personali degli utenti, della loro modalità di navigazione e, in generale delle loro preferenze.
Tali informazioni vengono poi ri-utilizzate per vari scopi, in primis per definire e realizzare azioni di marketing diretto, che ad esempio promuovono un determinato prodotto che l’utente stava ricercando o altri potenziali prodotti di interesse.
Le informazioni presenti nei cookies, o quelle basate su di esse, sono ormai molto preziose, tanto che spesso e volentieri queste vengono scambiate tra siti web partner, o vendute, qualora questa pratica sia permessa.
Per tantissimi anni gli utenti del web hanno subito la presenza dei cookies, più o meno inconsapevolmente, fino a quando la direttiva dell’Unione Europea n. 136 del 2009 ha determinato l'obbligo di informare gli utenti del loro uso, e di richiedere il relativo consenso. Da allora, molti degli stati membri (compresa l’Italia) hanno adottato le cosiddette cookie policy; nel nostro paese, il Garante della privacy ha emanato un apposito provvedimento nel giugno 2014.
Tale provvedimento, a valle di una consultazione pubblica, è diventato applicabile dal 2 giugno 2015 e di conseguenza è diventato la normativa di riferimento in merito all’uso dei cookies.
Il provvedimento del Garante Privacy
In estrema sintesi, il suddetto provvedimento prescrive dei comportamenti di base che riguardano in primis la necessità di indicare se il sito utilizza cookie di profilazione per inviare messaggi pubblicitari mirati e se il sito prevede l’uso di cookie di “terze parti”, ovvero quella tipologia di cookie che saranno utilizzati da siti differenti rispetto a quello che si sta realmente visitando. Inoltre, deve essere presentato un link che indirizza l’utente verso una pagina informativa di maggiore dettaglio, e fornito all’utente un meccanismo mediante cui egli possa scegliere se fornire o meno il consenso.
Dal punto di vista strettamente tecnico, il webmaster può scegliere di fornire tutte queste informazioni all’interno di un banner, che dovrà essere presentato all’utente che accede al sito la prima volta. Per le volte successive, poi, il Garante ha consentito l’utilizzo di un cosiddetto cookie “tecnico”, che tiene appunto traccia di un eventuale consenso già fornito.
Rispetto al meccanismo di accettazione del consenso, invece, il Garante ha stabilito valide differenti possibilità, tra cui un semplice disclaimer in cui si ritiene fornito il consenso non appena l’utente accede ad un’altra area del sito, seleziona un’immagine o un link oppure esegue uno scroll in basso con il mouse.
Dall’emissione del provvedimento in poi sono stati numerosi gli interventi chiarificatori rispetto all’utilizzo dei cookies, che hanno disciplinato tra l’altro i cookies analitici (di terze parti e non), nonchè le modalità di acquisizione del consenso, l’utilizzo dei cookies in contesti di posta elettronica, eccetera.
Uno strumento utile, per avere un quadro d’insieme di cosa è richiesto o non richiesto dal provvedimento del Garante sui cookies, è l’infografica pubblicata dallo stesso Garante e la sezione che approfondisce tutti gli aspetti normativi che per brevità non tratteremo in questo articolo.
I plugin per la gestione dei cookies
A partire dall’emissione della cosiddetta Cookie Law europea, moltissimi sviluppatori si sono concentrati sullo sviluppo di soluzioni tecniche per la gestione dei cookies.
Ad oggi, e spesso gratuitamente, è possibile recuperare nel web lo strumento più adeguato e più facilmente configurabile, solitamente disponibile per la maggior parte dei CMS o dei linguaggi di programmazione.
Per WordPress, ad esempio, sono innumerevoli i plugin disponibili, tra cui anche EU Cookie Law Widget ormai implementato su moltissimi siti web, così come il suo omologo Cookie Law Info.
Quest’ultimo consente di aggiungere uno specifico banner ad ogni sito web che ospita un’installazione di WordPress, visualizzabile come header o come footer della schermata di prima navigazione dell’utente.
Il banner è completamente personalizzabile in termini di font, stili e comportamenti a valle del consenso utente.
Il plugin consente di raccogliere le informazioni di tutti i cookies gestiti dal sito, che possono essere mostrati all’utente, anche come tabella inclusa nella Privacy & Cookies Policy.
Gestire un proprio cookie
Fino a questo momento abbiamo parlato del fatto che esiste una normativa specifica in materia di cookie, che questi devono essere comunicati all’utente e che in alcuni casi è richiesto un consenso esplicito.
È bene sottolineare che i cookies sono utili per una serie di motivazioni (personalizzare la navigazione dei visitatori, evitare di eseguire tante volte il login a un sito, mantenere gli oggetti nel carrello di un sito di e-commerce, fare pubblicità, contare le visite o gli utenti online, eccetera) e che questi di conseguenza possono essere di differenti tipologie (tecnici, di profilazione, analitici, eccetera).
In ultimo, abbiamo brevemente compreso che, volendo, è possibile scaricare da internet strumenti per lo più gratuiti che forniscono una gestione completa dei cookies e delle loro informazioni.
Tuttavia in alcuni casi è necessario sviluppare dei propri cookies personalizzati ed è quindi opportuno conoscerne i meccanismi di base. Di seguito vedremo un semplice esempio di creazione, modifica e cancellazione di cookie in PHP. Esiste anche la possibilità di gestire i cookies anche lato client, avvalendosi di linguaggi come Javascript.
In PHP, la gestione dei cookies è molto semplice, purché si conoscano i metodi standard. Ad esempio, per la creazione è necessario utilizzare il metodo setcookie
che riceve in input il nome del cookie, il relativo vlaore e, opzionalmente, la durata ammessa (nel prossimo esempio si tratta di un giorno) e il percorso cui esso si riferisce.
$cookie_name = 'esempio_utilizzo_cookie';
$cookie_value = 'cookie di prova';
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), '/'); // 86400 = 1 day
Anche la consultazione dei cookies è altrettanto semplice:
$cookie_name = 'esempio_utilizzo_cookie';
if(!isset($_COOKIE[$cookie_name])) {
print 'Cookie "' . $cookie_name . '" non presente.';
} else {
print 'Cookie "' . $cookie_name . '" ha il seguente valore: ' . $_COOKIE[$cookie_name];
}
Per la cancellazione esistono differenti possibilità, anche se non esiste un metodo standard. La più utilizzata è quella di impostare il cookie con una data già passata, in modo che esso venga cancellato dal browser. Ad esempio, è possibile settare il cookie con una stringa vuota e con una data pari a quella attuale, ridotta di un’ora.
$cookie_name = 'esempio_utilizzo_cookie';
unset($_COOKIE[$cookie_name]);
$res = setcookie($cookie_name, '', time() - 3600);
Lo scambio dei cookies client-server
Proseguendo nel nostro esempio, ipotizziamo che utilizzando i metodi appena visti il nostro sito web sia pronto a creare e gestire cookies personalizzati.
Quando gli utenti navigheranno il sito, o accederanno ad uno specifico URL, il server web tenterà di scrivere un cookie. Se il browser è configurato per poterlo memorizzare, le informazioni in esso contenuto verranno mantenute fino alla data di scadenza. Nel nostro caso il cookie, tecnicamente, è contenuto all’interno dell’header HTTP, che si presenterebbe come di seguito mostrato.
HTTP/1.1 200 OK
Date: Fri, 20 Feb 2017 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=esempio_utilizzo_cookie; expires=Friday, 04-Feb-07 22:03:38 GMT;
path=/; domain=esempio.com
Connection: close
Content-Type: text/html
A questo punto, se l’utente tornerà nuovamente all’indirizzo preservato all’interno del cookie, il browser comunicherà la presenza di informazioni al server, che potrà recuperarle tra le variabili d’ambiente $_COOKIE
o $HTTP_COOKIE_VARS[]
che conterranno tutte le accoppiate nome cookie e relativo valore.
GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=esempio_utilizzo_cookie
Per approfondire ulteriomente l'argomento, si rimanda alla lezione della guida a PHP dedicata alla gestione dei cookies.