【问题标题】:what is the best practice for forgot password process?忘记密码过程的最佳做法是什么?
【发布时间】:2012-11-30 19:30:40
【问题描述】:

我目前正在开发一个允许用户使用密码登录的 c# Web 应用程序。我需要包含的一个功能是忘记密码功能。

忘记密码的推荐流程是什么?

我正在考虑这个:

  • 用户点击忘记密码,输入邮箱
  • 已发送电子邮件
  • 点击邮件中的链接(链接仅在时间段内有效一次)
  • 被带到网站并要求输入新密码(他们是否也应该回答安全问题?)
  • 密码已更改,已向此类用户发送电子邮件
  • 用户现在可以使用新密码登录

【问题讨论】:

    标签: security passwords forgot-password


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 2010-10-06
      • 1970-01-01
      • 2015-10-20
      • 2013-12-22
      • 2012-06-08
      • 2010-12-31
      • 1970-01-01
      • 2011-05-20
      • 2010-09-22
      相关资源
      最近更新 更多