2

我正在为下一个版本的用户管理系统重新实现“重置密码”功能。它目前的工作方式是:

  1. 用户输入他们的用户名和电子邮件地址。
  2. 如果此信息正确,则会生成一个随机令牌并将其存储在数据库中,并将带有该令牌的链接发送到用户存档的电子邮件地址。
  3. 用户单击该链接,可以选择“确认”或“拒绝”重置请求。
  4. 如果他们确认重置请求,他们必须输入他们的电子邮件地址,以及他们的新密码(并重复新密码)。这与令牌一起发布到服务器。如果电子邮件地址与令牌匹配,并且重置请求尚未过期,则会更新密码。

我的问题是:我们真的需要用户在创建新密码时重新输入他们的电子邮件地址吗?如果随机令牌足够强大,那么需要这条额外的信息是否会提供任何额外的安全性,还是只会恶化用户体验?

4

1 回答 1

2

我认为这样做没有任何价值。只需确保您的密钥安全。也许是一个 128 位(即 22 个 base 64 编码字符)安全随机。这似乎足够大。还要为令牌寿命添加超时。24 小时似乎是安全和不便之间的一个很好的折衷。

我喜欢将电子邮件地址添加到令牌的想法,这样您就可以更智能地记录故障。

于 2015-06-05T02:50:21.920 回答