0

我的场景是我有一个 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 控件重置而不检索密码?

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

4

3 回答 3

0

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

于 2009-04-14T17:55:48.797 回答
0

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

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

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

于 2009-04-14T16:16:01.920 回答
0

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

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

于 2009-04-14T16:19:16.717 回答