WordPress REST API: почему не отключать полностью, а закрывать только для неавторизованных

WordPress REST API раскрывает имена пользователей сайта по адресу wp-json даже незалогиненным посетителям. Если отключить его полностью, редактор блоков иногда не может сохранить запись, поэтому разбираем, как закрыть только запросы без входа и проверить это по ответу 401.
1️⃣ Что такое WordPress REST API: адрес wp-json и его задачи
WordPress REST API — встроенная функция WordPress, которая обменивается данными сайта — записями, страницами, пользователями — в формате JSON и отвечает по адресу /wp-json/ после адреса сайта.
Под /wp-json/ адреса разделены по типам данных — [wp/v2/posts], [wp/v2/pages], [wp/v2/users], — и каждый такой адрес называется эндпоинтом. Редактор блоков тоже отправляет запросы на эти адреса, когда сохраняет запись.
https://example.com/wp-json/
https://example.com/wp-json/wp/v2/posts
https://example.com/wp-json/wp/v2/pages
https://example.com/wp-json/wp/v2/users2️⃣ Имена пользователей, видные через wp-json
Эндпоинт [wp/v2/users] возвращает отображаемое имя и slug каждого пользователя, публиковавшего записи, а в slug по умолчанию попадает логин как есть. У администратора тестового сайта https://testpilotweb.com/ slug тоже совпадал с логином.
Если логин раскрыт, злоумышленнику остаётся подобрать только пароль; на странице входа WordPress тестового сайта 7 октября 2026 года за один день записали 2570 попыток перебора.
Даже если закрыть этот адрес, тот же логин остаётся в адресе страницы автора (/author/логин/).
3️⃣ Что ломается при полном отключении
Если полностью отключить WP REST API, первым делом перестаёт сохраняться запись в редакторе блоков, поэтому Perfmatters, один из плагинов оптимизации WordPress, делит отключение на два уровня: [Отключить для не-администраторов] и [Отключить при выходе из системы]. На сайтах с авторами или участниками [Отключить для не-администраторов] не даст этим аккаунтам сохранять записи.
Даже на сайте, закрытом только для неавторизованных, после подключения MCP-коннектора в claude.ai и завершения авторизации отображалось 0 инструментов. В логе сервера все запросы MCP были с кодом 401: Perfmatters блокировал запрос раньше, чем MCP проверял токен.
| Значение [Отключить REST API] | Адрес users для неавторизованных | Сохранение записей не-администраторами | Кому подходит |
|---|---|---|---|
| По умолчанию (включено) | Имена пользователей видны | Сохраняется | — |
| Отключить для не-администраторов | 401 | Не сохраняется | Сайты без авторов и участников |
| Отключить при выходе из системы | 401 | Сохраняется | Сайты с авторами; для подключений по токену, например MCP, добавить исключения |
4️⃣ Закрыть только для неавторизованных (Perfmatters)
В админке WordPress откройте [Настройки] → [Perfmatters] → [Общие], в разделе [Ядро] переключите [Отключить REST API] на [Отключить при выходе из системы] и нажмите [Сохранить изменения].


Языки Perfmatters: английский (по умолчанию), корейский, немецкий, французский, итальянский, нидерландский, португальский (Бразилия), русский, украинский, турецкий, болгарский, венгерский, индонезийский, персидский, китайский (упрощённый)

Если открыть /wp-json/wp/v2/users в окне инкогнито без входа, придёт ответ 401 с сообщением [У вас нет разрешения на запросы к REST API.], а редактор блоков под вашим входом по-прежнему сохраняет записи.
[
{
"id": 1,
"name": "User A",
"slug": "user_a",
"link": "https://example.com/author/user_a/"
}
]
{⏎ "code": "rest_authentication_error",⏎ "message": "У вас нет разрешения на запросы к REST API.",⏎ "data": { "status": 401 }⏎}
5️⃣ Исключения для закрытых путей
Чтобы при блокировке открыть только определённый путь, добавьте его в фильтр Perfmatters [perfmatters_rest_api_exceptions]. Проблему с 0 инструментов у MCP-коннектора claude.ai решил PHP-сниппет в меню Perfmatters [Код], который делает исключение только для пути MCP.
add_filter('perfmatters_rest_api_exceptions', function($exceptions) {
$exceptions[] = '/mcp/mcp-oauth-server';
return $exceptions;
});Даже после исключения запросы без токена блокирует сам MCP — с сообщением [MCP authentication required.] и ответом 401, а /wp-json/wp/v2/users по-прежнему возвращает 401 от Perfmatters.
[MCP authentication required.]
[Удалить ссылки на REST API] в том же разделе [Ядро] убирает только ссылку api.w.org из заголовка страницы и заголовков ответа, а сам WP REST API продолжает отвечать.
🔢 FAQ & рекомендуемые материалы
MCP
WP Rocket MCP Server
Как подключить ИИ-инструменты, чтобы они очищали кеш и меняли настройки вместо панели администратора.
Безопасность
Wordfence vs iThemes Security
Сравнение двух плагинов безопасности, защищающих от перебора паролей и вредоносного кода.
ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.