

Вопрос-ответ:
Почему нельзя хранить пароли в базе данных в открытом виде?
Пароли в открытом виде представляют серьёзную угрозу безопасности. Если злоумышленник получит доступ к базе, он сразу увидит данные всех пользователей. Это может привести к взлому аккаунтов не только на вашем сайте, но и на других сервисах, где люди используют те же пароли. Шифрование (точнее — хэширование с солью) делает пароль нечитаемым и сильно снижает риски при утечке.
Что лучше использовать в PHP для шифрования паролей — md5 или password_hash?
Функция `md5()` давно устарела, так как создаёт короткий и легко подбираемый хэш. Для защиты паролей в PHP рекомендуется использовать `password_hash()`. Она применяет надёжные алгоритмы (по умолчанию bcrypt), автоматически добавляет соль и позволяет задавать уровень сложности. Для проверки пароля используется связанная функция `password_verify()`. Такой подход соответствует современным требованиям безопасности.
Можно ли настроить уровень сложности шифрования паролей в PHP?
Да, в функции `password_hash()` есть параметр `options`, где можно задать, например, `cost` — показатель сложности. Чем выше число, тем больше времени потребуется на создание хэша. Обычно рекомендуют значение в диапазоне 10–12, но всё зависит от мощности сервера. Если указать слишком высокое значение, регистрация и авторизация пользователей будут проходить заметно медленнее.
Что делать, если со временем алгоритм шифрования изменится или появятся новые стандарты?
PHP предусматривает механизм обновления хэшей. С помощью функции `password_needs_rehash()` можно проверить, соответствует ли сохранённый хэш актуальным настройкам. Если нет — при следующем входе пользователя в систему вы можете пересоздать хэш с более современными параметрами и обновить его в базе. Таким образом, пароли пользователей будут автоматически переходить на новый уровень защиты без необходимости сброса.
