Назад к вопросам
Совкомбанк
Middle+
10
Как безопасно хранить пароли пользователей в базе данных информационной системы с локальной аутентификацией?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для безопасного хранения паролей пользователей в базе данных необходимо использовать криптографически стойкие хеш-функции с солью и адаптивным фактором сложности (например, Argon2, bcrypt или PBKDF2). Пароли не должны храниться в открытом виде или с простым хешем (например, MD5, SHA1).
Основные рекомендации:
- Для каждого пароля генерируется уникальная случайная соль.
- Пароль и соль проходят через алгоритм хеширования с настройкой параметров, регулирующих время вычисления (чтобы защититься от перебора).
- В базе хранится только соль и результат хеширования.
Пример на псевдокоде с bcrypt:
import "golang.org/x/crypto/bcrypt"
func HashPassword(password string) ([]byte, error) {
// bcrypt сам генерирует соль и включает её в хеш
return bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
}
func CheckPasswordHash(password string, hash []byte) bool {
err := bcrypt.CompareHashAndPassword(hash, []byte(password))
return err == nil
}
Таким образом, даже при компрометации базы данных, восстановить исходные пароли крайне сложно.