Cookie Law e blocco preventivo dei cookie su Drupal

Cookie

La famosa "Cookie law" europea impone ai gestori dei siti una serie di accorgimenti per informare gli utenti riguardo a come vengono trattate le informazioni reperibili attraverso i famigerati cookie. Tra le varie cose, impone una notifica, tramite un'informativa breve e in evidenza nel sito, riguardante l'utilizzo che viene fatto dei cookie, quando questi facciano direttamente profilazione (cookie di profilazione) o quando vengano settati dei cookie di terze parti che possano, anche potenzialmente, fare profilazione. Una pagina con l'informativa estesa riguardo all'utilizzo dei cookie, e su come rimuoverli e disavilitarli, deve essere raggiungibile direttamente dal banner di notifica e da ogni pagina del sito. Il banner può essere nascosto una volta che l'utente abbia accettato le condizioni d'uso.

Attuazione della cookie law, attuazione italiana
L'attuazione della Cookie Law è demandata agli organi nazionali, che danno interpretazioni diverse riguardo alle modalità di accettazione dei cookie e sul fatto che i cookie debbano essere o meno bloccati preventivamente fino all'accettazione. Il Garante della Privacy italiano dà un'interpretazione abbastanza restrittiva della norma, che impone l'accettazione attiva delle condizioni dal banner e il famigerato blocco preventivo dei cookie.

Cookie law e Drupal: il modulo EU Cookie Compliance
Su Drupal diversi moduli, tra cui il noto EU Cookie Compliance, permettono di realizzare l'informativa tramite banner in evidenza. EU Cookie Compliance consente di configuare il banner tramite una semplice interfaccia, nonché di scegliere il criterio preferito per l'accettazione della policy. Non è invece possibile, tramite il modulo EU Cookie Compliance, realizzare il blocco preventivo dei cookie presenti nel sito. La mancanza di questa funzionalità rende difficile l'adeguamento alla legge, soprattutto se nel sito, come spesso accade, sono presenti javascript, iframe, o altre applicazioni ormai diffusissime e irrinunciabili, che impostano cookie di terze parti.

Tra i servizi che fanno uso di cookie ricordiamo i vari servizi di Google (maps, analytics, embed youtube), Facebook, Twitter e vari altri widget di condivisione social come addthis e sharethis. L'utilizzo di questi servizi ha solitamente una licenza di utilizzo "as is", per cui non è permessa la modifica del codice in modo da eliminare le parti che impostano i cookie: l'unica soluzione per eliminare pare essere quella di disattivare in toto i servizi fino all'accettazione.

Impostazioni base EU Cookie Compliance:

Entrare nella pagina admin/config/system/eu-cookie-compliance
Abilitare "enable popup".
Disabilitare "consent by clicking".
Indicare la pagina con l'informativa breve sotto "Privacy policy link".
Abilitare la visione del popup all'utente autenticato.
Come realizzare il blocco preventivo con il modulo IT Cookie Compliance
Il modulo IT Cookie compliance integra il modulo EU Cookie compliance e collabora con esso per realizzare il blocco preventivo dei cookie. La strategia utilizzata è brutale quanto efficace: IT Cookie Compliance consente di indicare i file/script Javascript e i blocchi da eliminare dalla pagina finché non siano accettate le condizioni sulla privacy. Capire quali siano i blocchi e i file da eliminare potrebbe non essere un'operazione banalissima per l'utente comune, ma alla semplice portata di chiunque conosca un minimo di HTML e rudimenti di Drupal.

Individuare i cookie
I cookie possono essere individuati ispezionando le risorse tramite gli strumenti di sviluppo del browser. Ad esempio, con chrome, la funzionalità "Ispeziona Elemento" consente di accedere allo strumento di sviluppo. Sotto il tab "resources" sono presenti, tra le altre risorse, i cookie impostati nel browser dal momento del caricamento della pagina. La sorgente del cookie è facilmente identificabile dal dominio di origine.

