通过电子邮件恢复/重置丢失的密码选项

fli*_*lip 6 c# asp.net-mvc asp.net-membership

我正在使用DefaultMembershipProvider开发一个C#ASP.MVC 4项目,我正在尝试用一种用户友好的方式来恢复/重置丢失的密码.

我的第一次尝试是让用户提供他们的用户名(这是一个有效的电子邮件地址),然后应用程序将生成随机密码(符合我们的要求),然后将密码通过电子邮件发送给用户.

我的理想解决方案是当用户点击忘记密码按钮时.系统会询问他们的用户名,这些用户名在提供时会导致电子邮件与URL一起发送(此URL也会附加到期日期).此解决方案还会重置应用程序内的用户密码(在发送电子邮件之前).当用户单击URL时,它们会自动登录并发送到更改密码表单.这个解决方案有问题吗?

对于配置,我设置了以下值:

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <clear />
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" 
         enablePasswordRetrieval="false" 
         enablePasswordReset="true" 
         requiresQuestionAndAnswer="false" 
         requiresUniqueEmail="false" 
         maxInvalidPasswordAttempts="5" 
         minRequiredPasswordLength="6" 
         minRequiredNonalphanumericCharacters="0" 
         passwordAttemptWindow="10" 
         applicationName="/" />
  </providers>
</membership>
Run Code Online (Sandbox Code Playgroud)

The*_*aot 6

首先,这里有两个必读[我再说一遍,必读]:

  1. 您想要了解的有关构建安全密码重置功能的所有内容
  2. 您可能错误地存储密码

话虽如此,OWASP有一些关于如何实现身份验证的指导,您可以在他们的身份验证备忘单和特定情况下开始忘记密码备忘单.这也可以说是必读的.如果你不打算关注OWASP,我希望这是因为你决定,而不是因为你不知道更好.

无论如何,最好的摘要是后面的图像(取自上面的第一个链接),如果你只想记住一件事,就这样:

密码重置工作流程