安全方式重置密码或提供旧密码

时间:2010-03-01 23:23:20

标签: security passwords password-protection

处理忘记密码/密码重置的最安全方法是什么?我应该将密码通过电子邮件发送给用户吗如果是这样,那么强迫他们重置它?或者你让他们立即重置它(不发送电子邮件)并需要一些其他信息来验证它们是谁?或者有更好的方法吗?

3 个答案:

答案 0 :(得分:17)

您无法通过电子邮件将密码发送给用户,因为您不知道密码。你已经applying something like PBKDF2 or bcrypt将它“哈希”给它进行存储,对吗?

如果您在未与帐户所有者确认密码的情况下重置密码,攻击者可以拒绝所有者访问其帐户,至少在他检查其电子邮件之前,使用受害者的电子邮件地址请求重置。

对于许多应用程序而言足够安全的方法是通过电子邮件发送指向帐户所有者的链接,其中包含随机生成的大型数字。此令牌应仅在有限时间内有效。如果所有者希望重置密码,则会点击该链接,然后将其作为帐户所有者进行身份验证。然后,帐户所有者可以指定新密码。

答案 1 :(得分:5)

您不应该通过电子邮件发送密码。这是我用过的一步一步的过程:

  1. 为用户提供重置密码选项。
  2. 此选项为用户保存唯一标记。令牌最终到期(小时,天或天)。
  3. 通过电子邮件向用户发送包含令牌的链接。
  4. 用户点击通过电子邮件发送的链接。
  5. 如果令牌存在且未过期,则链接会加载新的密码表单。 如果不是,请不要加载新密码表单。
  6. 用户设置新密码后,删除令牌并向用户发送确认电子邮件。
  7. 在设置新密码之前,旧密码应保持活动状态。不要忘记哈希并加密密码!

答案 2 :(得分:0)

我想你打算以编程方式做到这一点?或者这是服务器故障的问题吗?

其中一种方法是向用户的电子邮件帐户发送链接。他/她点击链接并重定向到您的安全网络表单,他们会重置密码。

请勿将密码通过电子邮件发送给用户