【问题标题】:AspNetSqlMembershipProvider and PasswordRecovery ControlAspNetSqlMembershipProvider 和 PasswordRecovery 控件
【发布时间】:2010-10-19 09:34:00
【问题描述】:

我的场景是我有一个 asp.net 2.0 应用程序 web 应用程序,它的 AspNetSqlMembershipProvider 属性为:

enablePasswordRetrieval="false" 和 passwordFormat="Hashed"

但现在需要将未加密的用户密码存储为明文并将其显示给超级用户。我通过将 AspNetSqlMembershipProvider 属性更改为:

enablePasswordRetrieval="true" 和 passwordFormat="Clear"

问题在于 PasswordRecovery 控件的行为方式。根据我的阅读,它会检查 AspNetSqlMembershipProvider 标记的属性,如果 enablePasswordRetrieval="true" 和 passwordFormat="Clear" 它将尝试检索密码,当密码仍然有效地存储为散列密码时,这会导致问题。当 AspNetSqlMembershipProvider 属性为 enablePasswordRetrieval="true" 和 passwordFormat="Clear" 时,有什么方法可以强制 PasswordRecovery 控件重置而不检索密码?

对于冗长的解释感到抱歉,一如既往地非常感谢所有帮助/指针。谢谢。

【问题讨论】:

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


    【解决方案1】:

    我认为尝试使用两种方法在数据库中存储密码不会有任何运气。

    我的建议是更改具有散列密码的帐户的密码,以便将它们存储为纯文本并从那里继续。

    或者,如果您必须存储一些散列密码和一些明文密码,则必须考虑扩展会员提供程序以支持此功能。以我的经验,这往往比它的价值更麻烦。

    【讨论】:

      【解决方案2】:

      根据我的经验,更改密码格式是有问题的——我认为没有办法让提供商自动为您处理这个问题。

      您可能需要考虑强制哈希用户在下次登录时更改密码,或者只是编写一个流程,通过并在数据库中重置他们的密码。密码表中有一个描述格式的列(我现在看不到),因此您可以将该值从 hash 更改为 clear,然后 hash-value 将是他们的明文密码,应该可以登录。

      【讨论】:

        【解决方案3】:

        另外,请记住,以明文形式存储密码存在法律问题。如果这些密码被滥用或泄露,您应对所有被泄露的数据负责(包括通过您拥有但用户使用相同密码的任何其他服务访问的数据)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-04
          • 1970-01-01
          • 2023-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多