所以我打算在php中使用phpass
来验证我的身份验证系统的密码。我的问题是,当有人因忘记密码而要求恢复密码时,最佳做法是什么?您是否会实施问答系统并允许他们在网站上重置?或者您是否会使用随机密码字符串临时重置密码并通过电子邮件发送给他们?要求他们在下次登录时更改它?或者有更好的方法吗?
答案 0 :(得分:2)
如果用户选择容易猜到的问题或者攻击者对受害者有深入了解,则查询/响应可能不足。许多知名网站都利用原始用户提供的信息:电子邮件地址。将密码重置链接发送到电子邮件地址,并允许用户通过链接重置密码。
答案 1 :(得分:0)
请参阅Jay's上的Implement password recovery best practice回答,了解如何使密码恢复更安全,以及为什么安全问题不是一个好主意。
Bruce Schneier也有关于这个主题的想法。
我建议Duncan提出建议。
然而,你不应该做的事情:
发送密码 - 毕竟, 正如已经提到的,你 没有它。
生成新的临时密码 - 这不仅是不安全的 发送密码,它也导致 拒绝服务的可能性 攻击。我可以去网站,假装 是你,请求一个新的密码和 然后(如果你还没有检查过你的 电子邮件)你无法登录,不知道 为什么并且必须要求一个新的 密码......
令牌可能是要走的路。 接收它会通知一个被遗忘的人 密码请求,但不接受任何 行动,除非你确认。你会 也使它成为一次性令牌 相对较短的到期时间限制 风险。
如果有任何安全问题应该用于允许用户启动密码重置请求。 I.E.您需要提供电子邮件和安全问题答案才能发送密码重置请求。