
Уязвимости WordPress и PHP: как защитить сайт
Уязвимости WordPress чаще всего возникают в плагинах и устаревшем PHP. Разбираем типы атак, признаки взлома и пошаговую защиту сайта.
Уязвимости WordPress и PHP: откуда берутся дыры и как их закрыть
Сайты на WordPress взламывают в основном не через само ядро, а через уязвимые плагины, темы и устаревшую версию PHP. Защита строится на четырёх вещах: своевременные обновления, минимум плагинов, правильная настройка PHP и сервера, резервные копии.
WordPress написан на PHP, и любая ошибка в коде, который обрабатывает запросы посетителей, превращается в потенциальную точку входа. Злоумышленникам не нужно выбирать конкретную жертву: боты круглосуточно сканируют Рунет и мировой интернет, ищут известные уязвимости и автоматически заражают всё, что найдут. В статье разберём, какие бывают уязвимости, как влияет версия PHP, как действовать по шагам и что делать, если сайт уже взломан.
Почему WordPress и PHP оказываются под ударом
WordPress используют более 40% всех сайтов в мире, поэтому каждая найденная брешь сразу даёт злоумышленнику огромное число целей. Когда в популярном плагине публикуют информацию об уязвимости, автоматические сканеры начинают атаки в течение часов. Так в 2020 году дыра в плагине File Manager с более чем 700 тысячами установок позволяла выполнять произвольный код на сервере, и тысячи сайтов были атакованы раньше, чем владельцы заметили обновление.
Второй фактор: PHP исполняется на сервере и имеет доступ к файлам и базе данных. Если уязвимость позволяет загрузить или запустить свой PHP-файл, атакующий получает практически полный контроль над сайтом: может создать администратора, внедрить вредоносные редиректы, разослать спам или встроить скрытые ссылки.
Третий фактор человеческий. Открытая экосистема с десятками тысяч плагинов привлекает как профессиональных разработчиков, так и авторов, которые не следят за безопасностью. Добавьте сюда пиратские («nulled») темы и плагины с готовыми бэкдорами, слабые пароли и хостинг, где годами стоит PHP 7.x, и получится классический набор причин взлома.
Где на самом деле находятся уязвимости
сайтов в мире работают на WordPress, поэтому он в центре внимания ботов
найденных уязвимостей приходится на сторонние расширения
уязвимостей относится к самому ядру WordPress, и оно обновляется быстро
поддержки у каждой ветки PHP: два года активной и год только security-исправлений
Ориентир по отчётам Patchstack и Wordfence: основная поверхность атаки — то, что вы установили сами.
Основные типы уязвимостей
Названия уязвимостей в отчётах звучат пугающе, но суть большинства из них проста. Это ситуации, когда код плагина или темы доверяет данным, которые пришли от пользователя, и не проверяет их. Именно такие ошибки чаще всего получают идентификаторы CVE и попадают в базы вроде WPScan и Patchstack.
Ниже собраны самые распространённые типы, с которыми сталкиваются владельцы сайтов на WordPress. Для каждого указано, как он работает и какая защита реально помогает.
| Тип уязвимости | Как работает | Чем грозит | Как защититься |
|---|---|---|---|
| SQL-инъекция | Через поле формы или параметр URL в запрос к базе данных подмешивается чужая команда | Кража данных, создание администратора, изменение контента | Обновления, WAF, отказ от сомнительных плагинов |
| XSS (межсайтовый скриптинг) | В страницу или комментарий внедряется JavaScript, который выполняется в браузере посетителя или администратора | Кража сессий, подмена контента, фишинг | Обновления, экранирование вывода, ограничение прав редакторов |
| RCE (удалённое выполнение кода) | Ошибка позволяет запустить произвольный PHP-код на сервере | Полный захват сайта и сервера | Обновления, запрет выполнения опасных функций PHP, WAF |
| LFI/RFI (включение файлов) | Скрипт подключает файл по пути, который контролирует атакующий | Чтение wp-config.php, выполнение вредоносного кода | allow_url_include = Off, актуальный PHP, ограничение open_basedir |
| Небезопасная загрузка файлов | Плагин не проверяет тип файла, и на сервер попадает PHP-шелл вместо картинки | Бэкдор с постоянным доступом | Запрет выполнения PHP в папке uploads, проверка типов файлов |
| CSRF (подделка запроса) | Администратора заставляют перейти по ссылке, и от его имени выполняется действие | Смена настроек, создание пользователей | Обновления, nonce-проверки в коде, выход из админки после работы |
Версия PHP: почему «работает, не трогай» не подходит
Каждая ветка PHP живёт ограниченное время. После окончания поддержки разработчики перестают выпускать исправления безопасности, и любая найденная в ней уязвимость остаётся открытой навсегда. Ветка 7.4 лишилась поддержки в ноябре 2022 года, ветка 8.0 в ноябре 2023 года, но на многих хостингах и VPS они до сих пор стоят по умолчанию.
Проверить версию можно в разделе «Состояние сайта» в админке WordPress (Инструменты → Здоровье сайта) или в панели хостинга. Актуальные сроки поддержки уточняйте на официальном сайте PHP: сейчас безопасный выбор — ветки 8.2, 8.3 и новее. Переходить стоит последовательно: сначала сделать резервную копию, затем проверить сайт на тестовой копии, включить вывод ошибок только в тестовой среде и убедиться, что плагины и тема не используют устаревшие функции.
Отдельно проверьте, что на хостинге включены актуальные настройки: отключён показ версии PHP в заголовках, не выводятся ошибки посетителям, запрещено подключение удалённых файлов. Это занимает несколько минут, но закрывает целый класс атак.
Как защитить WordPress: пошаговый план
- 01
Сделайте полную резервную копию файлов и базы данных и храните её вне сервера. Правило 3-2-1: три копии, два типа носителей, одна в удалённом месте.
- 02
Обновите ядро WordPress, темы и плагины до последних версий. Включите автообновление для плагинов, которые получают регулярные исправления безопасности.
- 03
Удалите всё лишнее: неактивные плагины и темы, демо-контент, неиспользуемых пользователей. Каждое расширение — это дополнительный код, который нужно поддерживать.
- 04
Переведите PHP на поддерживаемую версию (8.2, 8.3 или новее) и проверьте сайт на тестовой копии до переключения на боевом.
- 05
Настройте права доступа: папки 755, файлы 644, wp-config.php 600 или 640. Запретите выполнение PHP-файлов в папке wp-content/uploads.
- 06
Защитите вход в админку: уникальные длинные пароли, двухфакторная аутентификация, ограничение попыток входа, отказ от логина admin.
- 07
Установите WAF и сканер: Wordfence, Solid Security или облачный фильтр на уровне хостинга либо CDN. Он блокирует типовые атаки до выполнения кода.
- 08
Настройте мониторинг: подключите сайт в Яндекс Вебмастере и Google Search Console, включите уведомления о проблемах безопасности и следите за аномалиями в Яндекс Метрике или Google Analytics.
Откуда берутся «дыры» на практике
Чаще всего причина не в хитрой атаке, а в организационных мелочах. Плагин не обновлялся полгода, потому что «после прошлого обновления что-то сломалось». Доступ к админке остался у бывшего подрядчика. Пароль от FTP лежит в переписке в мессенджере. Тестовая копия сайта с отладкой лежит на соседнем поддомене и доступна всем.
Поэтому безопасность WordPress — это процесс, а не разовая настройка. Заведите регулярность: раз в неделю проверять обновления, раз в месяц просматривать список пользователей и плагинов, раз в квартал проверять резервную копию на восстановление. Резервная копия, которую никогда не разворачивали, не гарантирует, что она рабочая.
Типичные ошибки, из-за которых сайты взламывают
Как делать не надо
- Устанавливать «бесплатные» взломанные темы и плагины с торрентов (nulled), в которых уже есть бэкдор
- Оставлять PHP 7.x и старые плагины, потому что всё и так работает
- Редактировать файлы темы прямо в админке и хранить права 777 на папках
- Использовать один пароль для хостинга, FTP, базы данных и почты
- Хранить резервные копии на том же сервере, где работает сайт
Как правильно
- 01
Покупать расширения у разработчиков или брать из официального каталога WordPress и проверять дату последнего обновления
- 02
Планировать обновления: тестовая копия, резервная копия, затем боевой сайт
- 03
Отключить редактор файлов, выставить права 755/644 и работать через Git или SFTP
- 04
Использовать менеджер паролей и разные длинные пароли для каждого сервиса
- 05
Хранить копии во внешнем облаке или на другом сервере и регулярно проверять восстановление
Настройки, которые закрывают базовые векторы атак
Часть защиты настраивается в двух местах: в файле wp-config.php и в конфигурации PHP на сервере. Эти изменения не требуют дополнительных плагинов и не замедляют сайт, но заметно усложняют жизнь автоматическим сканерам.
Ниже приведён базовый набор. Перед внесением правок сделайте копию файлов и проверьте сайт: например, ограничение функций в disable_functions может сломать плагины, которые запускают внешние программы.
Базовый hardening: wp-config.php и php.ini
define('DISALLOW_FILE_EDIT', true);
define('FORCE_SSL_ADMIN', true);
define('WP_DEBUG', false);
define('WP_AUTO_UPDATE_CORE', 'minor');Отключает редактор файлов в админке, включает HTTPS для входа, скрывает ошибки и оставляет автообновление критических релизов.
expose_php = Off display_errors = Off allow_url_include = Off disable_functions = exec,passthru, shell_exec,system,proc_open,popen
Скрывает версию PHP, прячет ошибки от посетителей, запрещает подключение удалённых файлов и блокирует запуск системных команд.
После изменений проверьте сайт и логи ошибок: часть плагинов может использовать ограниченные функции.
Признаки того, что сайт уже взломан
Взлом не всегда заметен сразу. Иногда сайт выглядит нормально для администратора, но показывает спам или редиректы посетителям из поиска. Обратите внимание на следующие сигналы:
- в списке пользователей появились незнакомые администраторы; - в папках wp-content/uploads, wp-includes или в корне найдены странные PHP-файлы со случайными названиями; - при переходе из Яндекса или Google сайт перенаправляет на сторонние ресурсы, а при прямом заходе всё в порядке; - в выдаче появились страницы с чужим контентом, казино, фармацевтикой; - хостинг сообщает о подозрительной нагрузке или рассылке писем; - резко упал трафик, а в Яндекс Вебмастере или Google Search Console появились уведомления о проблемах безопасности.
Для быстрой проверки используйте сканеры (Wordfence, Sucuri SiteCheck) и консольные команды WP-CLI: `wp core verify-checksums` сравнивает файлы ядра с оригинальными, а `wp plugin verify-checksums --all` делает то же для плагинов из официального каталога.
Что делать, если взлом уже произошёл
Главное правило: не пытаться сразу «удалить вирус» вслепую. Если не найти и не закрыть точку входа, заражение вернётся через несколько часов. Сначала нужно остановить ущерб, затем собрать данные для анализа, и только потом чистить сайт.
Порядок действий приведён ниже. Он подходит для большинства небольших и средних сайтов на WordPress, но при взломе интернет-магазина или сайта с персональными данными стоит сразу привлекать специалиста по безопасности.
Таймлайн реагирования на взлом
Включите режим обслуживания или закройте доступ, смените пароли хостинга, FTP/SFTP, базы данных и всех администраторов.
Сделайте копию текущих файлов и логов сервера для анализа, затем найдите, какой плагин или файл стал точкой входа.
Переустановите ядро, плагины и тему из официальных источников, удалите чужие файлы и лишних пользователей, проверьте базу данных.
Обновите PHP и все расширения, замените ключи безопасности в wp-config.php, настройте WAF и права на файлы.
Проверьте сайт в Яндекс Вебмастере и Google Search Console, закройте уведомления и запросите повторную проверку.
Безопасность как часть SEO и репутации
Взлом сайта бьёт не только по безопасности, но и по продвижению. Скрытые ссылки и спам-страницы портят индексацию, а предупреждение «Сайт может угрожать безопасности вашего компьютера» отпугивает пользователей и в Яндексе, и в Google. Восстановление позиций после взлома занимает недели, а иногда и месяцы.
Поэтому защита сайта окупается так же, как и контент. Стабильный сайт без вредоносного кода лучше индексируется, быстрее загружается и не теряет доверия аудитории. Для бизнеса это ещё и вопрос ответственности: если на сайте собираются заявки и персональные данные, утечка приводит к юридическим и репутационным рискам.
Что даёт регулярная защита WordPress
- 01
Закрытие известных уязвимостей до того, как их начнут массово использовать боты
- 02
Стабильные позиции в Яндексе и Google без предупреждений о вредоносном коде
- 03
Быстрое восстановление из резервной копии вместо многодневной «чистки»
- 04
Меньше нагрузки на сервер, так как лишние плагины и спам-скрипты не расходуют ресурсы
- 05
Безопасное хранение заявок и персональных данных клиентов
- 06
Спокойствие владельца: понятный регламент обновлений и мониторинга
Итоги: как не стать лёгкой добычей
- 01
Обновляйте ядро, плагины и темы, а PHP держите на поддерживаемой версии
- 02
Удаляйте неиспользуемые расширения и никогда не ставьте nulled-версии
- 03
Настройте права файлов, запретите выполнение PHP в uploads и ограничьте опасные функции
- 04
Включите двухфакторную аутентификацию и WAF, храните резервные копии вне сервера
- 05
Подключите Яндекс Вебмастер и Google Search Console, чтобы быстро узнавать о проблемах
Начните с простого: проверьте версию PHP, список плагинов и дату последней резервной копии. Эти три проверки занимают полчаса и показывают, насколько ваш сайт уязвим. Если нужна помощь, специалисты проведут аудит, найдут слабые места и настроят защиту так, чтобы сайт работал стабильно и безопасно.
Часто задаваемые вопросы
WordPress работает более чем на 40% сайтов, поэтому это самая выгодная цель для автоматических атак. Основная проблема не в ядре, а в сторонних плагинах, темах и устаревших версиях PHP, которые владельцы не обновляют.
Используйте актуальную поддерживаемую ветку PHP, сейчас это 8.2, 8.3 или новее, предварительно проверив совместимость плагинов и темы на тестовой копии. Версии 7.4 и 8.0 больше не получают исправлений безопасности.
Признаки: незнакомые администраторы, чужие файлы в wp-content/uploads, редиректы на сторонние сайты, рассылка спама с вашего домена, резкое падение трафика и предупреждения в Яндекс Вебмастере или Google Search Console.
Нет. Плагин вроде Wordfence или Solid Security (бывший iThemes Security) даёт дополнительный слой защиты, но не заменяет обновления, резервные копии, сильные пароли и правильные права на файлы.
Проверим ваш WordPress на уязвимости до того, как это сделают хакеры
Найдём опасные плагины, устаревший PHP и дыры в настройках, составим план исправлений
Спасибо за заявку!
Мы свяжемся с вами в ближайшее время.
Большинство взломов — через устаревшие плагины



