ASP.NET成员资格提供程序 - 验证散列安全问题/答案

时间:2009-05-19 18:25:22

标签: asp.net membership-provider

在我正在添加检索忘记的USERNAME

的页面上

步骤1)输入电子邮件地址(通过电子邮件获取帐户)

步骤2)验证安全问题(他们提供答案并对其进行验证)

步骤3)向他们发送一封用户名

的电子邮件

第二步是我被困住的地方。如何使用数据库中存储的内容验证答案?

所有值都经过哈希处理。

我看到其他问题与此类似,但他们没有回答这个问题,至少不清楚。

2 个答案:

答案 0 :(得分:2)

如您所说,数据库中的值是经过哈希处理的,因此为了验证用户键入的内容与数据库中的内容相匹配,请对用户输入的值进行哈希处理并比较两个哈希值。如果它们相等,则验证。

在将答案文本与数据库中的值进行比较之前,您基本上需要对答案文本进行哈希处理。

另外,请注意,有时候答案文本在散列之前会加上一个值,因此在验证时需要采取相同的步骤。

答案 1 :(得分:1)

查看提供程序,它不会公开任何方法来执行您想要的第二步。

您需要执行以下操作。

  1. 创建一个存储过程,该过程将根据电子邮件和答案检索结果。
  2. 正如您所提到的,因为答案是经过哈希处理的,您需要对用户提供的值进行MD5哈希处理。 (FormsAuthentication.HashPasswordForStoringInConfigFile可以为此工作)
  3. 使用所需参数调用存储过程以验证用户信息是否匹配。