Skip to content

DB Cookie Manager

v3.6.1
Open Source — GPL v2

DB Cookie Manager

Gestione GDPR-compliant dei cookie per WordPress. Banner multilingua, blocco preventivo con database firme di 43 servizi, scanner automatico, Cookie Policy che documenta anche gli embed bloccati, consenso versionato con valore probatorio, Google Consent Mode v2 e segnali Microsoft — tutto in un plugin, senza servizi esterni.

v3.6.1 WordPress 6.0+ PHP 7.4+ WP Consent API GDPR · Garante 2021 GCM v2 · UET · Clarity

Versione 3.6.1 · Davide Bertolino · Licenza GPL v2

Breaking change — upgrade da 2.x

La versione 3.0.0 è una riscrittura completa, non retrocompatibile con la 2.x. Chi aggiorna deve svuotare le option dbcm_* e ricreare le tabelle (o reinstallare da zero). Il motivo è spiegato sotto. Gli aggiornamenti all’interno della serie 3.x sono invece sempre non distruttivi: migrazioni additive dello schema, consensi esistenti preservati.

Perché un rebuild da zero

La 2.0.1 funzionava, ma aveva compromessi strutturali difficili da patchare in modo incrementale: categorie cookie non standard (incompatibili con la WP Consent API), schema del log con UA completo e IP non hashato, blocker con falsi positivi su Cloudflare CDN, niente GitHub Updater, niente cleanup alla disinstallazione.

Poche installazioni esistenti, costo di migrazione basso, vantaggio di ripartire senza compromessi alto. Scelta deliberata documentata nell’ARCHITECTURE.md.

Principi del rebuild

Interoperabilità

5 categorie standard WP Consent API — niente nomi custom che rompono l’integrazione con altri plugin.

Privacy by design

IP sempre hashato, UA aggregato di default, segnali Google e Microsoft negati prima dei tag, proxy headers ignorati salvo opt-in esplicito.

Default conservativi

Tutte le categorie opzionali disattivate. Cookie non riconosciuti cadono su marketing. Se il geo-targeting fallisce, il banner appare.

Estensibilità esplicita

Hook e filtri PHP documentati come API pubblica (da dbcm_blocker_patterns a dbcm_declared_services_register). Contratto di stabilità: i nomi non cambiano senza major version bump.

Zero dipendenze esterne

Nessun servizio cloud, nessuna telemetria, nessun CDN per funzionalità core. Il database firme è in bundle e si aggiorna con le release. L’unica connessione esterna è GitHub Updater.

Sicurezza admin

Dispatcher centralizzato con mass-assignment protection; handler dedicati con nonce e capability per ogni azione. Valori sensibili (versione del consenso) calcolati solo lato server.

Caratteristiche principali

Banner

Multilingua con auto-detect

6 lingue (IT, EN, FR, DE, ES, PT), rilevamento automatico dalla lingua del browser. Tutti i testi personalizzabili.

Blocco preventivo

Database firme di 43 servizi

Analytics, pixel, embed (YouTube, Maps, Facebook, Instagram, Vimeo, Spotify…) neutralizzati prima che il browser li esegua. Firme personalizzate per-sito con import/export JSON.

Click-to-load

Embed con consenso granulare

Gli iframe bloccati mostrano un placeholder accessibile (navigabile da tastiera) con pulsante di caricamento puntuale — attivi il singolo video senza concedere l’intera categoria.

Revoca effettiva

Cancellazione reattiva dei cookie

Alla revoca del consenso i cookie delle categorie non concesse vengono rimossi dal browser, wildcard inclusi (_ga_*). Revocare è facile quanto consentire — Art. 7(3).

Cookie Policy

Documenta anche ciò che blocca

Generatore conforme Garante 2021 con registro dei servizi dichiarati: gli embed che lo scanner non può vedere (perché bloccati) compaiono comunque in policy, con cookie tipici e link alle informative.

Consenso versionato

Valore probatorio completo

Ogni scelta è legata alla versione della configurazione dei trattamenti e della Privacy Policy in vigore. Cambi i trattamenti? Un click e tutti i visitatori riesprimono la scelta.

Scanner

Report differenziale

Scansione AJAX asincrona, 64 cookie noti pre-classificati, card “Modifiche dall’ultima scansione” che evidenzia tracker nuovi o rimossi — accountability Art. 5(2).

Consent signals

Google CM v2, Microsoft UET, Clarity

Segnali negati di default iniettati prima dei tag, aggiornati al consenso e alla revoca. Mapping personalizzabili via filtri. Tutti opt-in.

Consent log

GDPR-friendly by default

