忘记密码过程的最佳做法是啥?
Posted
技术标签:
【中文标题】忘记密码过程的最佳做法是啥?【英文标题】:what is the best practice for forgot password process?忘记密码过程的最佳做法是什么? 【发布时间】:2012-11-30 19:30:40 【问题描述】:我目前正在开发一个允许用户使用密码登录的 c# Web 应用程序。我需要包含的一个功能是忘记密码功能。
忘记密码的推荐流程是什么?
我正在考虑这个:
用户点击忘记密码,输入邮箱 已发送电子邮件 点击邮件中的链接(链接仅在时间段内有效一次) 被带到网站并要求输入新密码(他们是否也应该回答安全问题?) 密码已更改,已向此类用户发送电子邮件 用户现在可以使用新密码登录【问题讨论】:
【参考方案1】:您的想法看起来很可靠,但我想补充一些其他注意事项:
确保您在电子邮件中生成的令牌使用的是专为随机化设计的 .Net Framework 加密类,而不是看似随机但并非为此目的而设计的东西。 发送重置电子邮件后不要对帐户采取任何措施(否则,如果知道其他人的电子邮件,他们将能够锁定其他人的帐户) 为给定的电子邮件添加每小时可以生成多少次重置的速率限制。否则,有人可能会通过以下方式对用户进行 DOS:(a) 使用 x 个错误密码来锁定帐户,然后 (b) 为他们生成重置电子邮件,速度比电子邮件系统能够传递的速度快。 尽可能遵循其他系统,例如 OpenID。自己滚动时很容易出错。【讨论】:
这些都是好点,只有在 x 次登录失败后锁定帐户的点值得怀疑。我永远不会因为登录错误而锁定帐户,只会延迟下一次可能的登录以阻止暴力破解。使用重置电子邮件向用户发送垃圾邮件应该没问题,使用匿名电子邮件帐户的普通电子邮件向他发送垃圾邮件很容易。【参考方案2】:我们有两种方法可以找回忘记的密码: 1.通过注册的email id 2.通过注册手机号
注册的电子邮件 ID:
一个。要求用户提供注册的电子邮件 id
b.系统检查提供的电子邮件 ID 在数据库中是否可用
c。如果数据库中存在电子邮件 ID,则系统发送电子邮件以重置密码,但如果数据库中不存在电子邮件 ID,则系统显示警报消息。
d。用户在重置忘记的密码时必须提供强密码。
e。密码重置成功,并且数据库中的电子邮件 ID 也发生了变化。
注册手机号码:
该过程几乎与电子邮件相同,但在这种情况下,OTP 将通过注册的手机号码发送。 我们需要为此集成第三部分 SDK 或者我们可以在 ios 中使用 imessage。
【讨论】:
以上是关于忘记密码过程的最佳做法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
苹果手机锁屏密码忘记了,爱思助手给苹果刷机后,显示的输入密码和验证密码是啥?