Усиление паролей WordPress: заменить MD5 на bcrypt
Быстрая замена MD5-хеша паролей в WordPress на bcrypt повышает стойкость к перебору и делает взлом паролей значительно сложнее. Плагин wp-password-bcrypt позволяет автоматически ре-хешировать пароли при логине без сложной настройки; в статье — пошаговая инструкция, рекомендации и дополнительные меры безопасности.
Когда говорят о безопасности паролей, обычно имеют в виду силу самого пароля и то, насколько его легко подобрать. Но не менее важен метод хранения пароля в базе данных. В WordPress пароли традиционно «соли́тся» и пропускаются через MD5 перед сохранением. Это кажется безопасным до тех пор, пока вы не вспомните, что MD5 имеет известные уязвимости. По оценке CMU Software Engineering Institute, MD5 фактически «криптографически сломан и непригоден для дальнейшего использования».
bcrypt — современная и адаптивная хеш-функция, основанная на шифре Blowfish. Адаптивность означает возможность увеличивать количество итераций (cost), чтобы замедлить хеширование по мере роста вычислительной мощности, что повышает устойчивость к атакам методом полного перебора.
Важно
- bcrypt — предпочтительный вариант для хранения паролей, если ваш PHP и хост поддерживают соответствующие расширения.
- Плагин wp-password-bcrypt автоматически ре-хеширует пароли при логине без дополнительной настройки.
Что делает плагин и когда он полезен
Плагин wp-password-bcrypt перехватывает процесс проверки пароля при входе и, при успешной проверке против существующего MD5-хеша, ре-хеширует пароль с помощью bcrypt и сохраняет новый хеш в базе. Это бесшовный способ миграции: пользователи не обязаны менять пароли.
Когда это не поможет
- Если у вас много неактивных пользователей, которые давно не входили в систему, их пароли останутся в MD5 до следующего удачного входа.
- Если пользователи используют слабые пароли, bcrypt лишь усложнит задачу злоумышленнику, но не сделает пароль сильным вместо пользователя.
Быстрая пошаговая инструкция
- Перейдите на страницу плагина wp-password-bcrypt на GitHub и нажмите кнопку «Clone or download», чтобы скачать ZIP на рабочий стол.

- Распакуйте ZIP и откройте папку; вам нужен только файл wp-password-bcrypt.php.

Подключитесь к серверу FTP или используйте файловый менеджер cPanel и создайте папку mu-plugins внутри wp-content (папка “Must Use Plugins”). Если папка уже есть — пропустите этот шаг.
Загрузите wp-password-bcrypt.php в папку mu-plugins. Это автоматически активирует плагин для всех сайтов на установке.
Готово — при следующем удачном входе пользователей их пароли будут ре-хешированы с bcrypt.
Примечание
- Удаление: чтобы удалить плагин, удалите файл wp-password-bcrypt.php из mu-plugins. Система продолжит работать, но пароли, уже перехешированные в bcrypt, останутся в таком виде.
Альтернативы и дополнения
- Встроенные PHP-функции: Рассмотрите использование password_hash() и password_verify() в пользовательских решениях. Они поддерживают bcrypt и более современные алгоритмы.
- Плагин на уровне аутентификации: Некоторые плагины аутентификации или безопасности (например, плагины с 2FA, лимитами попыток) дополнят защиту паролей.
- Политики паролей: требуйте от пользователей сложных паролей и предлагайте проверку силы пароля на клиенте и сервере.
Когда bcrypt может не сработать или вызвать проблемы
- Низкий параметр cost делает bcrypt эффективным, но недооценивает защиту. Установите разумный cost, соответствующий мощности вашего хоста.
- Если хакер получил доступ к серверу и может изменить код, любой хеш может быть скомпрометирован через другие векторы.
- Совместимость: на очень старых версиях PHP могут быть ограничения по поддержке алгоритмов.
Практические контрольные списки
Администратору сайта
- Сделать резервную копию базы данных перед изменениями.
- Загрузить wp-password-bcrypt.php в wp-content/mu-plugins.
- Проверить входы нескольких тестовых пользователей.
- Настроить уведомления о неудачных попытках входа.
Разработчику
- Убедиться, что PHP >= 5.5 (или версия, поддерживающая password_hash) на хосте.
- Проверить конфигурацию cost на соответствие CPU/памяти.
- Добавить тесты, покрывающие сценарии миграции хешей.
Пользователю (рекомендации)
- Используйте уникальный и сложный пароль для аккаунта.
- Включите двухфакторную аутентификацию, если доступно.
Ментальные модели и эвристики
- Хеширование не равно шифрованию: хеш необратим, в то время как шифр можно расшифровать при наличии ключа.
- Соль (salt) предотвращает использование заранее вычисленных таблиц (rainbow tables).
- «Растягивание» (stretching) — увеличение вычислительной стоимости хеша — делает массовые атаки дороже и медленнее.
Риски и смягчения
- Риск: большое количество устаревших MD5-хешей. Смягчение: рассылка напоминаний неактивным пользователям сменить пароль; постепенная миграция при логине.
- Риск: неверный параметр cost. Смягчение: протестировать время хеширования на вашем хосте и выбрать баланс между производительностью и безопасностью.
Критерии приёмки
- При успешном входе пользователя хеш в базе должен обновляться на формат bcrypt.
- Пользователи продолжают входить без изменения пароля.
- Система обрабатывает нагрузку хеширования без заметной деградации UX.
Краткая методология миграции
- Резервная копия БД.
- Установка wp-password-bcrypt в mu-plugins.
- Мониторинг логов входа и времени отклика.
- Уведомления пользователям по мере необходимости.
Глоссарий в одну строку
- Хеш: необратимая функция от данных; применяется для безопасного хранения паролей.
- Соль: случайное значение, добавляемое к паролю перед хешированием, чтобы предотвратить предварительные таблицы.
- cost: параметр bcrypt, указывающий число итераций/сложность.
Заключение
Пользователи могут делать всё правильно на своей стороне, но если система хранит пароли с помощью устаревших алгоритмов вроде MD5, риск компрометации остаётся высоким. Простая миграция на bcrypt через wp-password-bcrypt даёт серьёзное улучшение безопасности без вмешательства в поведение пользователей. Дополните миграцию политиками сложных паролей и дополнительными мерами (2FA, лимиты попыток), чтобы достичь надёжной защиты.
Краткое резюме
- bcrypt значительно лучше MD5 для хранения паролей.
- Плагин wp-password-bcrypt упрощает миграцию при логине.
- Сделайте резервную копию, протестируйте cost и информируйте пользователей при необходимости.
Image credit: Linux password file
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента