忘记密码重置页面:用户是否还需要输入用户名/电子邮件?

时间:2015-06-04 21:19:46

标签: security user-management forgot-password reset-password

我正在为user management system的下一个版本重新实现“重置密码”功能。它目前的工作方式是:

  1. 用户输入用户名和电子邮件地址。
  2. 如果此信息正确,则会生成随机令牌并将其存储在数据库中,并将带有令牌的链接发送到用户的电子邮件地址。
  3. 用户点击该链接,并选择“确认”或“拒绝”重置请求。
  4. 如果他们确认重置请求,则必须输入电子邮件地址以及新密码(并重复新密码)。这将与令牌一起发布到服务器。如果电子邮件地址与令牌匹配,并且重置请求尚未过期,则密码将更新。
  5. 我的问题是:我们是否真的需要用户在创建新密码时重新输入他们的电子邮件地址?如果随机令牌足够强大,是否需要这些额外的信息提供任何额外的安全性,或者它是否只会恶化用户体验?

1 个答案:

答案 0 :(得分:2)

我没有看到这样做的任何价值。只需确保密钥安全即可。也许128位(即22个基本64位编码字符)安全随机。这看起来足够大了。还要为令牌生命周期添加超时。 24小时似乎是安全和不便之间的妥协。

我喜欢将电子邮件地址添加到令牌中,以便您可以更智能地记录失败。