¿Almacenar contraseñas de usuario en la base de datos NoSQL?

7

Actualmente estoy codificando el backend de un sitio web y no he encontrado un artículo en el que se discuta esto. Quiero almacenar todos los datos de mi aplicación en MongoDB, pero me gustaría dividir mi información sensible del usuario en una base de datos MySQL. Mi razonamiento es que solo se accederá a la base de datos MySQL para la autenticación, pero me gustaría almacenar los nombres de usuario y las contraseñas en una base de datos que sea ACID. El beneficio adicional es que los datos del usuario están físicamente separados de la entidad del usuario, lo que me gusta.

Mi pregunta es, ¿es esto necesario? ¿Debo mantener todos mis datos en MongoDB?

    
pregunta MikeG 12.09.2012 - 19:25
fuente

1 respuesta

4

Si crees que el motor de base de datos que planeas usar no es lo suficientemente seguro, entonces no te aconsejaría que lo utilices para nada. Si es lo suficientemente seguro, entonces la complejidad agregada de dos API de bases de datos diferentes hará que tu vida sea más difícil y no afecte realmente a un atacante (de todos modos, simplemente la descargarán en un archivo).

Si desea que los datos estén separados físicamente, puede colocar la base de datos de contraseñas en una máquina separada de sus otros datos.

Si hash correctamente tus contraseñas (PBKDF2, bcrypt o scrypt; alto costo / recuento de iteraciones), entonces su base de datos de contraseñas no debería ser muy útil para los atacantes de todos modos, excepto en el caso de contraseñas estúpidamente débiles.

Con respecto al cumplimiento de ACID: MongoDB tiene operaciones atómicas , simplemente no tiene múltiples < a href="http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart"> document transacciones, que presumiblemente no necesita en una base de datos que solo tiene una colección .

    
respondido por el Brendan Long 12.09.2012 - 22:58
fuente

Lea otras preguntas en las etiquetas