IP hashato SHA-256 + salt site-specifico, UA aggregato, versione consenso e versione policy per riga, export CSV e JSON, schema versionato con migrazioni additive.

Google Fonts

Rimozione dei riferimenti remoti

Opzione che elimina stylesheet e preconnect verso i server Google: l’IP del visitatore non viene trasmesso prima di ogni consenso (rilevante dopo Trib. Monaco 2022).

WP Consent API

Integrazione nativa

wp_has_consent('statistics') risponde correttamente. Interoperabilità automatica con tutti i plugin che rispettano lo standard.

API pubblica

JavaScript e PHP

window.DBCM con metodi documentati, evento DOM dbcm:consent, hook e filtri PHP con contratto di stabilità. DNT/GPC come opt-out automatico, geo-targeting UE/EEA/UK.

Integrazione con DB Privacy Hub

Se DB Privacy Hub è installato, l’integrazione è automatica e bidirezionale — nessuna configurazione richiesta.

Il Cookie Manager dichiara i suoi trattamenti nel registro privacy unificato dell’Hub via filter dbph_processing_register. La sezione “Titolare del trattamento” della Cookie Policy legge automaticamente i dati salvati nell’Hub (dbph_titolare_*). Il metodo pubblico DBCM_Policy_Generator::get_sections() espone le sezioni della Cookie Policy, riusate dall’Hub per la Privacy Policy completa.

Doppio versioning probatorio: ogni consenso raccolto dal banner viene linkato sia alla versione della Privacy Policy in vigore (policy_version, da DBPH_Policy_Archive::get_current_version_id()) sia alla versione della configurazione dei trattamenti DBCM (consent_version, dalla 3.5.0). In caso di ispezione puoi dimostrare “questa persona ha accettato il giorno X, leggendo la Privacy Policy v#7, con questa esatta configurazione di tracker attivi”.

Filter dbph_consents_register: i consensi cookie compaiono automaticamente nella vista cronologica unificata di Privacy → Registro consensi dell’Hub, insieme ai consensi di altri plugin DB compatibili.

Filter dbcm_declared_services_register (dalla 3.6.0): il registro dei servizi dichiarati è esposto all’Hub, che dalla versione 1.4.0 potrà costruirci la sezione “Contenuti incorporati” della Privacy Policy — fonte unica di verità: aggiungi un embed e compare in entrambe le policy alla rigenerazione.

Categorie cookie

5 categorie standard WP Consent API — niente nomi custom. Label localizzate in italiano nell’interfaccia utente, identificatori interni standard per massima interoperabilità.

CategoriaIdentificatoreEsempiConsenso
Tecnici (necessari)functionalSessione WP, CSRF, dbcm_consentNon richiesto
PreferenzepreferencesLingua, tema, impostazioni UIRichiesto
StatistichestatisticsGoogle Analytics, Hotjar, MatomoRichiesto
Statistiche anonimestatistics-anonymousPlausible, Umami (cookieless)Richiesto
MarketingmarketingMeta Pixel, YouTube, Facebook, TikTokRichiesto

Pannello di amministrazione

Menu laterale Cookie Manager con dashboard + 7 sottopagine. Dalla 3.5.1 ogni pagina vive in una classe dedicata, con handler propri e helper condivisi.

PaginaFunzione
DashboardStato generale, avviso di coerenza banner-policy, scorciatoie rapide
Banner & AspettoLayout, colori, testi, lingue, versione del consenso (bottone “Richiedi nuovo consenso”)
ScannerAvvia scansione, risultati per categoria, report differenziale, riclassificazione manuale
Firme personalizzateServizi e cookie non coperti dal database interno, pattern substring/regex, import/export JSON
Cookie PolicyGenera e aggiorna automaticamente la pagina WordPress
Servizi dichiaratiRegistro degli embed attivi previo consenso: voci automatiche dal blocco + dichiarazione manuale
Registro consensiLog con statistiche, filtri, versioni, paginazione, export CSV/JSON
AvanzateGCM v2, segnali Microsoft, Google Fonts, DNT/GPC, geo-targeting, pulizia dati

Quanto costa

FunzionalitàPrezzo
Banner multilingua (6 lingue, 3 layout)GRATIS
Blocco preventivo con database firme (43 servizi) + firme personalizzateGRATIS
Placeholder click-to-load con consenso granulareGRATIS
Cancellazione reattiva dei cookie alla revocaGRATIS
Scanner con 64 cookie noti + report differenzialeGRATIS
Generatore Cookie Policy + registro servizi dichiaratiGRATIS
Versioning del consenso con valore probatorioGRATIS
Google Consent Mode v2, Microsoft UET, Clarity ConsentV2GRATIS
Registro consensi + export CSV e JSONGRATIS
Integrazione WP Consent API e DB Privacy HubGRATIS
DNT/GPC, geo-targeting, rimozione Google FontsGRATIS
API pubblica JS + hook PHP, auto-aggiornamento da GitHubGRATIS
SupportoCommunity (GitHub Issues)

