如果我想在我们的网站上拥有忘记密码功能,我应该使用什么类型的安全措施?AES



不幸的是,我们被要求为用户提供将电子邮件发送到其注册帐户和密码的功能。。如果他们忘记了密码。

"如果您忘记了密码,请单击此处"

所以,这意味着我需要能够解密密码。我不喜欢,但这是要求。我习惯于使用SALT并用SHA1创建密码。然后将salt和散列后的密码存储到存储库中。

不确定如果我想存储现在可以解密的密码,我应该怎么做。它或多或少是一样的,但我应该使用AES代替吗?

希望得到一些帮助(最好是.NET中的代码示例)。

干杯!

注意:请不要把这个话题变成关于HASHING vs DECRYPTING vs OpenAuth的话题。

您可以执行以下操作之一:

  1. 临时更改用户的密码,并通过电子邮件向用户发送新密码,要求用户在下次登录时更改新密码
  2. 具有重置密码的功能。它与第一个选项非常相似,但您需要创建一个临时令牌,并将其作为链接发送给用户
  3. 如果你真的,真的需要加密密码并通过明文发送给用户,那么你需要找到一个好的加密方案来保护数据库中的密码。您可以简单地使用Rfc2898DeriveBytes创建一个随机密钥或派生密钥,然后您可以使用AES与HMAC相结合(用于验证)来加密和存储密码。您的应用程序需要知道该密钥才能解密数据,这是一个安全风险。您可能可以将此密钥存储在web.config文件或类似文件中,这些文件永远不应该从外部访问,并使用DPAPI或RSAKeyContainer对其进行保护

如果你选择选项1或2,你不需要能够解密密码,所以你可以使用哈希+salt,这将是最安全的方法。

考虑到密码将在未加密的情况下通过互联网传输,高安全性加密可能无关紧要。但在任何情况下,AES都应该是足够的。

还是想问一下——有没有一个选项可以让用户重置密码,而不是通过电子邮件接收密码?

相关内容

最新更新