在缓存中安全地存储密码哈希值

时间:2013-12-08 00:15:15

标签: security java-ee authentication caching hash

我正在将后端服务器作为个人项目。目前,当有人注册时,他们的密码用Bcrypt进行哈希处理,并保存在数据库中。但是,每次查询数据库我需要验证请求来自经过身份验证的用户似乎太多了。结果,我开始怀疑在服务器的内存中缓存它们。我假设在此内存中存储未散列的密码是不安全的。实现这一目标最安全的方法是什么?我可以缓存Bcrypte的密码副本,然后只验证用户的密码是否与缓存的Bcrypt副本匹配,但如果可以,我也想尽可能少地使用bcrypt。我假设将密码及其Bcrypt版本一起存储在缓存中,即使没有链接到用户名,也是个坏主意。在保持安全+性能的同时,还有什么我可以做的吗?

1 个答案:

答案 0 :(得分:0)

缓存明文密码&它的哈希值通常不是一个好主意。安全带来成本,这是您的表现。

如果您不需要一流的安全性(即较慢的散列),您可以选择基于SHA512的快速散列解决方案。

对于数据库性能,请尝试调整数据库缓存以便更快地检索。

相关问题