重置忘记的用户密码的最佳做法

时间:2013-04-15 14:45:49

标签: plaintext password-recovery forgot-password

据我所知,有两种合理的方法可以重置用户忘记的密码。

  1. 让用户输入他们的电子邮件地址,并将新的明文密码发送到他们的电子邮件地址。

  2. 链接被发送到他们的电子邮件地址,该地址在URL中有一个UID号码。点击此按钮会将用户带到网站上的表格,他们可以在那里选择自己的新密码。

  3. 哪种方法更可取?为什么?

    如果使用方法1,也许第三方可以阅读电子邮件并获取新密码。 如果使用方法2,什么是阻止某人有条不紊地通过UID代码尝试访问表单来更改用户的密码?

3 个答案:

答案 0 :(得分:31)

最好的模式是:

  1. 用户请求密码重置。最好是通过用户名来完成它 不要表明用户名是否存在(以避免可能 用户通过脚本列出)

  2. 使用userid,datetime在新数据库表中生成记录     请求(=当前日期时间)和您刚刚生成的GUID

  3. 您向用户发送邮件,指向密码重置页面     GUID(不是userid)作为参数

  4. 在此页面上,您应该检查GUID是否存在,以及     最终你可以设置一些到期日期(=用户有1天     重置,例如)

  5. 不要忘记将记录标记为“已使用”(带有一个额外的字段)     表)当用户重置密码时,你就可以停止了     最终的第二次尝试...

  6. 它可能更安全,但我认为这已经非常好......

答案 1 :(得分:9)

OWASP有一个很好的https://www.owasp.org/index.php/Forgot_Password_Cheat_Sheet

清单

以下是步骤的快速摘要:

  1. 收集身份数据或安全问题
  2. 验证安全问题
  3. 通过边通道发送令牌
  4. 允许用户更改密码

答案 2 :(得分:0)

通过询问验证问题来验证发件人是否是真实用户。

请勿在不在规划员工列表中的个人电子邮件上发送密码。

请勿在电子邮件的标题或正文中添加“密码”一词。

确保单独发送用户名和密码。

对于Office 365用户,请将其指向忘记密码区域或发送此链接https://passwordreset.microsoftonline.com

不要被用户吓倒,如果需要,请升级到IT经理。