Что я должен кодировать свои пароли? - PullRequest
2 голосов
/ 24 августа 2010

Я запускаю новое приложение ASP.Net с нуля. Что я должен использовать для кодирования паролей и каким должен быть мой столбец?

Просто простой варчар (512)? Спасибо за любой совет.

Ответы [ 5 ]

4 голосов
/ 24 августа 2010

Я бы использовал Членский API , который включен в .NET. Я считаю, что он хэширует пароли (и ответы безопасности), используя соленый SHA1. Если вы все еще хотите заново изобрести колесо, вы все равно можете использовать его в качестве руководства для передового опыта.

2 голосов
/ 24 августа 2010

Что ж, если вы используете SHA1, ваши хэши будут иметь длину только 48 символов, поэтому 512 - это избыточное количество.

Я использую SHA 256 с солью.

0 голосов
/ 24 августа 2010

Пространство имен FormsAuthentication имеет удобный метод, который вы можете использовать для хеширования пароля для хранения [в базе данных].

Как уже упоминалось, обязательно соль ваш пароль.

FormsAuthentication.HashPasswordForStoringInConfigFile (saltedPassword, "SHA1")

0 голосов
/ 24 августа 2010

Люди, пожалуйста.

Encryption != Encoding != Hashing

Это 3 различных термина, которые не должны использоваться взаимозаменяемо.

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

Кроме того, все хеш-функции будут генерировать вывод фиксированного размера (32 символа в случае MD5, 40 в SHA1 и т. Д.), Поэтомуне нужно все это дополнительное пространство.

Ссылки / Чтение:

MSDN: SHA1 Класс
Просто хеширования далеко недостаточно

0 голосов
/ 24 августа 2010

Я бы взглянул на пространство имен System.Security.Cryptography и изобрел способ шифрования паролей. Как только вы это сделаете, вы можете просто взглянуть на размер зашифрованных паролей и соответственно создать свой столбец. Убедитесь, что вы не потеряете ключ шифрования, конечно. Я также хотел бы иметь другой ключ в DEV, чем в PROD для дополнительной безопасности. Существует множество руководств (и кода) о том, как это сделать в .NET.

Удачи!

...