Oltre a mostrare un cookie banner, devi anche bloccare i cookie prima del consenso. Il tagging manuale è una delle opzioni possibili.
Apportando una piccola modifica al codice degli script che installano cookie, darai modo alla nostra soluzione Privacy Controls and Cookie Solution di prevenirne l’esecuzione quando non è ancora stato prestato il consenso.
Privacy Controls and Cookie Solution di iubenda ti permette di gestire tutti gli adempimenti richiesti dalla Cookie Law:
Lo sapevi che esiste una soluzione più semplice per il blocco preventivo dei cookie e degli strumenti di tracciamento? La nostra funzionalità di blocco automatico automatizza il processo, facendoti risparmiare tempo e fatica.
Se preferisci taggare manualmente gli script che installano o che potrebbero installare cookie, puoi sempre consultare la guida seguente, con istruzioni dettagliate ed esempi pratici. Ti consigliamo però vivamente di valutare la funzionalità di blocco automatico per avere una soluzione più snella.
👉 Clicca qui per saperne di più sul blocco automatico e su come può semplificare il processo di blocco dei cookie
Per maggiori informazioni sull’installazione, ti rimandiamo alla nostra guida dedicata o alla nostra introduzione a Privacy Controls and Cookie Solution. Se utilizzi WordPress, ti segnaliamo invece il post Blocco preventivo dei cookie – Plugin WordPress.
Dipende dalla giurisdizione applicabile al tuo sito. In Europa, sei obbligato a bloccare gli script dei cookie fino a quando non ottieni il consenso dell’utente. Tutti i cookie devono essere bloccati, eccetto alcune categorie esenti.
Per l’Italia, le categorie esenti sono:
In Italia, la condizione per cui Google Analytics può beneficiare di “nessun consenso preliminare necessario” è l’anonimizzazione dell’IP dell’utente, in quanto permette attività di analisi disaggregata (non è così in Francia, dove raccomandano l’uso di Matomo/Piwik).
Per aiutare gli editori a gestire i cookie a fini pubblicitari e statistici, Google ha introdotto il Consent Mode, una funzionalità che ti permette di evitare il blocco preventivo dei cookie per Google Analytics e Google Ads (incluso Google Ads Conversion Tracking and Remarketing).
Scopri come implementarlo con la nostra soluzione Privacy Controls and Cookie Solution.
È importante notare che, laddove si applica il GDPR, a seconda che sia richiesto o meno il consenso e di come vengono utilizzati, anche i dati statistici possono rientrare in “profilazione” o “monitoraggio”.
Come comportarsi:
Qualora altri strumenti terzi garantiscano di non avvalersi di cookie, magari a condizione di utilizzare specifiche opzioni di configurazione, possono essere considerati anch’essi esenti dall’obbligo del blocco preventivo.
In particolare, questo è il caso di YouTube, che offre una funzionalità specifica per evitare che l’utente venga tracciato via cookie.
Google Tag Manager è uno strumento gratuito che può semplificare l’applicazione della normativa. È compatibile con la iubenda Privacy Controls and Cookie Solution e gli abbiamo dedicato una guida.
Come descritto in seguito, Google Tag Manager ti permette di evitare il tagging degli script, limitatamente ad una certa categoria (gli script non posizionali). Consigliamo caldamente di utilizzarlo nonostante non sia la soluzione per tutti i casi: non gestisce infatti gli script di inclusione relativi a banner pubblicitari, widget video di YouTube, pulsanti “Mi piace” di Facebook, ecc.
Per tutti gli altri script che installano o potrebbero installare cookie, è necessario procedere con delle modifiche al codice per implementare il blocco preventivo.
Per abilitare il blocco degli script che potrebbero installare cookie, è necessario modificare questi script in modo che il componente iubenda possa prevenirne l’esecuzione nei casi in cui non è stato ancora prestato il consenso.
Per farlo:
_iub_cs_activate
ai tag script
, e type
da text/javascript
a text/plain
<script class="_iub_cs_activate" type="text/plain" src="code-source.js"> …. </script>
L’attributo src
può rimanere invariato, ma è preferibile sostituirlo con data-suppressedsrc
oppure con suppressedsrc
. La sostituzione di src
in alcuni casi è necessaria in quanto il browser, nonostante lo script sia bloccato, può scaricare e/o interpretare la risorsa e di conseguenza installare dei cookie.
// use of data-suppressedsrc <script data-suppressedsrc="LINK-TO-SOURCE.js" class="_iub_cs_activate" type="text/plain"> </script> // OR suppressedsrc <script suppressedsrc="LINK-TO-SOURCE.js" class="_iub_cs_activate" type="text/plain"> </script>
Nota: nella riattivazione dello script, la iubenda Privacy Controls and Cookie Solution ricava l’attributo src
di riattivazione controllando gli attributi descritti in precedenza nel seguente ordine: data-suppressedsrc
, suppressedsrc
e src
(se viene lasciato inalterato).
Per l’attivazione dei tag JavaScript inline occorre invece applicare la classe _iub_cs_activate-inline
.
<script class="_iub_cs_activate-inline" type="text/plain"> …. </script>
Nota: la classe _iub_cs_activate-inline
andrà utilizzata per tutti gli script che usano document.write
o document.writeln
.
Grazie al supporto degli attributi personalizzati suppressedtype
e data-iub-type
, la nostra Privacy Controls and Cookie Solution può bloccare/attivare anche script diversi da text/javascript
(ad esempio module
):
<script type="module">
console.log('this is a module, e.g. "this" is undefined:', this);
</script>
Per bloccarlo:
<script suppressedtype="module" type="text/plain" class="_iub_cs_activate">
console.log('this is a module, e.g. "this" is undefined:', this);
</script>
oppure (alternativa equivalente):
<script data-iub-type="module" type="text/plain" class="_iub_cs_activate">
console.log('this is a module, e.g. "this" is undefined:', this);
</script>
Se hai abilitato il consenso per categoria dovrai inoltre specificare le categorie degli script/iframe tramite l’attributo dedicato data-iub-purposes
, ad esempio data-iub-purposes="2"
oppure data-iub-purposes="2, 3"
(è piuttosto raro, ma un singolo attivatore può servire a più finalità).
Ti ricordiamo che le finalità sono raggruppate in 5 categorie (necessari, funzionali, esperienza, misurazione, marketing), ciascuna identificata da un id (1, 2, 3, 4, 5).
1
). Finalità incluse:
2
). Finalità incluse:
3
). Finalità incluse:
4
). Finalità incluse:
5
). Finalità incluse:
Prendiamo il pulsante follow di Twitter ad esempio:
<a href="https://twitter.com/iubenda" class="twitter-follow-button" data-show-count="false">Follow @iubenda</a>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
Poiché appartiene alla finalità “Interazione con social network e piattaforme esterne” inclusa nella categoria “Esperienza” (3
), il codice diventerà:
<a href="https://twitter.com/iubenda" class="twitter-follow-button" data-show-count="false">Follow @iubenda</a>
<script async type="text/plain" class="_iub_cs_activate" data-iub-purposes="3" data-suppressedsrc="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
Ad eccezione dei cookie strettamente necessari (categoria che non richiede il consenso dell’utente), se utilizzi la funzione consenso per categoria, ricordati di aggiungere l’attributo data-iub-purposes
così da permettere a Privacy Controls and Cookie Solution di identificare correttamente gli script da bloccare/rilasciare. Gli script/iframe senza attributo data-iub-purposes
o appartenenti anche solo ad una categoria bloccata rimarranno bloccati.
In alternativa, nel caso in cui i cookie vengano attivati da porzioni di codice javascript, è possibile procedere tramite callback all’istanza csConfiguration.
// onConsentGiven is still active but deprecated: if both are declarated only onConsentRead will be executed. _iub.csConfiguration = { callback: { onConsentRead: function(){ yourFunctionForRegisterCookie() ;} } }
Nota: onConsentGiven
, precedentemente indicata, rimane comunque disponibile per compatibilità con le versioni precedenti; il suo valore verrà in ogni caso sovrascritto da onConsentRead
se quest’ultimo viene utilizzato.
In alcuni casi, per attivare correttamente un tag bloccato è necessario attendere la disponibilità di una variabile o di un oggetto JavaScript. Per gestire correttamente le dipendenze è disponibile l’attributo data-iub-cs-wait-for
<script suppressedsrc="//download.helloworldvariable.js" class="_iub_cs_activate"> </script> <script data-iub-cs-wait-for="helloWord" class="_iub_cs_activate-inline"> console.log('print hello world' + helloWorld); </script>
Alcuni tag img
e iframe
potrebbero anche installare cookie. In questi casi è necessario aggiungere la classe _iub_cs_activate
(come per i tag script
descritti in precedenza), assegnare il valore originario del tag src
a un nuovo attributo data-suppressedsrc
oppure suppressedsrc
ed assegnare all’attributo src
il valore "about:blank"
(vedi anche l’esempio pratico in seguito).
<iframe id="player" class="_iub_cs_activate" width="640" height="390" frameborder="0" suppressedsrc="https://www.youtube.com/embed/erVv_Gm7CC4" src="about:blank"></iframe>
Nota: il valore data:text/html;base64,PGh0bWw+PGJvZHk+U3VwcHJlc3NlZDwvYm9keT48L2h0bWw+
precedentemente indicato in questa guida (che è la codifica base64 di Suppressed
, ed è ciò che la maggior parte dei browser mostrerebbe al posto del tag alterato prima della sua attivazione) non pregiudica il corretto blocco e la successiva attivazione del tag, ma il suo utilizzo potrebbe generare errori nella visualizzazione in alcune web view di Android.
A questo indirizzo è disponibile un coder/encode per poter generare la codifica base64 di una qualsiasi altra stringa.
Allo stato attuale la gestione dei tag noscript
che potrebbero installare cookie nel caso in cui l’utente abbia javascript disabilitato nel suo browser è in fase di implementazione. In attesa che anche questa casistica venga gestita consigliamo di eliminare i tag noscript
dal documento o di ricorrere a soluzioni back-end che, interrogando la presenza del cookie _iub_cs-local
, possano selettivamente includere o escludere i tag noscript
dal documento.
Di seguito elencheremo una serie di casi frequenti e delle indicazioni su come modificare gli script per garantire un comportamento corretto rispetto agli obblighi imposti dalla Cookie Law.
Dopo:
1. definisci la callBack per onConsentGiven
sull’istanza _iub.csConfiguration
onConsentGiven: function () { $('.4wNET.hidden').removeClass('hidden'); }
2. includi l’intero script che carica il banner in un div
con style="display:none"
– Esempio
Button:
Altervista e i fornitori pubblicitari a cui fa affidamento aderiscono e supportano il Transparency and Consent Framework. Maggiori informazioni nell’Altervista Wiki.
src
del tag script.Nota: se nella pagina sono presenti più Ads Conversion, gli snippet andranno bloccati seguendo un ordine ben preciso:
_iub_cs_activate-inline
_iub_cs_activate
Così facendo, il primo snippet di conversione sarà:
<script class="_iub_cs_activate-inline" type="text/plain"> /* <![CDATA[ */ var google_conversion_id =CONVERSION_ID; var google_conversion_label = "CONVERSION-LABEL"; var google_custom_params = window.google_tag_params; var google_remarketing_only = true; /* ]]> */ </script> <script class="_iub_cs_activate-inline" type="text/plain" src="//www.googleadservices.com/pagead/conversion.js"> </script> <noscript> <div style="display:inline;"> <img height="1" width="1" style="border-style:none;" alt="" class="_iub_cs_activate" src="data:text/html;base64,PGh0bWw+PGJvZHk+U3VwcHJlc3NlZDwvYm9keT48L2h0bWw+" suppressedsrc="//googleads.g.doubleclick.net/pagead/viewthroughconversion/1036022355/?value=0&label=-KpbCO3v1QQQ0-SB7gM&guid=ON&script=0"/> </div> </noscript>
Mentre gli snippet di conversione successivi diventeranno:
<script class="_iub_cs_activate" type="text/plain"> /* <![CDATA[ */ var google_conversion_id =CONVERSION_ID; var google_conversion_label = "CONVERSION-LABEL"; var google_custom_params = window.google_tag_params; var google_remarketing_only = true; /* ]]> */ </script> <script class="_iub_cs_activate" type="text/plain" src="//www.googleadservices.com/pagead/conversion.js"> </script> <noscript> <div style="display:inline;"> <img height="1" width="1" style="border-style:none;" alt="" type="text/plain" class="_iub_cs_activate" src="data:text/html;base64,PGh0bWw+PGJvZHk+U3VwcHJlc3NlZDwvYm9keT48L2h0bWw+" suppressedsrc="//googleads.g.doubleclick.net/pagead/viewthroughconversion/1036022355/?value=0&label=-KpbCO3v1QQQ0-SB7gM&guid=ON&script=0"/> </div> </noscript>
Tutti gli snippet in pagina possono essere bloccati con la classe _iub_cs_activate
. Esempio:
<script class="_iub_cs_activate" type="text/plain"> /* <![CDATA[ */ var google_conversion_id =CONVERSION_ID; var google_conversion_label = "CONVERSION-LABEL"; var google_custom_params = window.google_tag_params; var google_remarketing_only = true; /* ]]> */ </script> <script class="_iub_cs_activate" type="text/plain" src="//www.googleadservices.com/pagead/conversion.js"> </script> <noscript> <div style="display:inline;"> <img height="1" width="1" style="border-style:none;" alt="" type="text/plain" class="_iub_cs_activate" src="data:text/html;base64,PGh0bWw+PGJvZHk+U3VwcHJlc3NlZDwvYm9keT48L2h0bWw+" suppressedsrc="//googleads.g.doubleclick.net/pagead/viewthroughconversion/1036022355/?value=0&label=-KpbCO3v1QQQ0-SB7gM&guid=ON&script=0"/> </div> </noscript>
Quanto segue va implementato solo se si utilizzano le funzioni di Google Analytics che permettono il tracciamento univoco dell’utente. In tutti gli altri casi si suggerisce di anonimizzare l’IP.
Nota: se mostri annunci personalizzati tramite i servizi di Google, devi prima assicurarti di aver raccolto il consenso esplicito alla personalizzazione degli annunci da parte degli utenti residenti nello Spazio economico europeo. Tutti i dettagli nella guida dedicata.
Se hai molti banner OpenX in un’unica pagina, puoi velocizzare l’attivazione usando l’opzione inlineDelay
(per maggiori informazioni consulta la guida avanzata). Ti consigliamo inoltre di non indicare valori inferiori a 200 millisecondi.
Nota: usa tag asincroni (AJAX).
Prima:
<div id="DIV-ID" class="CLASS-DIV"> <ul id="UL-ID" class="CLASS-UL"> <li id="LI-ID" class="CLASS-LI"> <a target="_blank" href="http://www.tripadvisor.co.uk/"><img src="http://www.tripadvisor.co.uk/img/cdsi/partner/tripadvisor_logo_DIMENSIONS.png" alt="TripAdvisor"/></a> </li> </ul> </div> <script src="http://www.jscache.com/wejs?wtype=TYPE&uniq=UNIQ&locationId=LocationId&icon=knifeAndFork&lang=en_UK&display_version=2"></script>
Dopo:
1. Aggiungi alla configurazione base di iubenda l’opzione reloadOnConsent
:
<script> _iub.csConfiguration ? _iub.csConfiguration : _iub.csConfiguration = {} _iub.csConfiguration.reloadOnConsent = true; </script> //insert it into <head> tag after iubenda configuration
2. Definisci isConsentGiven
per controllare i cookie:
<script type='text/javascript'> function isConsentGiven() { if('consentIsGiven' in window && (consentIsGiven === true || consentIsGiven === false)) return consentIsGiven; if(!('_iub' in window && 'csConfiguration' in _iub)) return false; var siteId = _iub.csConfiguration.siteId || ''; var cookiePolicyId = _iub.csConfiguration.cookiePolicyId || ''; var cs = document.cookie.split(';'); var consentIsGiven = false; for (var i = 0; i < cs.length; i++) { while (cs[i].charAt(0) == ' ') cs[i] = cs[i].substring(1); if(cs[i].indexOf('_iub_cs-s'+ siteId) == 0||cs[i].indexOf('_iub_cs-'+ cookiePolicyId) == 0) { consentIsGiven = true; break; } } window.consentIsGiven = consentIsGiven; return consentIsGiven; } </script>
3. Sostituisci lo script originale di TripAdvisor con questo:
<script> if(isConsentGiven()){ //per ogni elemento di TripAdvisor document.write('<div id="DIV-ID" class="CLASS-DIV"><ul id="UL-ID" class="CLASS-UL"><li id="LI-ID" class="CLASS-LI"><a target="_blank" href="http://www.tripadvisor.co.uk/"><img src="http://www.tripadvisor.co.uk/img/cdsi/partner/tripadvisor_logo_DIMENSIONS.png" alt="TripAdvisor"\/><\/a><\/li><\/ul><\/div>'); document.write('<script src="http://www.jscache.com/wejs?wtype=TYPE&uniq=UNIQ&locationId=LocationId&icon=knifeAndFork&lang=en_UK&display_version=2"><\/script>'); } </script>
Prima:
<div id="DIV-ID" class="CLASS-DIV"> <ul id="UL-ID" class="CLASS-UL"> <li id="LI-ID" class="CLASS-LI"> <a target="_blank" href="http://www.tripadvisor.co.uk/"><img src="http://www.tripadvisor.co.uk/img/cdsi/partner/tripadvisor_logo_DIMENSIONS.png" alt="TripAdvisor"/></a> </li> </ul> </div> <script src="http://www.jscache.com/wejs?wtype=TYPE&uniq=UNIQ&locationId=LocationId&icon=knifeAndFork&lang=en_UK&display_version=2"></script>
Dopo:
1. Aggiungi alla configurazione base di iubenda l’opzione reloadOnConsent
:
<script> _iub.csConfiguration ? _iub.csConfiguration : _iub.csConfiguration = {} _iub.csConfiguration.reloadOnConsent = true; </script> //insert it into <head> tag after iubenda configuration
2. Definisci isConsentGiven
per controllare i cookie:
<script type='text/javascript'> function isConsentGiven() { if('consentIsGiven' in window && (consentIsGiven === true || consentIsGiven === false)) return consentIsGiven; if(!('_iub' in window && 'csConfiguration' in _iub)) return false; var siteId = _iub.csConfiguration.siteId || ''; var cookiePolicyId = _iub.csConfiguration.cookiePolicyId || ''; var cs = document.cookie.split(';'); var consentIsGiven = false; for (var i = 0; i < cs.length; i++) { while (cs[i].charAt(0) == ' ') cs[i] = cs[i].substring(1); if(cs[i].indexOf('_iub_cs-s'+ siteId) == 0||cs[i].indexOf('_iub_cs-'+ cookiePolicyId) == 0) { consentIsGiven = true; break; } } window.consentIsGiven = consentIsGiven; return consentIsGiven; } </script>
3. Sostituisci lo script originale di TripAdvisor con questo:
<script> if(isConsentGiven()){ //per ogni elemento di TripAdvisor document.write('<div id="DIV-ID" class="CLASS-DIV"><ul id="UL-ID" class="CLASS-UL"><li id="LI-ID" class="CLASS-LI"><a target="_blank" href="http://www.tripadvisor.co.uk/"><img src="http://www.tripadvisor.co.uk/img/cdsi/partner/tripadvisor_logo_DIMENSIONS.png" alt="TripAdvisor"\/><\/a><\/li><\/ul><\/div>'); document.write('<script src="http://www.jscache.com/wejs?wtype=TYPE&uniq=UNIQ&locationId=LocationId&icon=knifeAndFork&lang=en_UK&display_version=2"><\/script>'); } </script>
Prima:
<div id="DIV-ID" class="CLASS-DIV"> <ul id="UL-ID" class="CLASS-UL"> <li id="LI-ID" class="CLASS-LI"> <a target="_blank" href="http://www.tripadvisor.co.uk/"><img src="http://www.tripadvisor.co.uk/img/cdsi/partner/tripadvisor_logo_DIMENSIONS.png" alt="TripAdvisor"/></a> </li> </ul> </div> <script src="http://www.jscache.com/wejs?wtype=TYPE&uniq=UNIQ&locationId=LocationId&icon=knifeAndFork&lang=en_UK&display_version=2"></script>
Dopo:
1. Aggiungi alla configurazione base di iubenda l’opzione reloadOnConsent
:
<script> _iub.csConfiguration ? _iub.csConfiguration : _iub.csConfiguration = {} _iub.csConfiguration.reloadOnConsent = true; </script> //insert it into <head> tag after iubenda configuration
2. Definisci isConsentGiven
per controllare i cookie:
<script type='text/javascript'> function isConsentGiven() { if('consentIsGiven' in window && (consentIsGiven === true || consentIsGiven === false)) return consentIsGiven; if(!('_iub' in window && 'csConfiguration' in _iub)) return false; var siteId = _iub.csConfiguration.siteId || ''; var cookiePolicyId = _iub.csConfiguration.cookiePolicyId || ''; var cs = document.cookie.split(';'); var consentIsGiven = false; for (var i = 0; i < cs.length; i++) { while (cs[i].charAt(0) == ' ') cs[i] = cs[i].substring(1); if(cs[i].indexOf('_iub_cs-s'+ siteId) == 0||cs[i].indexOf('_iub_cs-'+ cookiePolicyId) == 0) { consentIsGiven = true; break; } } window.consentIsGiven = consentIsGiven; return consentIsGiven; } </script>
3. Sostituisci lo script originale di TripAdvisor con questo:
<script> if(isConsentGiven()){ document.write('<div id="DIV-ID" class="CLASS-DIV"><ul id="UL-ID" class="CLASS-UL"><li id="LI-ID" class="CLASS-LI"><a target="_blank" href="http://www.tripadvisor.co.uk/"><img class="_iub_cs_activate" src="data:text/html;base64,PGh0bWw+PGJvZHk+U3VwcHJlc3NlZDwvYm9keT48L2h0bWw+" suppressedsrc="http://www.tripadvisor.co.uk/img/cdsi/img2/branding/150_logo-11900-2.png" alt="TripAdvisor"\/><\/a><\/li><\/ul><\/div>'); document.write('<script src="http://www.jscache.com/wejs?wtype=cdswritereviewlg&uniq=YOUR-UNIQ&locationId=YOUR-LOCATION&lang=en_UK&border=false&langversion=2"><\/script>'); } </script>
Quanto segue si applica unicamente nei casi in cui non si utilizzi l’opzione di YouTube che permette di includere video senza installare cookie.