忘记了安全数据库的密码
Forgot my password for secure database
我创建了一个数据库结构,其中用户获得一个 public 和一个私钥来访问信息, public 密钥被上传到数据库,私钥与用户一起加密密码,所以我让他可以访问它。要在此结构中实现 "Forgot my Password",必须向 Unser 发送一封电子邮件,它提供了使用新密码加密私钥的选项。我考虑过将所有私钥存储在其他地方,但这会损害整个安全性,因为我不想将私钥或密码存储在数据库中的任何位置。所以我现在遇到的问题是没有原始密码我无法访问私钥,所以我怎么能让用户用新密码重新加密它。
您不需要原始密码即可为用户添加更改密码的选项。 非常危险 创建一种恢复用户原始密码的方法。如果我是你,我会使用一些散列算法,比如 SHA-256,并将结果存储为用户的密码。
好吧,回到问题,完成此密码用户更改的一种方法是在您的 User
table 中创建一个 UUID。当用户尝试更改密码时,您将他重定向到 link 中具有此 UUID 的页面。此 UUID 用作允许用户更改其密码的临时密钥。
举个例子。
Table:用户
id | name | UUID
1 | John | f39a33c3-e7f5-455a-afad-dcf845eb04a1
当用户想修改密码时,你发送一个link给他的邮箱:
http://yoursite.com/recover-password?UUID=f39a33c3-e7f5-455a-afad-dcf845eb04a1
因此,当用户在页面中输入新密码并提交信息时,您将获得此 UUID 并验证它是否真的是为用户生成的 UUID。因此,可以更改密码。
实现这个最简单的方法是用当前密码解密私钥并用新密码重新加密,然后在数据库中更新新密码。
我创建了一个数据库结构,其中用户获得一个 public 和一个私钥来访问信息, public 密钥被上传到数据库,私钥与用户一起加密密码,所以我让他可以访问它。要在此结构中实现 "Forgot my Password",必须向 Unser 发送一封电子邮件,它提供了使用新密码加密私钥的选项。我考虑过将所有私钥存储在其他地方,但这会损害整个安全性,因为我不想将私钥或密码存储在数据库中的任何位置。所以我现在遇到的问题是没有原始密码我无法访问私钥,所以我怎么能让用户用新密码重新加密它。
您不需要原始密码即可为用户添加更改密码的选项。 非常危险 创建一种恢复用户原始密码的方法。如果我是你,我会使用一些散列算法,比如 SHA-256,并将结果存储为用户的密码。
好吧,回到问题,完成此密码用户更改的一种方法是在您的 User
table 中创建一个 UUID。当用户尝试更改密码时,您将他重定向到 link 中具有此 UUID 的页面。此 UUID 用作允许用户更改其密码的临时密钥。
举个例子。
Table:用户
id | name | UUID
1 | John | f39a33c3-e7f5-455a-afad-dcf845eb04a1
当用户想修改密码时,你发送一个link给他的邮箱:
http://yoursite.com/recover-password?UUID=f39a33c3-e7f5-455a-afad-dcf845eb04a1
因此,当用户在页面中输入新密码并提交信息时,您将获得此 UUID 并验证它是否真的是为用户生成的 UUID。因此,可以更改密码。
实现这个最简单的方法是用当前密码解密私钥并用新密码重新加密,然后在数据库中更新新密码。