Individuare i file e script Javascript​
Gli script Javascript possono essere individuati dagli strumenti di sviluppo o direttamente dall'ispezione del codice sorgente della pagina. In realtà non è necessario annotare esattamente i nomi dei file, quanto piuttosto farsi un'idea del formato caratteristico del nome. Ad esempio, i Javascript di Facebook contengono la parola "facebook", e questo basta.

​Individuare i blocchi
​Individuare quali blocchi siano legati alle funzionalità dei servizi esterni è relativamente facile per chi ha costruito il sito, ma anche da un'ispezione è abbastanza chiaro individuare i widget e servizi esterni, come video youtube, pulsanti di sharing, mappe google, ecc. Dopo aver individuato il blocco responsabile del settaggio del cookie, bisogna individuarne il nome macchina, che generalmente è ricavabile dall'id HTML del contenitore del blocco, individuabile a sua volta dalla classe HTML "block". Anche nel caso dei blocchi, non è necessario conoscere esattamente il nome macchina quanto una parte del nome caratteristica. Il nome macchina di un blocco con id HTML "block-views-X" sarà resumibilmente "block_views_X".

Configurare il modulo IT Cookie Compliance
Installare e configurare il modulo EU Cookie Compliance (vedi sopra)
Entrare nella pagina admin/config/system/it-cookie-compliance
Impostare i nomi (o porzioni di nomi) dei javascript da escludere fino all'accettazione (es: analytics,twitter,linkedin,facebook,addtoany)
Impostare i nomi (o porzioni di nomi) dei blocchi da escludere fino all'accettazione (es: video,blocchi_pagina_tema-media_video,blocchi_pagina_tema-block_4,blocchi_speciale-block_4,48237b76b58e02fdc81aa120fb21dd58,addtoany)
Una volta salvate le impostazioni, verificare, senza accettare le condizioni, che spariscano visivamente i servizi da bloccare, e soprattutto che non vengano impostati cookie indesiderati. Se i cookie sono stati bloccati parzialmente, probabilmente è sfuggito qualche blocco o javascript, o il nome indicato non è quello corretto.

Se nessun cookie viene bloccato, probabilmente è "colpa" del sistema di caching. La cache di pagina, sia essa quella di Drupal o esterna, velocizza la restituzione delle pagine salvando nel server la pagina richiesta, e restituendo la stessa quando necessario. Questo sistema, fondamentale soprattutto per i siti con molti accessi, rompe un po' le uova nel paniere quando vogliamo mostrare la stessa pagina in maniera diversa a seconda delle preferenze dell'utente.

Fortunatamente, c'è un "trucco" relativamente semplice per ovviare a questo problema, indicato nella stessa procedura di installazione del modulo. Il trucco consiste nel modificare la configurazione del server (nello stesso file .htaccess) in modo da aggiungere un parametro alla pagina quando venga rilevato il cookie di accettazione (eh sì, l'accettazione dei cookie si traccia con un cookie, ma questo lo dice il Garante!).

Dunque si sistemano le seguenti righe di codice nel file .htaccess, prima della rewrite rule su index.php:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteCond %{HTTP_COOKIE} !cookie-agreed=2 [NC]
RewriteCond %{QUERY_STRING} !cookie-not-accepted=1 [NC]
RewriteRule ^ %{REQUEST_URI}?cookie-not-accepted=1&%{QUERY_STRING} [L,R]

Conclusioni
​La legge italiana impone a tutti i siti il blocco preventivo dei cookie di profilazione e cookie di terze parti fino all'accettazione delle condizioni. In particolare il blocco dei cookie di terze parti può risultare difficoltoso.

Il modulo IT Cookie Compliance consente il blocco dei cookie di terze parti, seguendo una procedura relativamente semplice per un tecnico web con conoscenze base di configurazione Drupal.