Poichè le direttive europee hanno imposto che tutti i siti sotto l’ombrello Europa forniscano un’informativa chiara al navigatore sull’utilizzo dei cookie, essendo tecnicamente insoddisfatto delle soluzione proposte dagli altri ed infine sperando che qualcuno lo facesse al posto mio, qualche giorno fa mi sono dovuto sviluppare prima uno script stand-alone denominato EUCookieLaw poi (a grande richiesta) l’ho reso anche un plugin per WordPress in attesa di approvazione dal team di WordPress.
Credevo che la documentazione rilasciata su GitHub fosse chiara, anche se in inglese, tuttavia le domande che mi sono state poste per il suo utilizzo e la sua configurazione sono state sempre le stesse ed io mi sono dovuto ripetere più volte, nei commenti, nei messaggi privati e ovunque mi fosse domandato, quindi ecco la guida alla completa configurazione di EUCookieLaw.
Configurare in un contesto stand-alone
Gli unici file di cui abbiamo bisogno sono:
- EUCookieLaw.js
- eucookielaw.css
- eucookielaw-header.php
Per installare lo script in un contesto senza CMS o con un CMS proprietario che utilizza PHP come linguaggio di programmazione server side bisogna inserire questo codice in ogni entry principale:
<?php define('EUCOOKIELAW_DISALLOWED_DOMAINS', '<elenco-siti-che-voglio-bloccare>'); define('EUCOOKIELAW_LOOK_IN_SCRIPTS', true); require 'eucookielaw-header.php'; ?>
Per lo scopo di ogni variabile inclusa nello script di cui sopra, si rimanda alla documentazione sul sito.
A partire dalla versione 1.3 gli spazi eccedenti all’inizio e alla fine di ogni url da ricercare vengono automaticamente rimossi.
Le modalità con cui è possibile scrivere l’elenco dei domini è:
Modo1: url1;url2;url3;…
Modo2: url1 ; url2 ; url3
Modo3:
url1
url2
url3
A partire dalla versione 1.4 È possibile includere implicitamente tutti i sottodomini di uno specifico URL anteponendo all’URL un punto (es. “.example.com” includerà “sottodominio.example.com” e “sotto.sottodominio.example.com“).
Se il CMS o il sito prevede diverse entry (per chiarirsi i CMS usano tipicamente un .htaccess e dirottano tutte le richieste ad un unico file principale denominato index.php o default.php), allora dovrete ripetere l’operazione per tutti i punti di ingresso al sito.
In ogni pagina HTML, bisogna includere una chiamata al JavaScript, al foglio di stile e configurare l’utilizzo di EUCookieLaw secondo quanto riportato nella documentazione alle sezioni “Client Side” e “Customize the behavior” di GitHub.
Eseguire il debug delle regole di sostituzione
Per eseguire il debug delle sostituzioni includere la definizione che segue prima dell’inclusione del file ‘eucookielaw-header.php‘:
define('EUCOOKIELAW_DEBUG', true);
Installare EUCookieLaw in WordPress
Per installare in WordPress il plugin, utilizzare il canale ufficiale di installazione plugin di WordPress. In alternativa effettuare il download di tutti i file del repository (GitHub consente il download come zip, che piace anche a WordPress) ed eseguire la procedura standard di installazione di un plugin per WordPress. Niente di più, niente di meno.
Nota importante: scaricando lo zip direttamente da GitHub, è possibile che venga ottenuto un file del tipo EUCookieLaw-versione.zip. Prima di installarlo in WordPress è fondamentale rimuovere il nome della versione rinominando l’archivio in EUCookieLaw.zip.
Personalizzare l’aspetto
Per personalizzare l’aspetto di EUCookieLaw su WordPress, bisogna creare la directory /wp-content/plugins/EUCookieLawCustom (una copia della directory pronta all’uso è già disponibile nel plugin). Nella directory bisogna inserire un foglio di stile eucookielaw.css ed intervenire su questo foglio di stile per modificare aspetto e cartteristiche del banner.
A partire dalla versione 1.4 è possibile determinare tramite interfaccia di amministrazione dove collocare il banner: in alto o in basso.
Poichè sono state apportate diverse modifiche alla gestione dei CSS si suggerisce di inserire nel file CSS personalizzato solo le proprie personalizzazioni rispetto alle impostazioni predefinite.
Installare EUCookieLaw in Drupal
Il collega e amico Pietro Cappai ha prodotto una guida passo passo per configurare EUCookieLaw in Drupal 7.
Inoltre poichè esistono alcune differenze tra Drupal 7 e Drupal 6, ho prodotto una piccola guida integrativa per installare EUCookieLaw in Drupal 6.
Installare EUCookieLaw in Joomla
A seguito della produzione di un documento da parte del collega Gioacchinio Cipriano, ho prodotto una guida integrando ulteriori dettagli in modo da avere un’installazione di EUCookieLaw completamente funzionante in Joomla!
Installare EUCookieLaw in Coopermine Gallery
È di prossima pubblicazione una guida passo passo per installare EUCookieLaw in Coppermine Gallery. Il tutorial sarà un’ulteriore semplificazione della risposta alla issue indicata nel repository Bug with Coppermine Gallery
Installare EUCookieLaw in ZenCart, Magento, Prestashop e tutti gli altri CMS basati su PHP.
Seguendo le indicazioni descritte in “Configurare in un contesto stand-alone” si dovrebbe ottenere il risultato atteso, in caso doveste riscontrare problemi con un qualsiasi CMS vi prego di inviarmi un messaggio per email in modo da integrare la documentazione con ulteriori dettagli per lo specifico CMS utilizzato.
Bloccare i cookie di terze parti
Cerchiamo di chiarire alcuni concetti, nè con JavaScript nè con PHP è possibile bloccare i cookie generati da altri domini. Perchè? Il concetto rientra nel contesto delle security-policy del browser di turno. Quando un utente si trova sul sito example.com, il browser mette a disposizione di Javascript solo i Cookie che sono prodotti dallo stesso dominio purchè non siano cookie di tipo “http” (ovvero consultabili solo sul server). Quindi se questo sito fa utilizzo dei classici pulsante like di Facebook e del widget di Twitter, sta richiamando degli script remoti (ovvero fuori dal dominio) o include degli iframe con contenuti remoti. Gli script remoti non vengono richiesti quindi dal server example.com bensì dal client che sta navigando su example.com.
Pertanto il problema principale è che l’utente, secondo la normativa, dovrebbe prima autorizzare all’uso dei cookie e poi potrebbe usufruire di determinate funzionalità. Ed è così che è nato EUCookieLaw. Qualcosa che preventivamente blocchi i cookie e poi solo se l’utente approva la policy di conservazione dei cookie allora potrà usufruire dei servizi. Per fare ciò EUCookieLaw deve essere in grado di conoscere quali sono i siti che producono i così detti Cookie di terze parti e sostituire il codice prodotto sul server con una versione leggermente modificata in modo che i domini “profilatori” non siano più presenti fino ad approvazione dell’utente.
Quindi la prima cosa da fare è censire quali servizi esterni il proprio sito interroga tramite i tipici tag: iframe (solitamente per i widget di Facebook e di Twitter), script (per esempio i like button di facebook spesso adottano questa tecnica) e link (tipicamente CSS appoggiati ad una CDN).
Una volta identificati gli elementi da bloccare indichiamo in quale tag li potremo trovare. Di default EUCookieLaw cercherà questi contenuti in iframe, link e script. Per censirli bisogna riportare i tag specifici nel campo “Ricerca i domini solo in questi tag” separati da un pipe (“|”).
Quindi, se utilizzi WordPress, riportare nel campo “Domini bloccati” l’elenco dei domini bloccati, senza indicare il protocollo (http:// o https://), altrimenti (se si sta usando lo script in modalità standalone) riportare questo elenco in una costante EUCOOKIELAW_DISALLOWED_DOMAINS, prima dell’inclusione del file eucookielaw-header.php ricordandovi che ciascun dominio deve essere separato dal “;” oppure da ritorno a capo (\n).
Dopo aver provato sul campo con il supporto di tanti colleghi che utilizzano il plugin che ho sviluppato EUCookieLaw, ecco quali sono i domini che tipicamente producono cookie e che vanno bloccati preventivamente. In grassetto ci sono le regole che includono le altre non in grassetto:
- Google
- .google.com
- .google.it
- www.google.com
- www.google.it
- apis.google.com
- html5shim.googlecode.com
- Google Analytics
- .google-analytics.com
- www.google-analytics.com
- Google Fonts
- fonts.googleapis.com
- Google Maps
- .google.com
- maps.google.com
- .googleapis.com
- maps.googleapis.com
- www.google.com/maps
- www.google.it/maps
- Double Click (Google Advertising)
- .doubleclick.net
- stats.g.doubleclick.net
- doubleclick.net
- Twitter
- .twitter.com
- twitter.com
- platform.twitter.com
- www.twitter.com
- twitterfeed.com
- Youtube
- www.youtube-nocookie.com
- www.youtube.com
- Vimeo
- .vimeo.com
- vimeo.com
- player.vimeo.com
- Facebook
- .facebook.net
- .facebook.com
- .facebook.it
- connect.facebook.net
- www.facebook.it
- static.facebook.com
- www.static.facebook.com
- static.ak.facebook.com
- www.facebook.com
- LinkedIn
- .linkedin.com
- platform.linkedin.com
- www.linkedin.com
- Pinterest
- www.pinterest.com
- Digg
- widgets.digg.com
- Instragram
- instagram.com
- .cdninstagram.com
- scontent.cdninstagram.com
- scontent-a.cdninstagram.com
- scontent-b.cdninstagram.com
- Add This
- .addthis.com
- www.addthis.com
- g.addthis.com
- s7.addthis.com
- addthis.com
- Eventbrite
- eventbrite.it
- eventbrite.com
- Altri servizi
- www.addtoany.com
- .mixpanel.com
- api.mixpanel.com
- mixpanel.com
- .performgroup.com
- erformgroup.com
- static.eplayer.performgroup.com
- .cloudfront.net/assets/pub/shareaholic.js
L’elenco di cui sopra è in fase di costante aggiornamento, quindi ti suggerisco di consultare quotidianamente questa pagina.
Suggerimento: Non è necessario inserire tutti i domini di cui sopra nella configurazione, ma solo quelli dei servizi che effettivamente sono ospitati dal sito. Si suggerisce inoltre di utilzzare quando possibile le regole generiche.
Cercare solo in specifici tag
Di default EUCookieLaw cercherà solo in specifici tag (iframe, script, link) ma possiamo estendere o ridurre l’ambito della ricerca a specifici tag. Per farlo basta operare sulla costante pubblica EUCOOKIELAW_LOOK_IN_TAGS, se stiamo usando la modalità stand-alone, altrimenti tramite il pannello di configurazione di WordPress nella casella Ricerca i domini solo in questi tag.
A prescindere dalla modalità che si adotta per la configurazione di questa informazione, ricordarsi che l’elenco dei tag deve essere separato da un carattere pipe (|).
Commenti
115 risposte a “EUCookieLaw la configurazione ottimale”
nel tuo js ho tolto la stringa “&& !onScroll” nell if del reload e ora fa il reload sia con pulsante che con scroll..comunque attendo anche il tuo test senza reload che è ancora più interessante ;)
Quoto, tale soluzione sembra funzionare, permettendo lo scrolling *ed* il reload, “salvando”, quindi, i servizi Analytics ed Adsense.
Salve,
premetto che reputo la soluzione migliore di quella che utilizzavo fino ad oggi (che pure bloccava fino al consenso esplicito).
Tuttavia, sarebbe interessante se venissero implementate le seguenti funzioni:
– Consenso acquisito in caso si clicchi su un elemento del sito che conduce ad un’altra pagina (cfr. con “l’indicazione che la prosecuzione della navigazione mediante accesso ad altra area del sito o selezione di un elemento dello stesso (ad esempio, di un’immagine o di un link) comporta la prestazione del consenso all’uso dei cookie.”)
– Data di scadenza del cookie prolungata ad un anno
– Se $user_language !italiano, allora mostra $message_english al posto di $message
Preciso che, per evitare che lo script bloccasse la composizione del mio template (v. http://www.flapane.com/ ), lo ho inserito appena dopo gli script js caricati sul server (che sono innocui, ma venivano bloccati inutilmente).
Forse, potrebbe essere utile la possibilità di aggiungere una class del tipo “.noblock”, per far sì che lo script non blocchi l’esecuzione di determinati script?
Inoltre, non mi è ben chiaro come agisca lo script: il codice viene modificato (aggiungendo, per esempio, classi), rischiando di violare il ToS di Google AdSense?
Grazie
Lo script puoi aggiungerlo dove vuoi nella pagina, è suggerito di collocarlo prima degli altri script per evitare che qualche altro script innesti cookie prima del consenso informato dell’utente.
Il plugin non modifica classi della pagina ma inserisce semplicemente degli about:blank al posto degli URL “profilatori”. Come ti ho già risposto in un altro commento, sto studiando già una soluzione per identificare ed escludere dal blocco preventivo i motori di ricerca.
Ouch, credevo che questo commento non fosse stato inviato, visto che non appariva il “Your comment is awaiting moderation”, e ne ho inviato un altro, poco sotto. :)
Intanto ti ringrazio per l’ottimo lavoro, e ne approfitto per proporre qualche spunto:
– Consenso qualora l’utente clicchi su un link che conduce ad un’altra pagina del sito (cfr. “l’indicazione che la prosecuzione della navigazione mediante accesso ad altra area del sito o selezione di un elemento dello stesso (ad esempio, di un’immagine o di un link) comporta la prestazione del consenso all’uso dei cookie.”)
– Scadenza del cookie modificabile
– IF $user_language != ‘italian’ THEN $message=$message_english
– Lo script effettua modifiche del codice, rischiando di violare il ToS di Google AdSense?
Grazie ancora
Ciao flapane,
grazie per i feedback, gli spunti sono interessanti, proponili su GitHub. :)
– La scadenza del cookie sarà modificabile a breve, spero di poterlo già integrare nella versione 1.5 che sarà rilasciata sabato.
– La gestione multilingua è già prevista tramite l’utilizzo della directory EUCookieLawCustom come descritto nella documentazione.
– È in calendario l’identificazione dei motori di ricerca per non modificare il contenuto se un bot/crawler/spider arriva sulla pagina.
Colpa mia, ho dimenticato di scrivere che mi riferivo ad una installazione generica, non a WP, per cui ho tralasciato il folder “EUCookieLawCustom”.
Ti ringrazio, e ripropongo su GitHub.
Inoltre, ho appena notato che, nonostante abbia aggiunto “.disqus.com” ad ‘EUCOOKIELAW_DISALLOWED_DOMAINS’, questi sembra siano gli unici cookie che vengono ugualmente installati: http://i.imgur.com/AaSAAcw.png
Abilita il debug e verifica nell’html quali regole ti vengono applicate, quindi se continui a riscontrare problemi mandami una mail che ti verificheremo se è un problema dello script o di configurazione. :)
L’antispam presente nei tuo commenti aveva cancellato la regola, l’ho riscritta, giustamente, senza tag.
Insomma, banalmente stavo usando : al posto di ;
Era ovvio che non funzionasse. Ecco cosa succede, a fare troppe cose assieme. :)
Ciao Diego complimenti per il plugin: è decisamente la migliore soluzione sinora proposta per la ccokie law all’italiana :-) Volevo chiederti se è possibile implementare una versione del plugin per blogger blogspot. le migliaia di disperati utenti che utilizzano questa piattaforma te ne sarebbero davvero grati :)
Ciao Sgrz, verificherò nei prossimi giorni cosa è possibile fare. :)
grazie mille :)
qualcuno è riuscito a bloccare i cookie di adtech.de??
Qual’è l’URL che ti viene richiamato per adtech.de?
premetto che non so ancora come vedere la lista completa delle chiamate dei cookie. ispeziona elemento mi da .adtech.de – ma in fase di caricamento del sito vedo una chiamata dal server adserver.adtech.de – naturalmente entrambi i link sono inseriti nel pannello opzioni del plugin senza risultato
Mi puoi mandare una mail con il link al sito?
Ciao Diego, grazie a te sono riuscito a risolvere molti problemi relativi alla cookie law (IT).
Il problema che riscontro è quello che non riesco a bloccar i video youtube sul forum (MyBB), dove l’inserimento avviene con
[video=youtube]https://www.youtube.com/watch?v=t6nRvdbq9Yo[/video]
mentre per il sito (Joomla) in cui inserisco il codice di youtube, va tutto bene.
Grazie per l’attenzione.
Altra cosa, gentilmente, non dimenticare (come già ti è stato chiesto da altri) di rendere il cookie __eucookielaw non di sessione ma persistente per almeno un anno. Grazie.
Grazie del feedback, come ho risposto anche su GitHub il cookie diventerà persistente a partire dalla versione 1.5 che sarà rilasciata entro sabato. :)
Ciao Antonio,
mi puoi fornire per email un link al sito di riferimento (meglio alla pagina con il video)? Così posso dirti le cause per cui non viene applicato il filtro.
ciao Deigo complimenti per il plugin. domanda: su un sito wp un cliente usa il plugin Shareaholic che non imposta un link per i bottoni di share, quindi non vi e’ il link shareaholic.com da trovare, di conseguenza non vengono bloccati i plusanti ma sono subito visibili prima del consenso.
come posso bloccarli?
grazie
ciao
Maurizio
Ciao Maurizio, grazie per il feedback.
Ho fatto una verifica veloce su un wordpress di prova e ho notato che Shareaholic utilizza degli script su cloudfront.
Quindi la stringa che ho usato, da inserire nei domini da bloccare, è
.cloudfront.net/assets/pub/shareaholic.js
.Dopo questa modifica non mi è più apparsa la barra di sharing.
perfetto!!! grazie
ultima ocsa: in unsito statico inserisco il banner e tutto il resto, ti chiedo non e’ possibile inserire il link alla cookie policy nel banner?
io provo cosi’ a modificare il testo nel campo messsage:
Assolutamente sì, è possibile. Però noto che nel tuo messaggio hai usato apici e doppi apici in modo errato.
Ti riporto il testo corretto:
Ciao Diego,
è possibile escludere dal blocco preventivo i cookies tecnici? Per esempio quelli di sessione o di capthca google.
Grazie mille e complimenti.
Ciao Mirco,
grazie per il feedback.
Fino alla versione 1.5 compresa (che sarà rilasciata sabato) il sistema non è in grado di differenziare i cookie tecnici da quelli profilanti. Sto percorrendo diverse strade per valutare quella con impatto minore sull’utente finale e che abbia una semplice modalità di configurazione.