通过邮件重置密码

Password reset via mail

我正在使用 Eclipse EE 开发 Web 应用程序。我有一个模块应该重置用户密码并向用户(通过电子邮件)发送 link 到他们可以重置密码的页面。有什么见解吗?

主要步骤是:

  1. 提供一个 "forgot password" 页面,用户可以在其中输入她的电子邮件地址
  2. 查找输入的地址但不告诉用户任何详细信息。不要输出 "email address not found" 之类的消息,因为它会允许恶意用户查找有效的电子邮件地址。最好给他们一条消息,例如 "you'll receive a link to reset your password if the entered email address is registered".
  3. 创建一个强大的唯一随机标识符,将其与该重置请求相关联。例如。使用框架提供的加密 RNG,并将其与独特的东西结合起来,例如一个 GUID。
  4. 将该唯一标识符与该重置请求一起存储在例如a table 在您的数据库中并为该记录添加时间戳。这很重要,因为您希望用户只能在固定时间范围内重置密码。
  5. 向您的应用程序发送一封电子邮件,并将该唯一标识符作为 link 中的查询参数。例如。 https://yourapp.com/pwreset/?requestID=7392af1747ce3781
  6. Fetech 在您的 pwreset-controller 中的 requestID 参数,并在您的数据库中查找它。如果请求在基于初始请求时间戳的合理时间范围内到达,则让用户重置她的密码。
  7. 从您的数据库中删除成功的请求记录,这样发送的密码重置link只能使用一次。并定期删除过期记录。

以此为起点。由于我不是加密专家,您可以看看这种方法 ;)