忘记密码过程的最佳做法是啥?

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。

【讨论】:

以上是关于忘记密码过程的最佳做法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

为忘记密码生成随机令牌的最佳实践

苹果手机锁屏密码忘记了,爱思助手给苹果刷机后,显示的输入密码和验证密码是啥?

忘记密码:实现忘记密码功能的最佳方法是什么?

PHP和恢复密码过程

Oracle 10g中默认的用户和密码是啥?我在安装数据库时忘记了密码改成啥了,如何才能登陆呢?

创建新密码的最佳方法是啥?