纯文本密码与自动登录

时间:2012-02-15 21:59:51

标签: asp.net asp.net-mvc

我们的客户抱怨使用纯文本密码恢复登录密码。我知道的唯一解决方法是使用encripted username和passord在查询字符串中自动登录。

还有哪些其他选项可以提高密码恢复安全性?

感谢。

3 个答案:

答案 0 :(得分:2)

您可以向他们发送一个URL,让他们自己重置密码。

您可以创建一个数据库表,至少存储用户ID和哈希值。

向用户发送包含哈希的链接,并在接收页面上查找相关信息并允许用户重置密码到该帐户。我希望你把它作为哈希值存储在数据库中。绝不应存储或发送纯文本密码。

确保密码更改后链接过期或停用。否则,有人可以随时访问该链接并更改密码。

答案 1 :(得分:1)

与Brandon的优秀答案一样,以下是我们的工作:

  1. 不要以纯文本格式存储密码,甚至不能以可解密的值存储密码。始终使用单向散列算法存储密码。这意味着只有用户才能知道明文密码是什么。

  2. 当用户忘记密码时,请向他们提供输入电子邮件地址的表单,然后点击“提交”。

  3. 当他们提交电子邮件地址时,创建一个包含2个主要部分的表格行:第一个是密码重置令牌(我们使用Guid为此)。令牌应加上时间戳,以便您知道它何时创建,何时到期(我们在提交后2小时内到期)。第二部分是用户必须输入的密码才能重置密码。

  4. 向用户发送电子邮件,其中包含指向将接受令牌和密码的页面的链接。当他们单击链接(或访问页面并手动输入代码)时,您可以向他们显示一个页面,让他们在不知道其先前值的情况下更改其密码。

  5. 使用时间限制令牌是一个好主意,因为如果用户的电子邮件帐户后来遭到入侵,则犯罪分子无法使用该电子邮件重置密码 - 当然假设电子邮件帐户未在2中受到损害密码重置请求的小时数。

答案 2 :(得分:0)

我不会以明文形式将该帐户的实际密码发送到用户的电子邮件地址。这样做的原因是,如果有人攻击了用户的电子邮件地址,他们就会拥有实际的密码。这个密码很可能也会用于其他系统。

另一种方法是发送链接到该用户的加密查询字符串,并允许他们根据您对该用户特定的某种安全问题或受众特征更改其密码。

Facebook使用匹配的朋友图片来命名。如果你有他们的DOB和地址,你可以使用它(不那么安全)。或者你可以设置更好的安全问题和答案。

相关问题