У меня есть веб-сайт ASP.NET (MVC 3), на котором пользователь сможет войти в систему для выполнения определенных действий. Мне нужно сохранить их пароль в базе данных SQL Server 2008. Я буду использовать проверку подлинности с помощью формы (не проверку подлинности Windows). Мне просто интересно, как лучше всего хранить пароль в базе данных. Читая некоторые ссылки, такие как this, я склоняюсь к использованию Hash with Salt, но мне неясно о том, как хранить солевую ценность? Следует ли зашифровать значение соли? У кого-нибудь есть другие идеи, передовой опыт, потенциальная проблема или ключевые соображения, прежде чем завершить этот подход?
Хранение пароля в базе данных с использованием хеша с солью; не уверен, где и как хранить соль
Ответы (2)
Обычно соль хранится как часть хэша, иногда в виде первых двух байтов. При необходимости его можно сохранить как отдельное поле, особенно когда соль больше. Шифрование соли не требуется. Вы просто храните соль + хеш в достаточно безопасном месте (только для доступа администратора).
Не никогда храните фактический пароль. Вам понадобится только соль и хеш. Когда пользователь дает пароль, вы шифруете его, используя сохраненную соль для пользователя, за которого он претендует, и если результат совпадает с сохраненным хешем, пароль правильный.
Хорошая статья на эту тему: http://www.obviex.com/samples/hash.aspx < / а>
Типичный подход - хранить соль и хеш вместе, разделенные каким-то специальным символом. Это значение создается механизмом аутентификации и может быть передано механизму аутентификации для проверки, так что самому приложению не нужно знать, что значение содержит как соль, так и хэш.
Соль не хранится в зашифрованном виде.