Nessun tier Pro. Nessun limite di utilizzo. Nessun costo nascosto.

Installazione

  1. Scarica il file ZIP da questa pagina o da GitHub Releases
  2. WordPress admin → Plugin → Aggiungi nuovo → Carica plugin → seleziona ZIP → Installa ora → Attiva
  3. Vai a Cookie Manager nel menu sidebar
  4. Configura in ordine: Banner & Aspetto → Scanner (avvia scansione) → Cookie Policy (crea pagina) → Avanzate
  5. Visita le pagine del sito con contenuti incorporati: il registro Servizi dichiarati si popola da solo e la Cookie Policy li documenta alla rigenerazione
  6. Apri il sito in navigazione privata e verifica che il banner appaia e che gli embed mostrino il placeholder

Gli aggiornamenti successivi arrivano automaticamente tramite il pannello Plugin di WordPress, senza passare per il repository ufficiale.

API JavaScript

// Verifica consenso prima di caricare analytics
if (window.DBCM.hasConsent('statistics')) {
    loadGoogleAnalytics();
}

// Reagisci ai cambi in tempo reale
window.DBCM.onConsent(function(consent, type) {
    // type: 'accept_all' | 'reject_all' | 'custom'
    console.log('Marketing:', consent.marketing);
});

// Apri il modal preferenze (es. da un link footer)
window.DBCM.openPreferences();

Evento DOM alternativo per integrazioni senza dipendenza da window.DBCM:

document.addEventListener('dbcm:consent', function(ev) {
    var consent = ev.detail.consent; // { functional, preferences, statistics, ... }
    var type    = ev.detail.type;
});

Struttura del plugin

db-cookie-manager/
├── db-cookie-manager.php          # bootstrap, hook, costanti
├── ARCHITECTURE.md                # decisioni architetturali
├── README.md
├── uninstall.php                  # cleanup completo alla disinstallazione
├── assets/
│   ├── css/
│   │   ├── banner.css             # stili banner frontend
│   │   ├── admin.css              # stili admin plugin
│   │   └── db-admin-ui.css        # design system condiviso suite DB
│   └── js/
│       ├── banner.js              # logica frontend (window.DBCM, cv, GCM/UET/Clarity)
│       └── admin.js               # UI admin
└── inc/
    ├── data/
    │   └── signatures.php         # database firme: 43 servizi service-centric
    ├── class-admin.php            # guscio comune: menu, dispatcher, helper
    ├── class-admin-page-*.php     # 8 pagine admin, una classe ciascuna (3.5.1)
    ├── class-banner.php           # rendering e config banner
    ├── class-blocker.php          # blocco preventivo + registrazione dichiarati
    ├── class-consent-api.php      # has_consent() a 3 livelli, validazione versione
    ├── class-consent-log.php      # registro + export, schema 3
    ├── class-consent-signals.php  # GCM v2, Microsoft UET, Clarity
    ├── class-cookie-database.php  # 64 cookie noti, label localizzate
    ├── class-declared-services.php # registro servizi dichiarati (3.6.0)
    ├── class-policy-generator.php # Cookie Policy modulare + sezione dichiarati
    ├── class-privacy-declarations.php # integrazione registro DB Privacy Hub
    ├── class-scanner.php          # scanner AJAX + report differenziale
    ├── class-settings.php         # sanitize, option, consent_version
    ├── class-signatures.php       # firme: viste blocker/scanner, identify_url
    ├── class-shortcode.php        # 
    └── class-updater.php          # GitHub auto-updater
      

Domande frequenti

Il plugin è davvero conforme al GDPR?

Fornisce gli strumenti tecnici per essere conformi: consenso esplicito e versionato, blocco preventivo, revoca effettiva con pulizia dei cookie, registro con valore probatorio, policy che documenta anche i servizi bloccati, default conservativi. La conformità completa dipende dalla configurazione e dalle scelte editoriali. Per rassicurazione legale, una revisione da DPO o avvocato resta necessaria.

Perché la Cookie Policy elenca servizi che lo scanner non ha trovato?

