Как ограничить REST API WordPress и закрыть лишние точки входа

ogranichit rest api wordpress cover Без рубрики
Пошагово: проверка /wp-json/wp/v2/users в инкognito, патч WP2Shell, закрытие users и batch/v1 для гостей, отключение xmlrpc.php. Плагин или сниппет без программиста.

После письма от хостинга вы видите «открытый REST API» и застреваете: нажать «отключить» и утром получить белый экран в редакторе, или не трогать ничего и дать ботам пройти по wp-json. Владелец салона уже прошёл через это — плагин «закрыть REST API» сломал сохранение акции в Gutenberg. За один вечер вы сможете закрыть для гостей опасные адреса, оставите админку и форму рабочими и получите 401 вместо списка логинов в инкognito.

Полностью вырубать REST API WordPress нельзя — сломается блочный редактор. Правильный путь: обновить ядро до патча WP2Shell (7.0.2 / 6.9.5 / 6.8.6), закрыть для гостей /wp-json/wp/v2/users и /wp-json/batch/v1, отключить xmlrpc.php если не нужен Jetpack. Сначала проверка «до», потом точечные правки, потом тест сохранения записи и формы.

REST API (программный интерфейс) — это служебный коридор между админкой WordPress и сайтом. Адрес wp-json нужен редактору, как электричество в офисе. Задача не вырубить свет, а запереть подсобку, куда заходят боты. На практике это делается без программиста через сниппет или готовый плагин.

В июле 2026 цепочка WP2Shell показала: даже без «плохих» плагинов опасен маршрут /wp-json/batch/v1. Официальная справка WordPress прямо пишет — не отключайте API целиком, используйте фильтр rest_authentication_errors. Обновление ядра важнее, чем просто спрятать wp-json за заглушкой.

Разберите, какие точки входа оставляет открытыми обычный сайт услуг

Схема трёх точек входа WordPress на светлом столе: wp-json, xmlrpc и перебор авторов

Главная боль — непонятно, что именно «открыто» и насколько это страшно. У типичного салона, юриста или мастера три отдельные двери, не одна кнопка в настройках.

wp-json — адрес вида ваш-сайт.ru/wp-json/. Через него редактор сохраняет записи. Но маршрут /wp-json/wp/v2/users по умолчанию отдаёт список пользователей гостям — боты собирают логины для подбора пароля.

xmlrpc.php — старый канал для мобильного приложения и Jetpack. На сайте услуг без удалённых публикаций он почти не нужен, зато часто бьют брутфорсом.

Перебор ?author=1 в адресной строке показывает страницу автора и подсказывает логин admin. Это не REST API, но та же боль «узнали, кого ломать».

Схема «две двери — две проверки»:

Гость открывает /wp-json/wp/v2/users → видит JSON с именами? → закрыть маршрут

Гость открывает xmlrpc.php → ответ не 403? → отключить xmlrpc_enabled

Проверьте сайт до правок: что видит гость без входа

Чеклист проверки REST API в режиме инкогнито на светлом столе офиса

Вторая боль — править вслепую и не понять, помогло ли. Пять минут в режиме инкognito (Ctrl+Shift+N) дают снимок «до».

  1. Откройте https://ваш-сайт.ru/wp-json/wp/v2/users — если видите JSON со списком имён, перечисление логинов открыто.
  2. Откройте https://ваш-сайт.ru/xmlrpc.php — рабочий ответ вместо ошибки значит канал жив.
  3. Проверьте https://ваш-сайт.ru/?author=1 — редирект на страницу автора раскрывает логин.
  4. Запишите версию ядра в Консоль → Обновления и сделайте бэкап перед правками — для WP2Shell нужны 7.0.2, 6.9.5 или 6.8.6. Пошагово про копию — в материале про бэкап WordPress перед правками.

Типичная ошибка — сразу ставить плагин «Disable REST API» без этой проверки. Потом утром редактор не сохраняет, а вы не знаете, что откатить.

Обновите WordPress до патча WP2Shell — это база, не замена блокировки

Карточка с номерами патча WP2Shell и стикером безопасности на полке офиса

Третья боль — хостинг пишет про CVE-2026-63030 и batch API. Уязвимость затронула WP 6.9.0-6.9.4 и 7.0.0-7.0.1; патч — 6.9.5, 7.0.2, 6.8.6. Эксплуатация возможна без входа в админку. Сначала «Обновить сейчас» в консоли, потом точечно закройте batch для гостей. В реальном проекте клиент неделю прятал wp-json при ядре 7.0.1 — риск не ушёл.

Закройте список пользователей и batch-маршрут для гостей

Четвёртая боль — через wp-json видны логины админов. Решение не «выключить всё», а убрать конкретные маршруты или требовать вход.

Если нет программиста, настройте сниппет в WPCode (бесплатный) или Code Snippets: Вставки → Добавить новый → PHP, тип «Выполнять везде». Не правьте functions.php родительской темы — при обновлении темы код слетит. Надёжнее дочерняя тема WordPress или сниппет-плагин.

Без кода — плагин Disable WP REST API на wordpress.org или wp-rest-api-guard. В сниппете простыми словами: убрать users для гостей и вернуть 403 на batch/v1. Фильтры rest_endpoints и rest_pre_dispatch — «крючки» WordPress для короткого PHP-блока. Пугает код — активируйте плагин и переходите к проверке.

