哪种策略最适合重新密码。 通过电子邮件向用户发送一个链接以创建新密码,覆盖当前密码?要么 向用户发送随机生成的密码,然后让他们更改密码?
答案 0 :(得分:0)
第一个。
创建表单以获取用户的电子邮件地址。
如果您的系统中不存在该用户,请向该地址发送一封电子邮件,说“有人试图重置您的密码,但它不在我们的系统中”。
如果您的系统中存在该用户,请将链接创建回您的网站,然后通过电子邮件向该用户发送该链接。他们点击电子邮件中的链接并返回您的网站。
链接应如下所示:
https://example.com/reset-password?email=$usersEmail&hmac=$hmacOfTheirEmail
通过查看HMAC确认电子邮件未被篡改。
要避免用户枚举,请从表单返回相同的响应,无论您的电子邮件是否存在于您的系统中。
取决于您的安全级别......
然后强制用户更改密码
其他一些答案/网站建议在数据库中存储令牌。问Mozilla这是怎么回事。
您可以向该链接添加一些其他参数,例如到期时间和IP地址。确保你也包括HMAC中的那些。
要防止重播攻击,请在链接中包含用户旧(和忘记)密码的哈希值。