社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

veprolet

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

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

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

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

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

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

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