2012-12-13 63 views
1

我目前正在开发一个允许用户使用密码登录的c#web应用程序。我需要包含的功能是忘记密码功能。什么是忘记密码过程的最佳做法?

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

我正在考虑这个:

  • 用户点击忘记密码,请输入电子邮件地址
  • 电子邮件发送
  • 点击链接的电子邮件(链接只有一次有效时间内)
  • 采取并要求输入新的密码(他们是否也应答安全问题?)
  • 密码更改,邮件发送给此类用户
  • 用户现在可以用新密码登录

回答

3

你的点子看起来坚实,但我想补充一些其他方面的考虑:

  • 确保您在电子邮件中使用生成的令牌使用为随机化而设计的.Net Framework加密类,不是那种看起来是随机的,但不是为此目的而设计的。
  • 对发送重置电子邮件的帐户不采取任何操作(否则,如果他们知道他们的电子邮件,人们将能够锁定其他人的帐户)
  • 添加限速器,可以为每小时生成多少次重置给定的电子邮件。否则,有人可以通过以下方式对用户进行DOS操作:(a)使用x错误密码来锁定帐户,然后(b)为他们生成重置电子邮件的速度比电子邮件系统所能提供的更快。
  • 尽可能地推迟到其他系统,如OpenID。当你推出自己的产品时很容易出错。
+0

这些都是很好的观点,只有在x登录失败后锁定账户的观点值得商榷。我永远不会锁定一个帐户,因为登录不良,只会延迟下一次可能的登录来阻止暴力强制。用垃圾邮件向用户发送垃圾邮件也不成问题,使用匿名电子邮件帐户的普通电子邮件将垃圾邮件发送给他是很容易的。 – martinstoeckli

0

我们有两种方法来检索忘记密码: 1.通过注册电子邮件ID 2.通过注册的手机号码

注册的电子邮件ID:

一个。要求用户提供注册邮箱编号

b。系统检查提供的电子邮件ID是否在数据库中可用

c。如果电子邮件ID在数据库中存在,系统将发送电子邮件以重置密码,但如果电子邮件ID不在数据库中,则系统会显示警报消息。 d)。用户必须在重置忘记密码的同时提供强密码。

e。密码重置成功,并且相对于电子邮件ID也在数据库中发生更改。

注册手机号码:

的过程与电子邮件,但是在这种情况下几乎相同,OTP将在注册手机号码发送。 我们需要整合第三方SDK,或者我们可以在IOS中使用imessage。

相关问题