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