Как получить пароль от поставщика членства asp.net из БД - PullRequest
1 голос
/ 26 июля 2011

Я хочу получить пароли пользователей из БД, я пробовал что-то вроде этого:

SELECT password, passwordformat, passwordsalt
FROM aspnet_membership am
INNER JOIN aspnet_users au
    ON (au.userid = am.userid)
INNER JOIN aspnet_applications aa
    ON (au.applicationId = aa.applicationid)
 WHERE au.username = 'xxxxxxxxxxx'
AND aa.ApplicationId = 'xxxxxxxxxx'

Но запрос возвращает хешированный пароль, есть ли способ получить оригинальный пароль, а не хешированный,Thnx

Ответы [ 2 ]

2 голосов
/ 26 июля 2011

Если он хеширован, вы не можете получить его, но вы можете восстановить его. Не изобретайте колесо и не используйте, например, PasswordRecovery Control .

UPDATE:

Если вы во что бы то ни стало хотите избежать использования элемента управления PasswordRecovery и хотите самостоятельно реализовать эту функцию, вам все равно не нужно реализовывать свои собственные запросы к aspnet_db. Существует множество встроенных методов для решения большинства проблем безопасности в API членства.

Вы можете использовать что-то вроде следующего для сброса пароля:

 string username = "user";
 string password = "pass@word";
 MembershipUser mu = Membership.GetUser(username);
 mu.ChangePassword(mu.ResetPassword(), password);

Это должно работать, если вы храните хешированные пароли и отключаете вопросы и ответы. Если вы хотите включить q & a, вы можете использовать обходной путь, описанный здесь .

1 голос
/ 26 июля 2011

Нет, вы не можете !! Его хеширование не зашифровано

Вы не должны хранить пароли в виде простого текста

...