MembershipProvider和PasswordRecovery控件

时间:2009-07-01 12:55:56

标签: .net security .net-2.0 asp.net-membership passwords

我在.net 2.0中使用PasswordRecovery控件需要帮助。我的情况是应用程序已从将密码格式存储在Hashed中变为Clear。

问题是新创建的用户存储了明确的密码,但仍有用户使用散列密码。当我对仍然使用散列密码的用户使用如下密码恢复控件时,对于那些使用散列密码的用户,'PasswordFormat'字段不会更改为'clear'。

<asp:PasswordRecovery MailDefinition-BodyFileName="/mailTemplates/changePassword.htm" MailDefinition-From="test@test.com" MailDefinition-Subject="Test" CssClass="noLines" ID="PasswordRecovery1" UserNameTitleText="" UserNameInstructionText="Enter User name and a new passord will be generated and mailed to the user"  runat="server" SuccessText="Your password has been sent to your registered email address." SubmitButtonStyle-CssClass="button" 
    onsendingmail="PasswordRecovery1_SendingMail" MembershipProvider="AspNetSqlMembershipProviderF0005600">
    </asp:PasswordRecovery>

<membership>
  <providers>
    <remove name="AspNetSqlMembershipProviderF0005600"/>
    <add name="AspNetSqlMembershipProviderF0005600" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="false" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" passwordFormat="Clear" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
  </providers>
</membership>

2 个答案:

答案 0 :(得分:2)

您在MembershipProvider中不能有多个密码存储方案。您必须将密码重置为具有hasehd密码的所有用户,并使用用户名在其电子邮件中向他们发送新自动生成的密码。

您必须将所有用户的密码用于hasehd或清除。

  

必须有均匀的防守   密码存储   MemberShipProviders

答案 1 :(得分:1)

这个.__ curious_geek是正确的。您不需要Microsoft文档来验证他的断言,它是散列密码的本质所固有的。密码被哈希后,无法恢复。这只是哈希的本质 - 它是一种单向操作。如果它是双向的,那就是加密 - 而不是哈希。

因此,如果您从散列密码切换为纯文本,则必须重置密码被哈希的每个人的密码。无法恢复密码 - 必须为他们分配一个新密码。