DB Privacy Hub
Open Source — GPL v2 DB Privacy Hub Hub privacy unificato per l’ecosistema plugin DB. Genera la Privacy Policy che…
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.
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.
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.
5 categorie standard WP Consent API — niente nomi custom che rompono l’integrazione con altri plugin.
IP sempre hashato, UA aggregato di default, segnali Google e Microsoft negati prima dei tag, proxy headers ignorati salvo opt-in esplicito.
Tutte le categorie opzionali disattivate. Cookie non riconosciuti cadono su marketing. Se il geo-targeting fallisce, il banner appare.
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.
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.
Dispatcher centralizzato con mass-assignment protection; handler dedicati con nonce e capability per ogni azione. Valori sensibili (versione del consenso) calcolati solo lato server.
6 lingue (IT, EN, FR, DE, ES, PT), rilevamento automatico dalla lingua del browser. Tutti i testi personalizzabili.
Analytics, pixel, embed (YouTube, Maps, Facebook, Instagram, Vimeo, Spotify…) neutralizzati prima che il browser li esegua. Firme personalizzate per-sito con import/export JSON.
Gli iframe bloccati mostrano un placeholder accessibile (navigabile da tastiera) con pulsante di caricamento puntuale — attivi il singolo video senza concedere l’intera categoria.
Alla revoca del consenso i cookie delle categorie non concesse vengono rimossi dal browser, wildcard inclusi (_ga_*). Revocare è facile quanto consentire — Art. 7(3).
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.
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.
Scansione AJAX asincrona, 64 cookie noti pre-classificati, card “Modifiche dall’ultima scansione” che evidenzia tracker nuovi o rimossi — accountability Art. 5(2).
Segnali negati di default iniettati prima dei tag, aggiornati al consenso e alla revoca. Mapping personalizzabili via filtri. Tutti opt-in.
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.
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_has_consent('statistics') risponde correttamente. Interoperabilità automatica con tutti i plugin che rispettano lo standard.
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.
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.
5 categorie standard WP Consent API — niente nomi custom. Label localizzate in italiano nell’interfaccia utente, identificatori interni standard per massima interoperabilità.
| Categoria | Identificatore | Esempi | Consenso |
|---|---|---|---|
| Tecnici (necessari) | functional | Sessione WP, CSRF, dbcm_consent | Non richiesto |
| Preferenze | preferences | Lingua, tema, impostazioni UI | Richiesto |
| Statistiche | statistics | Google Analytics, Hotjar, Matomo | Richiesto |
| Statistiche anonime | statistics-anonymous | Plausible, Umami (cookieless) | Richiesto |
| Marketing | marketing | Meta Pixel, YouTube, Facebook, TikTok | Richiesto |
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.
| Pagina | Funzione |
|---|---|
| Dashboard | Stato generale, avviso di coerenza banner-policy, scorciatoie rapide |
| Banner & Aspetto | Layout, colori, testi, lingue, versione del consenso (bottone “Richiedi nuovo consenso”) |
| Scanner | Avvia scansione, risultati per categoria, report differenziale, riclassificazione manuale |
| Firme personalizzate | Servizi e cookie non coperti dal database interno, pattern substring/regex, import/export JSON |
| Cookie Policy | Genera e aggiorna automaticamente la pagina WordPress |
| Servizi dichiarati | Registro degli embed attivi previo consenso: voci automatiche dal blocco + dichiarazione manuale |
| Registro consensi | Log con statistiche, filtri, versioni, paginazione, export CSV/JSON |
| Avanzate | GCM v2, segnali Microsoft, Google Fonts, DNT/GPC, geo-targeting, pulizia dati |
| Funzionalità | Prezzo |
|---|---|
| Banner multilingua (6 lingue, 3 layout) | GRATIS |
| Blocco preventivo con database firme (43 servizi) + firme personalizzate | GRATIS |
| Placeholder click-to-load con consenso granulare | GRATIS |
| Cancellazione reattiva dei cookie alla revoca | GRATIS |
| Scanner con 64 cookie noti + report differenziale | GRATIS |
| Generatore Cookie Policy + registro servizi dichiarati | GRATIS |
| Versioning del consenso con valore probatorio | GRATIS |
| Google Consent Mode v2, Microsoft UET, Clarity ConsentV2 | GRATIS |
| Registro consensi + export CSV e JSON | GRATIS |
| Integrazione WP Consent API e DB Privacy Hub | GRATIS |
| DNT/GPC, geo-targeting, rimozione Google Fonts | GRATIS |
| API pubblica JS + hook PHP, auto-aggiornamento da GitHub | GRATIS |
| Supporto | Community (GitHub Issues) |
Nessun tier Pro. Nessun limite di utilizzo. Nessun costo nascosto.
Gli aggiornamenti successivi arrivano automaticamente tramite il pannello Plugin di WordPress, senza passare per il repository ufficiale.
// 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;
});
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
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).
Firma Facebook per contenuti incorporati
facebook.com/plugins/ — post, video, like button) non erano coperti da alcuna firma e caricavano prima del consenso (era gestito solo il Meta Pixel)facebook con cookie tipici (fr, datr, sb) e informativa Meta: in cascata sistemano blocco, placeholder click-to-load, registro dichiarati e scannermeta-pixel: nessuna doppia attribuzioneRegistro dei servizi dichiarati
DBCM_Signatures::identify_url()), con throttling e finestra di validità di 30 giorni: embed rimosso, voce che decade da soladbcm_declared_services_register per DB Privacy Hub ≥ 1.4.0Versioning del consenso + refactor admin
consent_version nel registro consensi (schema 3, migrazione additiva), valorizzata lato server: non falsificabile. Esposta in tabella, export e integrazione Hubclass-admin.php (2.871 righe) spezzato in guscio comune + una classe per pagina — refactor meccanico, zero cambi di comportamentoConsent Mode v2, segnali Microsoft, Google Fonts, trasparenza fornitori
<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)Database firme, cancellazione reattiva, click-to-load
role="region", tastiera), caricamento del singolo contenuto senza consenso persistente all’intera categoriaLinking versione Privacy Policy + filter Hub consensi
policy_version, ogni consenso linkato alla versione della Privacy Policy in vigore (via DBPH_Policy_Archive). Audit trail Art. 7.1dbph_consents_register: i consensi cookie compaiono nel Registro consensi unificato dell’Hub (1.3.0+)Integrazione DB Privacy Hub
DBCM_Policy_Generator::get_sections() pubblico; sezione “Titolare” letta dall’Hub; filter unificato dbph_processing_registerRebuild completo — Breaking change
marketing, policy generator modulare (Garante 2021), admin UI completa, GitHub Updater, uninstall.php, DNT/GPC, geo-targeting UE/EEA/UKOpen Source — GPL v2 DB Privacy Hub Hub privacy unificato per l’ecosistema plugin DB. Genera la Privacy Policy che…
Open Source — GPL v2 DB SEO Manager SEO completa per WordPress, costruita prima di tutto per il GDPR. Niente…
DB Site Analytics Tracciamento visite server-side: nessun cookie, nessun servizio esterno, solo visite reali. I dati restano nel tuo database.…