Присоединяйтесь к нашему каналу и погрузитесь в мир для PHP-разработчика
Связь: @devmangx
Post #188
2.22K
Хеширование паролей
➖ Задача:
Безопасно сохранить пользовательский пароль в базе данных, чтобы защитить его от утечек
➖ Решение:
Используйте встроенные функции
Пример:
🔹
🔹
➖ Проверка хеша:
С помощью функции
➖ Рекомендации:
🔹Не храните пароли в открытом виде!
🔹Используйте длину паролей не менее 12 символов и требуйте от пользователей включать буквы, цифры и специальные символы.
🔹Регулярно проверяйте алгоритм хеширования и обновляйте устаревшие хеши.
➖ Пример работы с базой данных:
👉 @PHPgx | #заметки
➖ Задача:
Безопасно сохранить пользовательский пароль в базе данных, чтобы защитить его от утечек
➖ Решение:
Используйте встроенные функции
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










