Sobes.tech
Middle+

Comment stocker en toute sécurité les mots de passe des utilisateurs dans une base de données d'un système d'information avec authentification locale?

sobes.tech IA

Réponse de l'IA

Для безопасного хранения паролей пользователей в базе данных необходимо использовать криптографически стойкие хеш-функции с солью и адаптивным фактором сложности (например, 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
}

Таким образом, даже при компрометации базы данных, восстановить исходные пароли крайне сложно.