Какой тип безопасности я должен использовать, если я хочу иметь возможность Забыли пароль на нашем сайте? AES? - PullRequest
1 голос
/ 17 июня 2011

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

«Нажмите здесь, если вы забыли свой пароль»

Итак - это значит, что мне нужно уметь расшифровывать пароль. Мне это не нравится, но это требования. Я привык использовать соль и хэширование пароля с SHA1. затем сохранение соли и хешированного пароля в хранилище.

Не уверен, что мне следует делать, если я хочу сохранить пароль, который можно расшифровать сейчас. Это более или менее то же самое, но я должен вместо этого использовать AES?

Хотелось бы получить некоторую помощь (и желательно примеры кода в .NET).

Ура!

ПРИМЕЧАНИЕ. Пожалуйста, не включайте эту тему в тему о том, как HASHING vs DECRYPTING vs OpenAuth.

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

Вы можете сделать одно из следующих действий:

  1. Временно изменить пароль пользователя и отправить ему новый пароль по электронной почте, который он должен будет изменить при следующем входе в систему.
  2. Имейте функциональность, чтобы сбросить пароль вместо этого.Это очень похоже на первый вариант, но вместо этого вам нужно создать временный токен и отправить его пользователю в виде ссылки.
  3. Если вам действительно нужно зашифровать пароль и отправить его пользователючерез открытый текст, тогда вам нужно найти хорошую схему шифрования для защиты паролей, пока они находятся в базе данных.Вы можете просто создать случайный ключ или производный ключ, используя Rfc2898DeriveBytes , а затем вы можете использовать AES в сочетании с HMAC (для проверки) для шифрования и хранения пароля.Ваше приложение должно знать об этом ключе, чтобы иметь возможность расшифровывать данные, что представляет угрозу безопасности.Возможно, вы можете сохранить этот ключ в файле web.config или в чем-то подобном, что никогда не должно быть доступно извне, и защитить его с помощью DPAPI или RSAKeyContainer .

Если вы выберете вариант 1 или 2, вам не нужно будет расшифровывать пароль, поэтому вы можете использовать хеш + соль, что будет самым безопасным способом.

2 голосов
/ 17 июня 2011

Учитывая, что пароль будет передаваться в незашифрованном виде по Интернету, шифрование с высоким уровнем безопасности может не иметь значения. Но в любом случае AES должно быть достаточно.

Все еще хотите спросить - была ли на столе опция, позволяющая пользователям сбрасывать пароли, а не получать их по электронной почте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...