È il registro dei servizi dichiarati (3.6.0). Lo scanner non può vedere gli embed bloccati proprio perché il blocco funziona: quando richiede la pagina, gli iframe sono già stati sostituiti dai placeholder. Il blocco però sa cosa sta bloccando, e lo registra: quei servizi compaiono in policy come “attivi previo consenso”, con cookie tipici e link alle informative. Senza questa sezione la policy non giustificherebbe il consenso richiesto dal banner.

Ho aggiunto un nuovo tracker al sito: i consensi già raccolti valgono ancora?

Per il GDPR il consenso è specifico rispetto ai trattamenti presentati al momento della scelta: un tracker aggiunto dopo non è coperto. Dalla 3.5.0 il plugin gestisce il caso: il bottone “Richiedi nuovo consenso a tutti gli utenti” (Banner → Contenuto) incrementa la versione del consenso, i cookie con versione precedente vengono trattati come assenza di scelta e il banner riappare. Il registro consensi salva la versione di ogni scelta, a fini probatori.

Il blocco preventivo rompe il mio sito?

Solo se il tema dipende esattamente da uno script di tracking bloccato, che è raro. Cloudflare CDN, Font Awesome, jQuery da CDN non sono bloccati; PayPal e Stripe (antifrode/pagamento) non sono bloccabili per design. In caso di problemi, disabilita “Blocco preventivo” nella pagina Scanner o aggiungi eccezioni via filtro dbcm_blocker_patterns.

Un servizio non è nel database firme: come lo gestisco?

Pagina Firme personalizzate: aggiungi servizio, cookie, pattern di blocco (substring o regex) e pulizia reattiva; le firme si esportano/importano in JSON tra siti. Per la sola comparsa in policy senza blocco, usa Servizi dichiarati con il form libero.

Funziona in multisite?

Sì. Ogni sito ha le proprie option e il proprio log. La disinstallazione è multisite-aware.

Posso esportare il registro per richieste GDPR?

Sì — Registro consensi → Scarica CSV o Scarica JSON, con filtri per tipo e data. Ogni riga include la versione del consenso e della Privacy Policy in vigore al momento della scelta.

È compatibile con WP Consent API?

È integrato nativamente. wp_has_consent('statistics') risponde correttamente anche su siti senza WP Consent API installata, grazie all’helper DBCM_Consent_API::has_consent() che usa una strategia a 3 livelli.

Come gestisce gli IPv6?

Hashing SHA-256 dell’IP completo (v4 o v6) + salt site-specifico. Irreversibile in pratica per analisi forensi non mirate. Lo stesso IP produce sempre lo stesso hash, permettendo correlazioni “stesso visitatore” senza rivelare l’IP originale.

Supporta il framework IAB TCF per la pubblicità personalizzata?

No, per scelta dichiarata: servire annunci personalizzati in SEE/UK con AdSense/Ad Manager richiede una CMP certificata da Google e registrata IAB con ricertificazione annuale — insostenibile per un plugin indipendente. Chi usa AdSense può affiancare la CMP di Google; DB Cookie Manager copre tutti gli altri scenari (analytics, marketing, embed, segnali Google e Microsoft).

Changelog

v3.6.12026

Firma Facebook per contenuti incorporati

  • Chiuso un gap di blocco: gli embed Facebook via iframe (facebook.com/plugins/ — post, video, like button) non erano coperti da alcuna firma e caricavano prima del consenso (era gestito solo il Meta Pixel)
  • Nuova firma facebook con cookie tipici (fr, datr, sb) e informativa Meta: in cascata sistemano blocco, placeholder click-to-load, registro dichiarati e scanner
  • Il caricamento via SDK JS resta attribuito a meta-pixel: nessuna doppia attribuzione
v3.6.02026

Registro dei servizi dichiarati

  • Risolta l’incoerenza documentale strutturale: la policy elencava solo cookie tecnici perché lo scanner non può vedere gli embed che il blocco ha già riscritto in placeholder
  • Registrazione automatica al momento del blocco (nuovo DBCM_Signatures::identify_url()), con throttling e finestra di validità di 30 giorni: embed rimosso, voce che decade da sola
  • Nuova sezione in policy “Contenuti incorporati e servizi attivi previo consenso”, con dicitura di blocco predefinito e rinvio alle informative delle terze parti (Linee Guida Garante 10/06/2021)
  • Nuova pagina admin Servizi dichiarati: voci automatiche + dichiarazione manuale (pick-list dalle firme o form libero)
  • Validazione di coerenza banner-policy con avviso in dashboard
  • Filter dbcm_declared_services_register per DB Privacy Hub ≥ 1.4.0
v3.5.0 / v3.5.12026

