我想知道在网站上创建忘记密码功能的最佳方法是什么。我见过很多,这里有几个或组合:
您会在忘记密码功能中添加哪些组合或附加步骤?我想知道他们如何申请新密码以及他们最终如何获得密码。
我在校长上操作,无法检索密码;必须提供/生成新密码。
编辑我喜欢Cory所说的关于如果用户名存在不显示的内容,但我想知道要显示什么。我认为问题的一半是用户忘记了他们使用的电子邮件地址,显示某种“不存在”的消息是有用的。任何解决方案?
答案 0 :(得分:45)
选项1更容易。
答案 1 :(得分:25)
一些重要的安全问题:
有关更多背景信息,请查看Web Application Hackers Handbook。这是关于创建安全身份验证模型的绝佳读物。
编辑:关于编辑中的问题 - 我建议:
“密码请求电子邮件已经发送 发送到您提供的地址。如果 电子邮件不会很快到达, 请检查您的垃圾邮件文件夹如果不 电子邮件到达,然后没有帐户存在 用你提供的电子邮件。“
在易用性和安全性之间进行了权衡。您必须根据具体情况对此进行平衡 - 您和您的用户的安全性是否足以证明此不便之处?
答案 2 :(得分:8)
使用新密码发送电子邮件。
在密码到达时强制更改密码并输入新密码。
这确保了想要密码的人将是唯一进入该帐户的人。
如果电子邮件被嗅到,有人可以进入帐户(当然),但真正的一方会立即发现这一点(因为他们发送的密码不起作用)。
还向用户发送密码更改确认。
如果有人获得了新密码,然后发送了一封电子邮件“thanx更改密码”,那么他们会感到非常困惑,如果他们不这样做,他们会与管理员交谈。
答案 3 :(得分:2)
使用电子邮件验证/密码重置链接可以提供更好的安全性。 如果你环顾四周这是大多数网站如何做到这一点,人们已经习惯了这种验证,所以我建议使用这种类型的身份验证。
答案 4 :(得分:1)
我认为(gbrandt's)选项2如果与你已经为用户提供的一些个人信息结合起来将是一个很好的方法。即出生日期。
当用户通过输入他的电子邮件地址请求新密码(重置)时,他还必须在重置密码之前输入正确的出生日期(或其他内容),并通过电子邮件将新密码发送给用户。 / p>
只有那些了解他的人才可能通过重置密码来惹恼他!它不能是一个陌生人或机器人
5或7个不良电子邮件地址&用户通过电子邮件发送的出生日期组合,其密码已被请求重置并且由于凭证不正确而失败。然后,该帐户的密码重置将暂停24小时或任何所需的时间段。
(如果有太多用户联系webadmin关于此电子邮件,他会知道有人试图恶意获取您网站/应用中的信息)
你们有什么想法?
答案 5 :(得分:0)
选项1. 不是一个好主意,因为通常他的其他人很容易猜到。 Sarah Palin的个人电子邮件(我认为雅虎)被第三方以这种方式攻击。
其他选项更好,以前的帖子概述了详细信息。
答案 6 :(得分:-1)
我想到的想法是在发送给用户的链接中签署数据。然后,当用户单击链接并且服务器接收到呼叫时,服务器也会获取加密部分并可以验证数据是否未被触及。
我已经为这个用例实现了一个JAVA项目。它在GitHub上,开源。它完美地回答了你的问题......用Java实现。
至于电子邮件中的链接 - 它会生成链接,并在使用时对其进行验证。
对所有事情都有解释(如果缺少某些东西 - 请告诉我......)
看看:https://github.com/OhadR/Authentication-Flows
查看Demo here。
这是使用auth-flow的客户端Web应用程序,README包含所有解释。它会指导您实施:https://github.com/OhadR/oAuth2-sample/tree/master/authentication-flows