Modelo / Escenario de amenaza
Me preocupa un modelo de subproceso, donde ciertos datos confidenciales se almacenan en una base de datos. No es tan confidencial como la información o las contraseñas de la tarjeta de crédito, sino los números de teléfono, las direcciones de correo electrónico, etc. Asumamos que temo una fuga de base de datos, donde un atacante puede leer más información de la que se le permite. ¿Qué puede hacer uno como administrador contra eso?
Lo que consideré
Supongamos que mantenemos actualizado el software que organiza y distribuye los datos y parchamos todas las vulnerabilidades tan rápido como hay un parche disponible.
Consideré que podemos cifrar los datos confidenciales con, por ejemplo, la contraseña del usuario. (No el hash almacenado en la base de datos). Sin embargo, el consenso es que no es una buena práctica guardar datos cifrados en una base de datos. Además, los datos se perderían si un usuario olvida su contraseña.
También consideré encriptar todos los datos con una clave almacenada en el entorno del sistema operativo, pero esto probablemente no ayudaría contra las fugas en forma de, por ejemplo. Inyecciones de SQL, a menos que uno mantenga los datos cifrados hasta que un usuario inicie sesión y luego descifre solo la parte de los datos de los usuarios hasta que cierre la sesión nuevamente.
Entonces, mi pregunta es, ¿cuál sería una manera sensata de hacerlo en el escenario mencionado?