【问题标题】:Basic secure user password storage workflow基本的安全用户密码存储工作流程
【发布时间】:2023-04-01 01:49:02
【问题描述】:

给定一个原始密码

  1. 创造独特的盐
  2. 将其附加到原始密码
  3. brcypt / SHA512 这种组合使用随时间变化的一次性密钥
  4. 将加密的密码和盐存储在用户表中

验证身份

  1. 将盐添加到原始密码
  2. bcrypt / SHA512 组合验证
  3. 根据 db 散列值检查散列值

在验证部分,如果当前密钥不再相同怎么办? 我是否应该始终保留旧密钥列表并对其进行迭代以验证该旧密码是使用其中一个旧密钥生成的?如果验证者返回 true,我将更新新的加密密码。

另外,我怎样才能确定 salt 对于每个用户的每个密码都是唯一的?

这就是我需要做的一切吗?

有什么遗漏吗?谢谢。

【问题讨论】:

    标签: security passwords


    【解决方案1】:

    确保盐的唯一性很容易 - 您可以将用户名和密码上次更改的时间散列在一起。

    至于加密,只有当您出于某种原因想要存储用户密码时才需要加密,而不仅仅是能够验证它。只存储密码和盐的哈希值更常见也更安全。不需要密钥,即使攻击者破坏了数据库,他们也将难以恢复密码。唯一的缺点是你不能告诉用户他们的密码,你只能重置它们。

    【讨论】:

    • 哦,对了。盐组合很简单:D 所以密钥在很多情况下都很有用,其中之一是用于重新散列用户密码?
    猜你喜欢
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多