Как? Зашифруйте и Дешифруйте пользовательские пароли членства в ASP.NET

Мы создаем новый сайт с помощью поставщика членства ASP.NET для регистрации пользователя и входим в систему. Наша старая система зашифровала пароли пользователя так, чтобы мы могли восстановить их, если бы мы должны были.

Я испытываю много затруднений, выясняющих, возможно ли использовать функции принадлежности ASP.NET для простого шифрования пароля, когда пользователь регистрируется, и затем не зашифруйте его так, я вижу его.

Документация для этого является несуществующим ржанием.

Я знаю, как настроить Web.config, чтобы иметь его пароли хранилища как зашифрованное крыло passwordFormat = "Зашифрованный" в поставщике и присвоении validationKey в machineKey, однако кажется, что пароль все еще хешируется (хотя, возможно, это просто хорошо шифруется). Так или иначе я не могу дешифровать, как пароль может быть восстановлен (нами), если необходимо.

Спасибо!

8
задан smdrager 10 June 2010 в 18:47
поделиться

3 ответа

Хранить пароли в восстанавливаемом формате - очень плохая идея. Если вы можете восстановить их, то сможет и любой, кто взломает ваш сервер.

Лучше использовать стандартный подход хеш + соль и иметь механизм сброса пароля на случай, когда пользователи забывают свой пароль.

10
ответ дан 5 December 2019 в 10:39
поделиться

Вам нужно использовать passwordFormat = "Encrypted" вместо passwordFormat = "Hashed". Затем вы можете использовать метод DecryptPassword объекта MembershipProvider , чтобы при необходимости расшифровать пароль.

5
ответ дан 5 December 2019 в 10:39
поделиться

Я предполагаю, что вы используете SQLMembershipProvider , поставляемый MS. Если да, то почему бы не использовать встроенную функцию вопросов и ответов, чтобы пользователь мог сбросить свой пароль. В качестве альтернативы (или дополнительно) сбросьте для них их пароль и отправьте им новый пароль по электронной почте. Таким образом, ваше приложение не сможет случайно раскрыть кому-либо пароль пользователя.

Если вам действительно нужно расшифровать их пароли, тогда для параметра passwordFormat должно быть установлено значение «Зашифрованный». См. DecryptPassword для получения информации о расшифровке пароля. Для получения подробной информации о настройке расшифровки см. PasswordFormat , обратите внимание, что в нем говорится, что вы должны указать атрибут decryptionKey элемента machineKey.

0
ответ дан 5 December 2019 в 10:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: