web-dev-qa-db-fra.com

Stocker les mots de passe utilisateur dans la base de données NOSQL?

Je codis actuellement le backend d'un site Web et je n'ai pas rencontré un article dans lequel cela est discuté. Je souhaite stocker toutes mes données de candidature à MongoDB, mais je voudrais diviser mes informations de l'utilisateur sensibles dans une base de données MySQL. Mon rationnel est que la base de données MySQL ne sera accessible que pour l'authentification, mais je souhaite stocker des noms d'utilisateur et des mots de passe dans une DATBase acide. L'avantage supplémentaire est que les données de l'utilisateur sont physiquement séparées de l'entité utilisateur elle-même, que j'aime.

Ma question est que c'est nécessaire? Devrais-je garder toutes mes données à MongoDB?

7
MikeG

Si vous pensez que le moteur de base de données que vous prévoyez d'utiliser n'est pas assez sécurisé, je ne le conseillerais pas pour quoi que ce soit. S'il est suffisamment sécurisé, la complexité accrue de deux API de base de données différentes vous fera de votre vie plus difficile et n'affectera pas vraiment un attaquant (ils vont simplement le jeter dans un fichier de toute façon).

Si vous souhaitez que les données soient séparées physiquement, vous pouvez mettre la base de données de mot de passe sur une machine distincte de vos autres données.

Si vous HASH correctement vos mots de passe (PBKDF2, BCRYPT ou SCRYPT; Compte de coût/itération), votre base de passe de mot de passe ne devrait pas être très utile aux attaquants de toute façon, sauf dans le cas des mots de passe stupidement faibles.

En ce qui concerne la conformité acide: MongoDB a - Opérations atomiques , il n'a tout simplement pas de transactions multi- document , qui ne vous trouvez probablement pas besoin dans une base de données qui n'a qu'un - collection .

4
Brendan Long