Versioning del consenso + refactor admin

  • Ogni consenso è legato a una versione della configurazione dei trattamenti (Art. 4.11: il consenso è specifico rispetto a ciò che era presentato al momento della scelta)
  • Bottone admin “Richiedi nuovo consenso a tutti gli utenti”: incrementa la versione, i cookie precedenti valgono come assenza di scelta, lato client e server — nessun re-prompt automatico (evita la consent fatigue)
  • Colonna consent_version nel registro consensi (schema 3, migrazione additiva), valorizzata lato server: non falsificabile. Esposta in tabella, export e integrazione Hub
  • Retrocompatibilità totale: l’aggiornamento del plugin non ri-presenta il banner a nessuno; solo il bump esplicito lo fa
  • 3.5.1: class-admin.php (2.871 righe) spezzato in guscio comune + una classe per pagina — refactor meccanico, zero cambi di comportamento
v3.4.x2026

Consent Mode v2, segnali Microsoft, Google Fonts, trasparenza fornitori

  • 3.4.0 — Google Consent Mode v2 (segnali negati nel <head> prima dei tag, update al consenso, mapping via dbcm_gcm_mapping); rimozione riferimenti remoti a Google Fonts (l’IP non viene trasmesso prima del consenso — Trib. Monaco 2022); report differenziale scanner (cookie nuovi/rimossi tra scansioni, accountability Art. 5.2)
  • 3.4.1 — colonna “Trasferimento” in policy: cookie con trasferimento extra-UE segnalati con nota sulle garanzie del Capo V (SCC / Data Privacy Framework)
  • 3.4.2 — il nome del fornitore in policy linka la sua informativa privacy quando noto al database firme (Art. 13.1.e-f)
  • 3.4.3 — segnali di consenso Microsoft: UET Consent Mode (Microsoft Advertising) e Clarity ConsentV2, entrambi opt-in, denied-by-default, mapping via filtri. Scope non-TCF documentato
v3.3.x2026

Database firme, cancellazione reattiva, click-to-load

  • Database firme service-centric in bundle (42 servizi): fonte unica per blocco, scansione, classificazione e policy
  • Cancellazione reattiva: alla revoca (o al load senza consenso) i cookie delle categorie non concesse vengono rimossi dal browser, wildcard inclusi — la revoca è effettiva, non solo formale (Art. 7.3, 17, 5.1.e)
  • Pagina Firme personalizzate: servizi e cookie custom con pattern substring/regex, pulizia reattiva e import/export JSON; le regex malformate degradano a substring
  • Placeholder click-to-load per gli embed bloccati: accessibile (role="region", tastiera), caricamento del singolo contenuto senza consenso persistente all’intera categoria
  • Suite di test completa in CI: unit (matrice PHP 7.4–8.3), integration con MySQL reale, e2e Playwright, mutation testing
v3.2.02026

Linking versione Privacy Policy + filter Hub consensi

  • Schema log v1 → v2: colonna policy_version, ogni consenso linkato alla versione della Privacy Policy in vigore (via DBPH_Policy_Archive). Audit trail Art. 7.1
  • Filter dbph_consents_register: i consensi cookie compaiono nel Registro consensi unificato dell’Hub (1.3.0+)
v3.1.02026

Integrazione DB Privacy Hub

  • DBCM_Policy_Generator::get_sections() pubblico; sezione “Titolare” letta dall’Hub; filter unificato dbph_processing_register
v3.0.0 – v3.0.22026

Rebuild completo — Breaking change

  • Integrazione nativa WP Consent API (5 categorie standard), consent log GDPR-friendly (IP hashato, UA aggregato, export JSON, schema versionato), 64 cookie noti con fallback marketing, policy generator modulare (Garante 2021), admin UI completa, GitHub Updater, uninstall.php, DNT/GPC, geo-targeting UE/EEA/UK
v2.0.x2024
  • Banner frontend con 3 layout, blocco preventivo, placeholder iframe, registro consensi, multilingua, accessibilità WCAG
v1.0.02024
  • Scanner AJAX, database 50+ cookie noti, generatore Cookie Policy

Other Plugins

v1.3.0

DB Privacy Hub

Open Source — GPL v2 DB Privacy Hub Hub privacy unificato per l’ecosistema plugin DB. Genera la Privacy Policy che…

v1.3.0

DB SEO Manager

Open Source — GPL v2 DB SEO Manager SEO completa per WordPress, costruita prima di tutto per il GDPR. Niente…

v3.0.3

DB Site Analytics

DB Site Analytics Tracciamento visite server-side: nessun cookie, nessun servizio esterno, solo visite reali. I dati restano nel tuo database.…