在 NoSQL 数据库中存储用户密码?

信息安全 密码 验证 数据库 mysql mongodb
2021-08-17 13:37:38

我目前正在编写网站的后端代码,但我还没有遇到过讨论这个问题的文章。我想将所有应用程序数据存储在 MongoDB 中,但我想将敏感的用户信息拆分到 MySQL 数据库中。我的理由是 MySQL 数据库只会被访问以进行身份​​验证,但我想将用户名和密码存储在 ACID 的数据库中。额外的好处是用户的数据与用户实体本身在物理上是分开的,这是我喜欢的。

我的问题是,这有必要吗?我应该将所有数据保存在 MongoDB 中吗?

1个回答

如果您认为您计划使用的数据库引擎不够安全,那么我不建议您将它用于任何事情。如果它足够安全,那么两个不同的数据库 API 所增加的复杂性将使您的生活更加艰难,并且不会真正影响攻击者(他们只会将其转储到文件中)。

如果您希望数据在物理上分开,您可以将密码数据库与其他数据放在不同的机器上。

如果您正确地散列您的密码(PBKDF2、bcrypt 或 scrypt;高成本/迭代次数),那么您的密码数据库无论如何对攻击者都不是很有用,除非是愚蠢的弱密码。

关于 ACID 合规性:MongoDB 确实有原子操作,它只是没有多文档事务,在只有一个集合的数据库中你可能不需要