【发布时间】:2011-08-09 10:29:02
【问题描述】:
我继承了一个使用 ASP.NET 成员资格提供程序进行用户管理的应用程序。作为各种修复和增强功能的一部分,我将使用散列密码替换纯文本密码。在现有的重置密码页面上,用户需要输入安全问题的正确答案、当前密码、所需的新密码和所需的新密码。
我遇到了一个问题,似乎没有一种简单的方法可以验证输入的安全问题答案是否正确。如果没有此检查,用户可以在该字段中输入任何内容,只要他们输入了正确的当前密码,它将被重置。
我无法调用GetPassword(),因为如果 Web.config 中的 passwordFormat="Hashed" 则该方法不可用。
我尝试按照here 的描述手动解密散列安全问题答案,但这仅适用于加密值而不是散列值(我想是合乎逻辑的 :))
我尝试手动对用户输入的答案进行哈希处理,并将其与存储在数据库中的值进行比较,但两个哈希字符串不同。我正在使用第三篇帖子here 中描述的算法,它在比较散列密码时有效,但不幸的是不适用于散列安全问题的答案。
还有人有什么建议吗?这似乎相当基本,所以我觉得我错过了一些明显的东西。
【问题讨论】:
标签: asp.net membership-provider