Что не следует делать
- Хранение паролей в виде обычного текста — это плохая практика, так как любой, имеющий доступ к данным, может увидеть пароли.
- Хранение хэшей паролей напрямую — также небезопасно, так как они подвержены атакам с использованием заранее вычисленных таблиц, таких как rainbow tables (радужные таблицы).
Как защититься от атак с предварительным вычислением хэшей?
Для предотвращения атак с использованием радужных таблиц используется соль (salt).
Что такое соль?
Согласно рекомендациям OWASP, «соль — это уникальная, случайно сгенерированная строка, которая добавляется к каждому паролю как часть процесса хэширования».
Как хранить пароль и соль?
- Результат хэширования будет уникален для каждого пароля.
- Пароль можно сохранить в базе данных в следующем формате: hash(password + salt).
Как проверить пароль?
Процесс проверки пароля может выглядеть следующим образом:
- Клиент вводит пароль.
- Система получает соответствующую соль из базы данных.
- Система добавляет соль к паролю и выполняет хэширование. Назовем полученный хэш H1.
- Система сравнивает H1 с H2, где H2 — это хэш, сохраненный в базе данных. Если они совпадают, пароль считается правильным.
Такой подход значительно повышает безопасность системы, так как использование соли делает каждый хэш уникальным и усложняет атаки с использованием предварительно вычисленных таблиц.
Мета информация
Область::
Родитель::
Источник::
Создана:: 2024-11-03
Автор::