我继承了使用ASP.NET成员资格提供程序进行用户管理的应用程序。作为各种修补程序和增强功能的一部分,我将用散列值代替纯文本密码的使用。在现有的重置密码页面上,用户需要为他们的安全问题,他们当前的密码,他们想要的新密码和所需的新密码再次输入正确的答案。使用散列密码验证安全问题的答案
我遇到了一个问题,似乎没有一种简单的方法来验证输入的安全问题答案是否正确。没有这个检查,用户可以在该字段中输入任何内容,只要他们输入了正确的当前密码,它将被重置。
我不能调用GetPassword(),因为如果在Web.config中passwordFormat =“Hashed”,该方法不可用。
我试图手动解密哈希的安全性问题的答案描述here但只适用于加密的值,而不是那些散列(逻辑我想:))
我已经手动尝试散列用户输入的答案和比较即存储在数据库中的值,但两个散列字符串不同。我正在使用第三篇文章here中描述的算法,它在比较散列密码时可行,但不幸的是,不适用于哈希安全问题答案。
有没有人有更多的建议?这似乎相当基本,所以我有一种感觉我错过了一些明显的东西。
Ofer,你是绝对正确的,但不幸的是,我们可以用我们能做的时间来限制我们。在此之前,密码以纯文本形式存储在数据库中,并通过电子邮件以纯文本形式传输,因此至少我们改进了用户管理功能的某些方面。 – Malice
你是绝对正确的,事情必须按顺序完成。我只是想强调(为了所有其他人将通过这个页面)安全问题是不好的做法... –