【发布时间】:2019-11-20 00:29:36
【问题描述】:
我正在创建一个需要安全执行身份验证的 Web 应用程序。阅读大量文章和帖子,我对实现得出以下结论。
前端密码散列:使用 bcrypt,我将使用唯一的盐对纯文本密码进行散列。该盐存储在每个用户的数据库中。然后将此 #1 salted-hash 发送到 API。
-
后端密码散列:使用 PBKDF2,#1 salted-hash 再次与另一个唯一的 salt 进行散列,生成 #2 salted-hash,然后将其与 #2 salt 一起存储在数据库中。
因此,数据库总共有 #2 salted-hash、#1 salt 和 #2 salt。
因此,当授权发生时,#1 salt 用于对纯文本密码进行散列,从而创建 #1 salted-hash。然后转到 API 进行授权,我们从数据库中获取 #2 salt 以创建 #2 salted-hash,然后将其与数据库中的 #2 salted-hash 进行比较以进行授权。
对不起,如果这个问题看起来多余,但我找不到任何特定于实现的答案。如果有人可以帮助我,那就太好了!
【问题讨论】:
标签: security password-protection password-hash