TGViewer
PHP Portal | Программирование PHP Portal | Программирование @phpgx · 4.64K subscribers
Post #188 2.22K
Хеширование паролей

➖ Задача:
Безопасно сохранить пользовательский пароль в базе данных, чтобы защитить его от утечек

➖ Решение:
Используйте встроенные функции password_hash() и password_verify().

Пример:
// Создание хеша пароля
$password = 'secure_password';
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);

// Проверка пароля
if (password_verify('secure_password', $hashedPassword)) {
echo 'Пароль верный!';
} else {
echo 'Неверный пароль!';
}

🔹password_hash() автоматически выбирает безопасный алгоритм хеширования, например, bcrypt, и добавляет "соль".
🔹password_verify() сравнивает пользовательский ввод с хешем из базы.

➖ Проверка хеша:

С помощью функции password_needs_rehash() можно обновить хеш пароля, если алгоритм был улучшен:
if (password_needs_rehash($hashedPassword, PASSWORD_DEFAULT)) {
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
}



➖ Рекомендации:

🔹Не храните пароли в открытом виде!
🔹Используйте длину паролей не менее 12 символов и требуйте от пользователей включать буквы, цифры и специальные символы.
🔹Регулярно проверяйте алгоритм хеширования и обновляйте устаревшие хеши.


➖ Пример работы с базой данных:

// Сохранение хеша
$stmt = $pdo->prepare("INSERT INTO users (username, password) VALUES (:username, :password)");
$stmt->execute([
'username' => 'user1',
'password' => $hashedPassword,
]);

// Проверка пароля при авторизации
$stmt = $pdo->prepare("SELECT password FROM users WHERE username = :username");
$stmt->execute(['username' => 'user1']);
$storedHash = $stmt->fetchColumn();

if (password_verify('secure_password', $storedHash)) {
echo 'Доступ разрешён!';
} else {
echo 'Неверный пароль!';
}


👉 @PHPgx | #заметки
  • 👍 11
  • ❤ 3
More from @phpgx
  1. Sep 21, 2026Совет по Laravel Все исходящие HTTP-ответы можно обрабатывать в одном месте с помощью Http…
  2. Sep 11, 2026Laravel tip Нужно получить все записи, кроме последних 5? skip() сам по себе игнорируется,…
  3. Sep 7, 2026В Laravel 13.30 появился удобный метод для Collection Использовали chunkWhile(), чтобы про…
  4. Sep 7, 2026PHP-совет В числовых литералах можно использовать подчёркивания, чтобы визуально группиров…
  5. Sep 2, 2026Он не из наших 👉 @PHPgx
  6. Aug 26, 2026TypePHP вышел в open source раньше запланированного 🎉 Изначально релиз исходников был нам…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →