私信  •  关注

veprolet

veprolet 最近创建的主题
veprolet 最近回复了
4 年前
回复了 veprolet 创建的主题 » 我应该加密MongoDB中的用户名/电子邮件字段吗?

这个问题真的应该在infosec Stackexchange上提出。

加密通常是毫无意义的,因为您需要访问密钥才能使用加密的数据库。这意味着您需要将它保存在数据库旁边。如果你的服务器受到攻击,黑客就会用密钥解密数据库。当然,这比什么都不做要好,因为黑客可能(也许不太可能)只会危害数据库。Horatiu Jeflea hovewer提到了加密数据库的其他重要原因,如果您不是单独在项目中工作,则应该特别考虑这些原因。

只有在不需要显示用户名的情况下,散列用户名才是可能的,但是用户名通常是公共的,所以它对安全性的提高很小。

散列电子邮件是一个有趣的问题。你问他们是有原因的。您可能需要联系您的用户。如果你把它们杂凑起来,你就做不到,如果你不需要这样做,那么你不需要(也不应该)首先保存它们。但是,如果它们只是身份验证过程的一部分,那么这将是可能的解决方案。

彩虹表不能真正打破现代哈希算法,尽管最大的缓解是前面提到的salt,这将使它 很多 对大多数散列攻击来说更难。您还必须确保您使用的不是像md5这样易受攻击的,而是像sha256这样安全的或足够的bcrypt。你应该用其中一个来散列密码。还要注意的是,您可以对所有散列字段使用相同的salt,salt甚至可以是(这会减少一点安全性)一个公共字段(username?)不用盐的理由很少。

总而言之:你不能散列它们,加密可能不值得,除非你能充分地隔离密钥,或者因为外部黑客以外的原因而需要它