In breve
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:
- cookie banner per la notifica agli utenti;
- cookie policy per informazioni estese;
- blocco preventivo degli script prima di aver ottenuto il consenso dell’utente;
- salvataggio delle preferenze di consenso dell’utente.
💡 Semplifica il processo di blocco dei cookie con il blocco automatico!
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
Come installare Privacy Controls and Cookie Solution di iubenda
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.
Quali script che installano cookie andrebbero bloccati preventivamente?
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:
- cookie tecnici, ovvero cookie di preferenza, sessione od ottimizzazione;
- cookie di statistica aggregata di prima parte (es. Matomo/Piwik o altri strumenti di statistica ospitati e gestiti direttamente da te);
- cookie statistici di terze parti (ad esempio Google Analytics), ma solo se i dati sono resi anonimi e non vengono utilizzati per la profilazione (anche indirettamente).
Google Analytics
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).
Google Consent Mode
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:
- Segui la guida all’anonimizzazione dell’IP di Google Analytics (ti basta aggiungere una riga al codice di configurazione);
- In base alle informazioni disponibili, Webtrekk e molti altri strumenti di analytics sono già conformi agli standard e non richiedono ulteriori configurazioni.
Altri strumenti che garantiscono di non avvalersi di cookie
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.
Come utilizzare Google Tag Manager per semplificare l’applicazione della normativa
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.
Come implementare il blocco degli script che potrebbero installare cookie
Alterazione tag script
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:
- applica la classe
_iub_cs_activate
ai tagscript
, e - cambia l’attributo
type
datext/javascript
atext/plain
[git:pre_js-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/_iub_cs_activate.js]
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.
[git:pre_js-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/safemode/tag-options/suppressedsrc.html]
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
.
[git:pre_js-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/_iub_cs_activate-inline.js]
Nota: la classe _iub_cs_activate-inline
andrà utilizzata per tutti gli script che usano document.write
o document.writeln
.
Moduli JavaScript
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>
Tagging manuale e consenso per categoria
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).
- Necessari (id
1
). Finalità incluse:- Salvataggio e gestione di backup
- Hosting ed infrastruttura backend
- Gestione di landing page e pagine di invito
- Servizi di piattaforma e hosting
- Protezione dallo SPAM
- Ottimizzazione e distribuzione del traffico
- Monitoraggio dell’infrastruttura
- Gestione dei pagamenti
- Funzionali (id
2
). Finalità incluse:- Contattare l’Utente
- Interazione con le piattaforme di live chat
- Gestione di conferenze web e telefonia online
- Gestione delle richieste di supporto e contatto
- Interazione con le piattaforme di supporto e di feedback
- Gestione dei tag
- Registrazione ed autenticazione
- Gestione dei database di Utenti
- Esperienza (id
3
). Finalità incluse:- Commento dei contenuti
- Interazione con piattaforme di raccolta dati e altre terze parti
- Visualizzazione di contenuti da piattaforme esterne
- Interazione con social network e piattaforme esterne
- Interazione con le piattaforme per sondaggi online
- Gestione dei feed RSS
- Funzionalità sociali
- Misurazione (id
4
). Finalità incluse:- Statistica
- Beta testing
- Test di performance di contenuti e funzionalità (A/B testing)
- Heat mapping e registrazione sessioni
- Gestione della raccolta dati e dei sondaggi online
- Marketing (id
5
). Finalità incluse:- Pubblicità
- Infrastruttura al servizio pubblicitario
- Affiliazione commerciale
- Gestione contatti e invio di messaggi
- Remarketing e behavioral targeting
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.
Callback
In alternativa, nel caso in cui i cookie vengano attivati da porzioni di codice javascript, è possibile procedere tramite callback all’istanza csConfiguration.
[file:pre_html-code@https://raw.githubusercontent.com/iubenda/cookie-law-solution-codesnippets/master/callback/onConsentRead.html]
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.
Alterazione tag script, iframe e img per la gestione delle dipendenze
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
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/safemode/tag_options/iub_cs_wait_for.html]
Tag img e iframe
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.
Tag noscript
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.
Esempi pratici
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.
4w Marketing
Dopo:
1. definisci la callBack per onConsentGiven
sull’istanza _iub.csConfiguration
[file:pre_html-code@https://gist.githubusercontent.com/s2imon/bd683a02635b39eced38/raw]
2. includi l’intero script che carica il banner in un div
con style="display:none"
– Esempio
AddThis
Button:
AddToAny
AdRoll
Altervista
Altervista e i fornitori pubblicitari a cui fa affidamento aderiscono e supportano il Transparency and Consent Framework. Maggiori informazioni nell’Altervista Wiki.
Amazon
Banner
Login
Bing Tracker
Booking (affiliate)
CodePen
Criteo
- Prima
- Dopo – L’URL della risorsa viene prima costruita interamente nel block code e poi inserita nella proprietà
src
del tag script.
Customerly
Disqus
Elevio
Pixel
Like button
Like box
Page plugin
Foursquare
Freshchat
Google Ads (conversion)
Nota: se nella pagina sono presenti più Ads Conversion, gli snippet andranno bloccati seguendo un ordine ben preciso:
- il primo snippet dovrà essere bloccato con la classe
_iub_cs_activate-inline
- tutti gli snippet successivi andranno bloccati con la classe
_iub_cs_activate
Così facendo, il primo snippet di conversione sarà:
[file:pre_html-code@https://raw.githubusercontent.com/iubenda/cookie-law-solution-codesnippets/master/adwords_after_iub.js]
Mentre gli snippet di conversione successivi diventeranno:
[file:pre_html-code@https://raw.githubusercontent.com/iubenda/cookie-law-solution-codesnippets/master/adword_after_iub_standard_block.html]
Tutti gli snippet in pagina possono essere bloccati con la classe _iub_cs_activate
. Esempio:
[file:pre_html-code@https://raw.githubusercontent.com/iubenda/cookie-law-solution-codesnippets/master/adword_after_iub_standard_block.html]
Google AdSense
Google Analytics
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.
gtag.js
Google Calendar
Google Maps (iframe)
Google Custom Search / Site Search
Google Publisher Tag
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.
Google Track (con tag img)
Headway
Intercom
Kissmetrics
MediaMond
Mixpanel
MyLiveChat
OpenX banner
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.
Optimizely
PayPal (Buy Now button)
ShareThis
Smart Adserver
Nota: usa tag asincroni (AJAX).
head
body
SoundCloud
Spotify
Listen
Follow
Stripe
TradeTracker
TripAdvisor
Badge Widget
Prima:
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/tripadisor_badge_before.html]
Dopo:
1. Aggiungi alla configurazione base di iubenda l’opzione reloadOnConsent
:
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/reload_on_consent.html]
2. Definisci isConsentGiven
per controllare i cookie:
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/is_consent_given.html]
3. Sostituisci lo script originale di TripAdvisor con questo:
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/trip_advisor/tripadvisor_badge_after.html]
Read Review Widget
Prima:
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/tripadisor_badge_before.html]
Dopo:
1. Aggiungi alla configurazione base di iubenda l’opzione reloadOnConsent
:
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/reload_on_consent.html]
2. Definisci isConsentGiven
per controllare i cookie:
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/is_consent_given.html]
3. Sostituisci lo script originale di TripAdvisor con questo:
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/trip_advisor/tripadvisor_badge_after.html]
Write Review Widget
Prima:
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/tripadisor_badge_before.html]
Dopo:
1. Aggiungi alla configurazione base di iubenda l’opzione reloadOnConsent
:
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/reload_on_consent.html]
2. Definisci isConsentGiven
per controllare i cookie:
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/is_consent_given.html]
3. Sostituisci lo script originale di TripAdvisor con questo:
[git:pre_html-code@https://github.com/iubenda/cookie-law-solution-codesnippets/blob/master/trip_advisor/tripadvisor_writereview_after.html]
Follow Button
Share Button
Embedded Tweet
UserVoice
Vimeo
Viralize
YouTube
Quanto segue si applica unicamente nei casi in cui non si utilizzi l’opzione di YouTube che permette di includere video senza installare cookie.