相关疑难解决方法(0)

重置ASP.NET密码 - 安全问题?

我已经看到有关这个问题的各种问题,但有几个问题没有被问到.如果用户忘记了密码,我希望他们能够仅使用他们的电子邮件地址重置密码(即没有安全问题/答案).密码存储为salted哈希,因此无法恢复.相反,我只是希望用户在确认他们已请求重置后输入新密码.

一个常见的方法是简单地说:

1)创建一个随机的Guid/Cryptographically强随机数

2)将包含随机数的唯一URL发送到用户的电子邮件地址

3)确认后,要求用户更改密码

但是,这不是开放的MITM攻击吗?如果通过互联网向电子邮件发送临时密码是不安全的,那么这样做与仅发送攻击者可以导航到的唯一URL之间的区别是什么?我是否错过了一个可以使这个系统更安全的关键步骤(或者是否有更好的方法来重置密码)?

谢谢

asp.net security asp.net-membership forgot-password password-recovery

8
推荐指数
2
解决办法
3860
查看次数

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

我正在使用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)

c# asp.net-mvc asp.net-membership

6
推荐指数
1
解决办法
2369
查看次数