1

所以我打算phpass在 php 中为我的身份验证系统使用哈希密码。我的问题是,当有人因为忘记密码而要求恢复密码时,最佳做法是什么?你会实施一个问答系统并允许他们在网站上重置它吗?或者您会使用随机密码字符串临时重置他们的密码并通过电子邮件发送给他们吗?要求他们在下次登录时更改它?还是有不同的更好的方法?

4

2 回答 2

2

如果用户选择容易猜到的问题或者攻击者对受害者有深入的了解,则查询/响应可能是不够的。许多知名网站利用原始用户提供的信息:电子邮件地址。向电子邮件地址发送密码重置链接,并允许用户通过点击链接重置密码。

于 2011-06-28T15:37:14.183 回答
0

有关如何使密码恢复更安全以及为什么安全问题是一个坏主意的想法,请参阅Jay实施密码恢复最佳实践中的回答。

布鲁斯·施奈尔(Bruce Schneier )也对这个主题有想法。

我会推荐邓肯的建议。

但是,您不应该做的事情:

发送密码 - 因为毕竟,正如已经提到的,你没有它。

生成一个新的临时密码——这不仅与发送密码一样不安全,还可能导致拒绝服务攻击。我可以去网站,假装是你,请求一个新密码,然后(如果你没有检查你的电子邮件)你不能登录,不知道为什么,不得不请求一个新的新密码.. .

令牌可能是要走的路。收到它会通知忘记密码请求,但除非您确认,否则不会采取任何行动。您还可以将其设为到期时间相对较短的一次性代币以限制风险。

如果有的话,应该使用安全问题来允许用户发起密码重置请求。IE 您需要提供您的电子邮件和安全问题答案才能发送密码重置请求。

于 2011-06-28T15:50:22.360 回答