“密码忘了”Php系统

时间:2015-09-23 22:12:54

标签: php email passwords

哪种策略最适合重新密码。 通过电子邮件向用户发送一个链接以创建新密码,覆盖当前密码?要么 向用户发送随机生成的密码,然后让他们更改密码?

1 个答案:

答案 0 :(得分:0)

第一个。

创建表单以获取用户的电子邮件地址。

如果您的系统中不存在该用户,请向该地址发送一封电子邮件,说“有人试图重置您的密码,但它不在我们的系统中”。

如果您的系统中存在该用户,请将链接创建回您的网站,然后通过电子邮件向该用户发送该链接。他们点击电子邮件中的链接并返回您的网站。

链接应如下所示:

https://example.com/reset-password?email=$usersEmail&hmac=$hmacOfTheirEmail

通过查看HMAC确认电子邮件未被篡改。

要避免用户枚举,请从表单返回相同的响应,无论您的电子邮件是否存在于您的系统中。

取决于您的安全级别......

  • 中记录用户
  • 向他们提出一个或多个安全问题
  • 执行多重身份验证

然后强制用户更改密码

其他一些答案/网站建议在数据库中存储令牌。问Mozilla这是怎么回事。

您可以向该链接添加一些其他参数,例如到期时间和IP地址。确保你也包括HMAC中的那些。

要防止重播攻击,请在链接中包含用户(和忘记)密码的哈希值。