EUCookieLaw la configurazione ottimale

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:

  1. EUCookieLaw.js
  2. eucookielaw.css
  3. 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”

  1. ultima cosa sempre sul sito in html inserisco la mappa con la nuova modalità (API v.3) ma non mi viene bloccata.
    questa e’ la stringa con tutti i domini google:

    define('EUCOOKIELAW_DISALLOWED_DOMAINS', 'www.google.it/maps;maps.google.com;www.google.com;maps.googleapis.com;maps.gstatic.com');
    

    grazie
    maurizio

    1. Avatar maurizio
      maurizio

      mentre sul un sito in wp la mappa di google viene bloccata. quindi lo segnalo solo per la versione stand alone.

  2. ciao Diego ti confermo che il blocco per la versione stand alone non funziona.
    ho provato anche ad inserire la mappa con , e ho provato anche a prendere il codice che mostra la mappa sul sito wp che viene invece bloccata dal plugin, ma niente continua ad essere visibile sul sito statico.
    e’ corretto il blocco dei doimni cosi?

    define('EUCOOKIELAW_DISALLOWED_DOMAINS', 'www.google.it/maps;maps.google.com;www.google.com;maps.googleapis.com;maps.gstatic.com');
    

    rimango in attesa
    grazie
    maurizio

    1. Ciao Maurizio, ho aggiornato la documentazione perchè ho notato che non era censito www.google.com/maps.
      E’ possibile comunque che il problema sia collegato a questa anomalia.
      Nella versione 1.5 il problema quindi dovrebbe essere stato risolto, ti chiedo di pazientare fino al suo rilascio (il 13/06).

      1. Avatar maurizio
        maurizio

        ok attendo, per il plugin wp l’aggiornamento lo trovo nella pagina dei plugin ma per la parte stand alone come funziona dovro’ riscaricare i files?

        ciao e grazie
        Maurizio

        1. Si esatto, sarà necessario scaricare i 3 file fondamentali:

          1. EUCookieLaw.js
          2. eucookielaw-header.php
          3. eucookielaw.css
          1. Avatar maurizio
            maurizio

            perfetto. grazie ancora… dai comemnti vedo che pochi lo usano stand alone, no? :-)

          2. Credo che siano molti di più di quelli che suppongo. :)

            Infatti mi hanno contattato diversi sviluppatori che curano in totale almeno un centinaio di siti chiedendomi supporto per la modalità stand-alone.

  3. Avatar Giuseppe
    Giuseppe

    Ciao Diego complimenti per il plugin che ho provato e va benissimo! ti volevo chiedere se blocco adsense con il tuo plugin si può andar incontro a Ban o no?perchè loro non permettono modifiche al loro codice ma penso che il tuo plugin non interviene per nulla sul loro codice no? grazie in anticipo per la risposta!

    1. Ciao Giuseppe, grazie per i complimenti.

      Il mio plugin blocca il codice adsense rimuovendolo completamente dalla pagina. Una volta che l’utente avrà dato il consenso la pagina verrà ricaricata. Se però non si fa uso degli adsense è possibile implementare il consenso allo scroll che con la versione 1.5 (rilasciata il 13/06/2015) caricherà le parti mancanti senza necessità di scroll della pagina.

      1. Quindi, se ho capito bene, è possibile “iniettare” dinamicamente tutto, tranne AdSense?
        In tal caso, è prevista anche un’opzione per abbianre consenso con scroll+adsense+refresh, come adesso?

        1. Dunque,
          se utilizzi Adsense, non puoi adottare il consenso allo scroll. Perchè hai bisogno del reload dell’intera pagina. Quindi nel plugin disabiliterai il “Consenso allo scroll” a prescindere dagli altri widget o script sociali che usi sul sito. Se invece utilizzi tutto il resto ma non Adsense, puoi tranquillamente adottare il consenso allo scroll perchè in tal caso non ci sarà il reload della pagina ma solo il caricamento dei contenuti temporaneamente soppressi.

          1. Intendevo se fosse possibile, con la nuova versione, effettuare una scelta del tipo scroll+refresh (come sto facendo adesso con la 1.4).
            Sperare che l’utente clicchi su OK (o acconsenta tramite il caricamento di una seconda pagina del sito) è una battaglia quasi persa (ed il Garante lo sa).

          2. Vedrò di rilasciare un aggiornamento alla 1.5.1, con eventuali bugfix che emergeranno nelle prossime ore e questa tua proposta integrata.

          3. Grazie!

      2. Avatar Fabrizio
        Fabrizio

        Ciao Diego, purtroppo non so se dovuto a qualche incompatibilità o al tema che utilizzo su un mio sito ma a me il codice Adsense non viene bloccato nonostante abbia messo i vari domini .doubleclick.net stats.g.doubleclick.net e doubleclick.net tra quelli bloccati mediante apposito settaggio nel pannello admin del tuo plugin WordPress.

        1. Ciao Fabrizio,
          è necessario aggiungere ai domini da bloccare anche questa regola: .googlesyndication.com/pagead/.

  4. Per lo scroll sarebbe bene che funzionare non immediatamente, ma dopo un centiaio di pixel di scorrimento della pagina.

    Ho trovato un esempio:

    function _dismissAfterScroll() {
          var px = _getScroll();  
          if (px >= (scrollStartPos+50)) {
            _acceptCookie();
    
    1. Grazie per il suggerimento (consiglio di indicarlo su GitHub per memoria di tutti), valuto l’implementazione futura con la possibilità di definire l’offset minimo dello scroll per il nascondimento del banner.

  5. […] c.d. EUCookieLaw la configurazione ottimale | Diego La Monica . info. Poichè le direttive europee hanno imposto che tutti i siti sotto l’ombrello Europa forniscano […]

  6. In Joomla e MyBB, sostituendo i tre file del plugig (versione 1.4.1):

    EUCookieLaw.js
    eucookielaw.css
    eucookielaw-header.php

    con i corrispondenti della versione 1.5

    non blocca più i banner di adsense, anche non utilizzando lo scroll

    Possiamo chiederti quattro righe di istruzioni in italiano? Magari con linguaggio semplice ed immediato?

    Magari con un esempio completo di codice da inserire?

    Grazie.

    1. Salve Antonio,
      per Joomla è disponibile una guida, segnalata sulla pagina ufficiale di Facebook.
      Per MyBB non dovrebbero esserci problemi seguendo le indicazioni di questo articolo ma, come già indicato per email qualche giorno fa, spero a breve di poter implementare un modulo EUCookieLaw per MyBB.

  7. Ciao Diego, la tua soluzione è stata mai testata per Magento CE?.
    Grazie

    1. Ciao Davide,
      al momento non ho feedback su Magento, se però tu lo provassi ti chiedo di darmi una risposta per aggiornare eventualmente la documentazione.

  8. Ho seguito anche la guida per joomla, il problema è con la 1.4.1 il blocco dei banner adsense funziona, con la 1.5 spunta la barra per il consenso, ma il banner adsense non viene bloccato e quindi si scaricano i cookie di doubleclic. Ci lavoro da ieri ma non ne vengo a capo. Vedi se puoi darmi una mano. Grazie.

    1. Mandami per email i dettagli del sito proverò ad aiutarti.

  9. Ciao Diego ho scaricato i file della versione 1.5 li ho sostituiti ai precedenti ma la mappa di google (inserita con iframe) non mi viene ancora bloccata..
    il link e’ sempre questo: http://studiorikam.com/contatti.html

    rimango in attesa
    ciao
    Maurizio

    1. Ciao Maurizio,
      sembra che il sito che mi hai segnalato non supporti PHP oppure lo stesso non sia abilitato sul server. Infatti se faccio visualizzazione HTML della pagina il risultato è il seguente:

      <?php
      define('EUCOOKIELAW_DISALLOWED_DOMAINS', 'www.google.it/maps;maps.google.com;www.google.com;maps.googleapis.com;maps.gstatic.com');
      define('EUCOOKIELAW_LOOK_IN_SCRIPTS', true);
      require 'eucookielaw-header.php';
      ?>
      

      Verifica con il tuo Hosting Provider che tu abbia PHP abilitato su quella macchina, altrimenti non ti sarà possibile bloccarlo in questo modo.

      1. scusa ho caricato un file con phpinfo(); per verificare e guarda qui : http://studiorikam.com/php.php mi sembra installato il php, no?

        1. Allora significa che non il webserver non è configurato per l’esecuzione di script PHP nei file con estensione .html.
          Se rinomini la pagina in .php dovrebbe a quel punto andare. Ma sarebbe più corretto registrare l’esecuzione di script php anche per file con estensione .html.

        2. Se hai un file .htaccess nella root del sito inserisci questa riga e dovresti risolvere.

          AddHandler application/x-httpd-php .html .htm
          
          1. Avatar maurizio
            maurizio

            grazie diego, ho provato, come test, a rinominare la pagina con estensione .php ed in effetti la mappa viene bloccata. :-) Ho aperto una segnalazione all’hosting provider. scusa se ti ho fatto impazzire dietro sta cosa che poi dipende dal server. .:-(

  10. Ciao Diego,
    ti sto seguendo assiduamente e ti ringrazio davvero per questo plugin, l’unico free finora che mi abbia soddisfatto. Premetto che non sono un tecnico, quindi per sicurezza ho copiaincollato tutta la lista dei domini da bloccare nei settings del plugin. Oggi finisco di installare i commenti di facebook su wordpress (il plugin mi dava conflitto con yoast) iniettando a mano il codice in header.php e single.php, e vedo che il banner non li blocca (mentre blocca il box per seguire la pagina su facebook). E’ normale? Forse i commenti non rilasciano cookie? Grazie

    1. Ciao Edoardo,
      grazie a te per i complimenti e per i feedback.
      Sarebbe opportuno visionare il sito sul quale hai installato il plugin per comprendere come/cosa bloccare. Se puoi mandami un’email al mio indirizzo privato (diego dot lamonica at gmail dot com).