VB.Net Хэширование паролей - PullRequest
3 голосов
/ 30 марта 2011

Я пытаюсь обезопасить веб-сайт, который скоро будет перемещен на публичный сервер.Я только что закончил добавлять функции хеширования паролей ко всем моим сценариям входа.Я использую FormsAuthentication.HashPasswordForStoringInConfigFile(pw, method) для этого.У меня есть вопрос о процессе, который я использую, и о том, является ли он безопасным для веб-сервера:

  1. Пароль отправляется в виде простого текста по HTTPS на сервер
  2. Серверищет в таблице «Пользователи» Salt пользователя (несколько случайных символов) и его хешированный и соленый хранимый пароль
  3. Простой текстовый пароль добавляется с помощью Salt
  4. Новая строка хэшируется с использованиемвышеуказанная функция
  5. Новая хешированная версия сравнивается с сохраненной версией
  6. Если равно, вход разрешен
  7. Если не равен, попытка входа регистрируется в переменных сеанса, вверхдо 3 раз, прежде чем заблокировать доступ компьютера пользователя к странице входа в систему, пока администратор не проверит IP-адрес и не разблокирует его.

Правильно ли это выглядит?Я просто не понимаю, насколько соль эффективна в этом методе ... Во всяком случае, все, что я сделал, это добавил соль и хэш.Это считается шифрованием?Или я пропускаю шаг?Я помню, как читал, что алгоритмы хеширования, такие как SHA1 и MD5, не являются алгоритмами шифрования, так что еще нужно сделать?

Ответы [ 2 ]

3 голосов
/ 30 марта 2011

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

Алгоритм MD5 - это односторонний алгоритм хеширования, а не шифрование.значение.Разница в том, что после того, как вы хэшировали значение, невозможно вернуться к исходному значению.Шифрование позволяет расшифровать данные и вернуть исходное значение.Таким образом, вы правы, они не совпадают, и ваши пароли не зашифрованы, они хешируются.Это означает, что если кто-то забудет свой пароль, вы не сможете отправить его ему.Вместо этого вы должны предоставить им способ сбросить свой пароль.Это также означает, что любой, имеющий доступ к базе данных, не будет иметь доступа к необработанным паролям.Это хорошо, потому что многие люди используют один и тот же пароль везде, и если у вас есть доступ к большому списку имен пользователей и паролей, кто-то может решить начать пытаться войти на сайты банков / кредитных карт.

ЧтоВы делаете это рекомендуемая практика.

1 голос
/ 05 апреля 2011

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

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