Come già detto da altri utenti, la crittografia dell'intero database è probabilmente eccessiva, il che significa che si perderebbero troppe prestazioni e si otterrebbe poca sicurezza in più, dal momento che si crittograferebbero i campi che non è necessario crittografare.
Pensaci in questo modo: immagina che un utente malintenzionato sia riuscito ad accedere a tutti i dati nel tuo database grazie a un'iniezione SQL. Quale informazione dovrebbe assolutamente non vedere l'attaccante e quali informazioni invece non sono così importanti, il che significa che anche se fosse in grado di leggerlo, non potrebbe fare nulla con esso? Un esempio del primo tipo sono le password degli utenti e uno dei molti esempi del secondo tipo potrebbe essere il colore preferito dell'utente, se per qualche motivo è necessario memorizzare queste informazioni nel database: D
Quindi, la crittografia dell'intero database non vale il tempo e la perdita di prestazioni, ma ci sono alcuni campi che devono assolutamente essere crittografati (password, numeri di carta di credito, SSN, ID di sessione e potresti anche aggiungere informazioni personali dell'utente a questo elenco, come i numeri di telefono ecc., gli utenti sarebbero grati per questo :)).
Non dimenticare che se l'utente malintenzionato ha accesso al tuo database, potrebbe finalmente accedere a tutte le informazioni in esso contenute anche se alcuni campi sono stati crittografati, ha solo bisogno di più tempo per farlo. E se hai informazioni molto importanti nel tuo database, questo tempo extra è estremamente importante.
E infine un suggerimento: investire tempo nella prevenzione degli attacchi SQL injection. Questa è probabilmente la tecnica più utilizzata con cui un utente malintenzionato può accedere illegittimamente al tuo database.