Come accennato in precedenza, la sicurezza dei database è difficile. Il DB stesso ha limitati meccanismi di sicurezza intrinseci (fondamentalmente, autenticazione e ruoli/autorizzazione). I DB hanno bisogno di essere protetti, generalmente a livello di rete e di autenticazione - e, ancora, è un tenue livello di protezione.
Il bisogno dei database di essere in grado di fornire dati su richiesta, di immagazzinare tutti quei dati, e di compartimentare e ordinare quei dati è una sfida enorme (anche se è teoricamente semplice). Bloccare i dati dei componenti è una grande sfida.
Le varianti SQL sono standard, e possono essere bloccate entro certi limiti, ma sono famose per i vettori di attacco vulnerabili (in gran parte perché presentano un'enorme superficie di attacco - il cane più grande in gioco è sempre il bersaglio più grande). Le soluzioni basate sul cloud aggiungono un altro livello di complessità (e di mitigazione del rischio di sicurezza, almeno dal punto di vista legale).
Perfezionare la sicurezza di un DB richiede un firewalling intelligente (seriamente, proteggete le vostre porte - usate IDS/IPS se possibile), la convalida dell'input (non permettete query con sintassi strane), e per l'amore di tutto ciò che è santo permettete solo l'ingresso da fonti affidabili (un proxy/reverse proxy è una buona idea).