Доставчик на членство в ASP.NET - Валидиране на хеширан защитен въпрос/отговор

На страница, която добавям, извлечете забравено ПОТРЕБИТЕЛСКО ИМЕ

Стъпка 1) Въведете имейл адрес (Вземете акаунт по имейл)

Стъпка 2) Потвърдете защитния въпрос (те предоставят отговор и аз го потвърждавам)

Стъпка 3) Изпратете им имейл с потребителско име

Стъпка 2 е мястото, където съм заседнал. Как да потвърдя отговора с това, което се съхранява в базата данни?

Всички стойности са хеширани.

Виждам други въпроси, публикувани подобни на този, но те не отговарят на въпроса, поне не ясно.


person Community    schedule 19.05.2009    source източник


Отговори (2)


Както казахте, стойностите в DB са хеширани, така че за да потвърдите, че въведеното от потребителя съответства на това, което е в DB, ​​хеширайте въведената от потребителя стойност и сравнете двете хеширани стойности. Ако са равни, това се потвърждава.

По принцип трябва да хеширате текста на отговора, преди да го сравните със стойността в базата данни.

Също така имайте предвид, че понякога текстът на отговора се добавя със стойност, преди да бъде хеширан, така че ще трябва да се предприемат същите стъпки при валидирането.

person slolife    schedule 19.05.2009

Гледайки доставчика, той не излага никакви методи, за да изпълните желаната стъпка втора.

Ще трябва да направите следното.

  1. Създайте съхранена процедура, която ще извлича резултати въз основа на имейла и отговора.
  2. Както споменахте, тъй като отговорът е хеширан, ще трябва да хеширате MD5 предоставените от потребителя стойности. (FormsAuthentication.HashPasswordForStoringInConfigFile ще работи за това)
  3. Извикайте вашата съхранена процедура с необходимите параметри, за да проверите дали потребителската информация съвпада.
person Mitchel Sellers    schedule 19.05.2009