处理忘记密码/密码重置的最安全方法是什么?我应该通过电子邮件将密码发送给用户吗?如果是这样,你会强迫他们重置它吗?还是让他们立即重置(不发送电子邮件)并要求其他信息来验证是他们?或者有没有更好的方法?
问问题
4647 次
3 回答
19
您不能通过电子邮件将密码发送给用户,因为您不知道它。你已经通过应用 PBKDF2 或 bcrypt 之类的东西来“散列”它进行存储,对吧?
如果您在未与帐户所有者确认的情况下重置密码,则攻击者可以通过使用受害者的电子邮件地址请求重置来拒绝所有者访问他的帐户,至少在他检查他的电子邮件之前。
对于许多应用程序来说足够安全的方法是通过电子邮件将链接发送给帐户所有者,其中包含一个随机生成的大数字。此令牌应仅在有限时间内有效。如果所有者希望重置他们的密码,他们单击链接,这将验证他们为帐户所有者。然后帐户所有者可以指定一个新密码。
于 2010-03-01T23:27:48.677 回答
6
您不应该通过电子邮件发送密码。这是我使用的分步过程:
- 为用户提供重置密码选项。
- 此选项为用户保存唯一令牌。令牌最终会过期(几小时、几天或几天)。
- 包含令牌的链接通过电子邮件发送给用户。
- 用户点击电子邮件链接。
- 如果令牌存在且未过期,则链接会加载新的密码表单。如果不是,请不要加载新密码表单。
- 用户设置新密码后,删除令牌并向用户发送确认电子邮件。
在设置新密码之前,旧密码应保持有效。不要忘记对密码进行散列和加盐!
于 2010-03-01T23:48:01.657 回答
0
我想你会以编程方式进行吗?还是服务器故障的问题?
其中一种方法是将链接发送到用户的电子邮件帐户。他/她点击链接并被重定向到您重置密码的安全网络表单。
不要将密码通过电子邮件发送给用户
于 2010-03-01T23:27:40.857 回答