*Instagram,Facebook (принадлежит компании Meta, признанной экстремистской и запрещённой на территории РФ)
Способ Кому подходит Откат за 1 минуту Риск для редактора
Плагин Disable WP REST API Новичок, один клик Деактивировать плагин Низкий при правильном плагине
Сниппет WPCode Нужен контроль только /users Выключить сниппет Низкий при точечном коде
Полное отключение wp-json Не рекомендуется Часто только через FTP Высокий — Gutenberg ломается

Вердикт: для сайта услуг без WooCommerce начните с плагина или одного сниппета на users + batch. Не блокируйте весь namespace wp/v2 — формы Contact Form 7 и блоки могут перестать отправляться.

Отключите xmlrpc.php и закройте перебор авторов через ?author=

Пятая боль — не знаете, трогать ли xmlrpc. Если не пользуетесь Jetpack, мобильным приложением WordPress и удалённой публикацией — смело отключайте.

В сниппете добавьте фильтр xmlrpc_enabled → false. В инкognito xmlrpc.php должен отдать 403, не ответ «XML-RPC server accepts POST requests». Для ?author=N — хук template_redirect: редирект на главную, если гость не залогинен.

Оставьте рабочими форму заявки, Gutenberg и нужные интеграции

Шестая боль — «а вдруг сломаю форму на /kontakty/». Глобальное закрытие REST для всех гостей иногда ломает отправку с фронта. Поэтому wp-kama и официальный FAQ советуют rest_pre_dispatch — закрывать выборочно, а не одним тумблером.

Что должно продолжать работать после правок:

  • Сохранение черновика в блочном редакторе — главный тест.
  • Отправка тестовой заявки с формы — особенно если стоит Contact Form 7 или WPForms.
  • Jetpack, WooCommerce, CRM — если используете, перед блокировкой проверьте документацию интеграции; им может понадобиться часть wp-json.

Если форма перестала отправляться — отключите последний сниппет, очистите кеш (кеширование WordPress) и проверьте снова.

Пройдите финальный чек-лист: как понять, что ограничить REST API получилось

Результат ограничения REST API виден по тем же признакам, что и в отчёте сканера — только теперь наоборот:

  1. В инкognito https://ваш-сайт.ru/wp-json/wp/v2/users возвращает 401 или 403, а не JSON со списком пользователей.
  2. xmlrpc.php недоступен гостю (403 или ошибка).
  3. После входа в админку черновик сохраняется без белого экрана.
  4. Тестовая заявка с формы доходит до почты или CRM.
  5. В Инструменты → Здоровье сайта нет новых критических ошибок.
  6. Версия ядра не ниже патча WP2Shell для вашей ветки.

Если что-то не сходится — откатите последний сниппет. Спам с формы — отдельная тема: reCAPTCHA для WordPress. Нет времени на PHP-крючки? Закажите настройку на странице услуг или напишите через форму (MAX, VK, WhatsApp, Telegram).

Что дальше

  1. Раз в квартал повторяйте проверку /wp-json/wp/v2/users в инкognito.
  2. После каждого обновления WordPress смотрите Здоровье сайта.
  3. Держите один рабочий бэкап перед любыми сниппетами.
  4. Читайте другие материалы в разделе статей про WordPress и заявки.

Вопросы по безопасности сайта — в Telegram-канале @DikiiTelegram.

Материал проверен: Андрей Дикий — сайты на WordPress и продвижение статьями (SEO/GEO).
Источники и дата: REST API Handbook и FAQ (developer.wordpress.org), wp-kama.ru, GitHub Advisory GHSA-ff9f-jf42-662q (WP2Shell), tweakswp.com; частотность запросов — Яндекс Wordstat от 2026-09-09 (MCP недоступен, без выдуманных цифр).

Частые вопросы

Можно ли полностью отключить REST API WordPress?

Нет — официальная документация предупреждает: сломается админка и Gutenberg. Ограничивайте доступ для гостей через rest_authentication_errors или убирайте отдельные маршруты, не весь wp-json.

Чем опасен открытый wp-json для обычного сайта услуг?

Гости могут прочитать список пользователей и упростить подбор пароля. В 2026 добавился риск batch/v1 при старом ядре. Закрытие users и обновление WordPress снижают угрозу без поломки редактора.

Нужен ли xmlrpc.php салону или юристу?

Обычно нет, если не используете Jetpack, мобильное приложение WordPress и удалённую публикацию. Отключение xmlrpc_enabled не ломает форму заявки и блочный редактор.

Как ограничить REST API без поломки формы на Contact Form 7?

Не блокируйте весь REST для гостей одной кнопкой. Закройте /wp/v2/users и batch/v1, протестируйте отправку формы в инкognito. При сбое отключите последний сниппет и проверьте кеш страницы с формой.

Какой плагин выбрать новичку?

Disable WP REST API для быстрого закрытия API гостям или WPCode для одного точечного сниппета. Перед активацией сделайте бэкап и запишите версию WordPress для проверки патча WP2Shell.

Достаточно ли спрятать wp-json, не обновляя WordPress?

Нет. WP2Shell эксплуатируется на уязвимых версиях ядра; блокировка batch — дополнение, не замена патча 7.0.2 / 6.9.5 / 6.8.6. Сначала обновление, потом точечные ограничения.

*Instagram,Facebook (принадлежит компании Meta, признанной экстремистской и запрещённой на территории РФ)
Новый маркетинг с искусственным интеллектом
Добавить комментарий