Лучшие практики: самый безопасный метод для хранения паролей в таблице? [закрытый]

Или Вы могли использовать "корректный" метод, подобный Вашему исходному подходу atoi, но со станд.:: stringstream вместо этого. Это должно работать с символами как вход, а также строки. (повышение:: lexical_cast является другой опцией для более удобного синтаксиса)

(atoi, старая функция C, и обычно рекомендуется использовать более гибкие и безопасные с точки зрения типов эквиваленты C++, если это возможно. станд.:: stringstream покрывает преобразование в и от строк)

12
задан vladr 24 November 2012 в 00:00
поделиться

5 ответов

Обновленный ответ 2016 г .:

Победителем PHC (соревнования по хешированию пароля) был Argon2 . Хеширование паролей с помощью Argon2 является лучшей практикой с 2016 года.

PHC проводился с 2013 по 2015 год как открытый конкурс - такой же процесс, что и конкурсы NIST AES и SHA-3, и самый эффективный способ разработки криптостандарта. . Мы получили 24 кандидата, в том числе множество отличных дизайнов, и выбрали одного победителя, Argon2, алгоритм, разработанный Алексом Бирюковым, Даниэлем Дину и Дмитрием Ховратовичем из Университета Люксембурга.

Мы рекомендуем использовать Argon2, а не устаревшие алгоритмы.

Эталонная реализация доступна на GitHub .

Обновленный ответ 2012 г .:

Исходный ответ, который я дал ниже, когда-то считается лучшей практикой. Однако, достижения в технологии хэш-вычислений сделали эти схемы уязвимыми. Забегая вперед, единственными безопасными схемами хеширования паролей являются итеративные хеши, такие как bcrypt и PBKDF2 . Полное обсуждение см. В анализе Джеффа Этвуда .

Исходный ответ 2009 г .:

Я рекомендую сначала добавить к паролю значение salt , а затем хеширование результирующая строка с достаточно сильной функцией хеширования, такой как SHA256 . Это защищает от очевидных (пароли в виде простого текста) и не столь очевидных (атаки с использованием радужных таблиц ).

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

24
ответ дан 2 December 2019 в 04:43
поделиться

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

Проверьте http://www.openwall.com/phpass/ . Они отлично справляются с использованием длинного хеша, уникального для каждого пароля, и тысячи раз пропускают пароль через md5. Это одна из лучших систем хеширования для php.

2
ответ дан 2 December 2019 в 04:43
поделиться

Вам нужно солить пароль.

vBulletin неплохо справляется с хранением паролей. md5 (md5 (пароль) + соль);

2
ответ дан 2 December 2019 в 04:43
поделиться

Если вы можете избежать сохранения пароля пользователя, это ваш лучший вариант, imo. Используйте OpenId (например, Stackoverflow) для аутентификации пользователя. Или живая аутентификация ( http://dev.live.com/liveid/ ). Если вам действительно нужно аутентифицировать пользователей самостоятельно; сделайте то, что Асаф говорит в своем ответе. :)

0
ответ дан 2 December 2019 в 04:43
поделиться

Соль и хэш.

0
ответ дан 2 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

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