Функция wp_hash_password()
используется для создания хэша (шифрования) пароля в виде строки. Этот процесс гарантирует, что пароль пользователя будет безопасно зашифрован перед его сохранением в базе данных. При каждом вызове функция генерирует уникальный хэш, даже если пароль одинаковый. Это достигается за счет использования соли — случайной строки, которая добавляется к паролю перед хэшированием.
wp_hash_password()
по умолчанию использует класс PasswordHash и алгоритм MD5 с 256 итерациями. Однако при необходимости можно настроить использование алгоритмов Blowfish или DES (если они доступны) для более сложного хэширования.
wp_hash_password( string $password ): string
Параметры
- $password
(string)
— Простой текст пароля, который нужно зашифровать.- Обязательный параметр.
Возвращаемое значение
- Возвращает строку, содержащую хэш пароля.
Основные моменты
- Использование соли: Каждый вызов создает уникальный хэш, даже для одинаковых паролей.
- Класс
PasswordHash
: Для работы используется этот класс, расположенный в файле/wp-includes/class-phpass.php
. - Pluggable функция: Эта функция может быть заменена через плагины. Плагины могут предоставить собственную реализацию хэширования паролей.
- Нельзя использовать до подключения всех плагинов: Поскольку это pluggable функция, она будет доступна только после инициализации всех плагинов WordPress. Чтобы использовать её в плагинах, необходимо дождаться события
plugins_loaded
или позднее.
Пример 1: Создание хэша пароля
Функция возвращает зашифрованный пароль в виде строки:
echo wp_hash_password( 'my_pass' );
// Пример вывода: $P$73efef7c6fe3cbdd02f86a5534810cb3
echo wp_hash_password( 'my_pass' );
// Пример вывода: $P$73923db7558fbf4776dc01299c2cc9b3
Как видно, даже при использовании одного и того же пароля результат хэширования будет отличаться.
Пример 2: Настройка параметров хэширования через $wp_hasher
Для изменения алгоритма хэширования можно установить глобальную переменную $wp_hasher
с необходимыми параметрами:
global $wp_hasher;
$wp_hasher = new PasswordHash(16, FALSE); // Используем 16 раундов хэширования и Blowfish (если доступен)
$hashedPassword = wp_hash_password('my_secure_password');
Пример 3: Сравнение зашифрованного пароля с простым текстом
Для проверки того, соответствует ли простой текст пароля его хэшированному значению, используется метод CheckPassword
класса PasswordHash
:
$wp_hasher = new PasswordHash(8, TRUE);
$password_hashed = '$P$73923db7558fbf4776dc01299c2cc9b3'; // Обновленный хэш
$plain_password = 'test';
if ( $wp_hasher->CheckPassword($plain_password, $password_hashed) ) {
echo "Пароли совпадают";
} else {
echo "Пароль не верный";
}
Настройка алгоритмов
По умолчанию, функция использует MD5, однако можно изменить алгоритм на Blowfish или extended DES. Для этого при создании объекта класса PasswordHash
можно передать соответствующие параметры:
$wp_hasher = new PasswordHash(16, FALSE); // Используем Blowfish
$hashedPassword = wp_hash_password($password);
Заключение
Функция wp_hash_password()
— это безопасный и удобный способ хэшировать пароли пользователей в WordPress. Она гарантирует, что пароли будут защищены, даже если база данных будет скомпрометирована. Благодаря использованию соли и возможности настройки хэширования, эта функция соответствует современным требованиям безопасности.