# Правила безопасности паролей
1. Пароли пользователей должны оставаться неизвестными для вас. И у вас не должно быть возможности узнать их.
2. Не вводите ограничения на пароли.
3. Никогда не отправляйте пароли по е-мейлу в чистом виде.
# Хешируем пароли пользователей
Пароли в веб-приложении нужно хешировать, а не зашифровывать. Шифрование — это двухсторонний алгоритм. Хеширование предполагает, что последовательность нельзя вернуть в формат незашифрованного текста. Именно это конечная цель всего процесса.
# Используем соль
Соль – это дополнительная случайная строка, которая приписывается к паролю и хэшируется вместе с ним. Из полученного таким образом хэша по радужной таблице пароль уже не восстановишь.
Разновидности соления паролей:
1. По принципу соления:
* уникальная соль для каждого пользователя: индивидуальная для каждого пользователя – таким образом, если соль станет известна злоумышленнику, брутить придется пароль каждого по отдельности. И кроме того, даже если два пользователя мыслят одинаково и придумали идентичные пароли, хэши все равно на выходе будут разными;
* глобальная соль: одинакова для всех, используется для всех хэшей;
* и то, и другое.
2. По методу хранения соли:
* в базе: как правило, индивидуальные соли хранятся в той же базе, что и хэши паролей; часто даже в той же строке;
* в коде (читать: в конфиге): глобальную соль обычно хранят не в базе данных, а, например, в конфиге, чтобы нарушителю пришлось потратить время на ее подбор.
# Дважды «соленый» хеш
К пользовательской соли должна быть добавлена общая соль, которая хранится в другом месте (отдельно от пользовательских данных).