WordPress уже давно приоритет с расширением и открытостью, поэтому он представил API REST (также называемый JSON API). Эта функция облегчает разработчикам создание приложений, которые взаимодействуют с WordPress стандартизированным образом, независимо от того, восстанавливаете ли вы новости, обновляете настройки или интегрируете с другими платформами. Однако не все эти варианты идеально подходят для общественного потребления, особенно когда речь идет о раскрытии конфиденциальной информации, такой как зарегистрированные пользователи.
Одна из обычных проблем с безопасностью — это /wp/v2/users
Параметр отдыха. Если вы продвигаетесь к этому пути на своем сайте WordPress, вы увидите список ваших пользователей. По умолчанию этот параметр позволяет Несанкционированные посетители Чтобы получить список учетных записей пользователей веб -сайта, обычно подчиняющиеся именам пользователей, отображения имен и идентификатор пользователя. Пока пароли и e -s не раскрыты, публичный эффект имени пользователя известен вектор жестокая сила и бухгалтерские атакиЗнание действительного имени пользователя в этом районе — это половина борьбы за злоумышленника, который пытается получить доступ с помощью учетных данных или автоматизации входа в систему.
Содержание
Почему подчинение имени пользователя является проблемой
Хотя WordPress не показывает пароли, публикация имени пользователя может серьезно ослабить защиту вашего сайта. Вот почему этой практики следует избегать:
- Данные аккредитации и жестокие атаки силы: Используя пользователей, злоумышленники могут использовать автоматизированные инструменты для прохождения входа в систему пароля.
- Целевой фишинг: Известный список пользователей (специальных администраторов или редакторов) может стать в центре внимания социальной инженерии или фишинговой кампании.
- Учет разведки: Обнаружение пользовательских данных помогает злоумышленникам отобразить ваш сайт и оценивать потенциальные привилегии векторов в случае эскалации или подключения в злоупотреблении.
Но используется ли JSON API внутри?
Да, и это важное отличие. WordPress Rest API использует не только третьи сторонние приложения, но и сам WordPress. Например, редактор блокировки (Гутенберг) полагается на параметры отдыха для управления блоками, автомобилями и предварительными просмотрами. Полностью отключив API REST, многие аспекты вашего сайта будут нарушать как администраторов, так и пользователей.
Решение состоит не в том, чтобы полностью удалить API отдыха, а скорее Утверждает конкретные параметры такой как /wp/v2/users,
Так что они возвращают данные только для аутентификации пользователей с соответствующими разрешениями. Таким образом, API REST продолжает управлять инструментальной панелью и подключами администратора, как предполагалось, но сохраняет конфиденциальные данные без ограничений на анонимных пользователей.
Как отключить параметр пользователей общего доступа
Наиболее целенаправленным и удобным способом предоставления пользовательского параметра является его изменение ужасноПо сути, изменение правил о том, кто его воспринимает.
Это можно сделать двумя способами: добавление кода в тему ребенка functions.php
Файл или создав простой пользовательский плагин.
1 -й.: Добавить functions.php
Вставьте этот фрагмент в тему ребенка functions.php
в файле. Этот код ограничивает доступ к списку пользователей и параметрам данных пользователя, если посетитель не может редактировать сообщения. Зарегистрированные коллеги, редактор или администратор.
add_filter( 'rest_endpoints', function( $endpoints ) {
if ( isset( $endpoints['/wp/v2/users'] ) ) {
$endpoints['/wp/v2/users'][0]['permission_callback'] = function () {
return current_user_can( 'edit_posts' );
};
}
if ( isset( $endpoints['/wp/v2/users/(?P[\d]+)'] ) ) {
$endpoints['/wp/v2/users/(?P[\d]+)'][0]['permission_callback'] = function () {
return current_user_can( 'edit_posts' );
};
}
return $endpoints;
} );
Это позволяет вам продолжать работать над правильно зарегистрированными пользователями на спине, исключая несанкционированный доступ к метаданным учетной записи пользователя.
Вариант 2: Создайте простую пробку
Если вы не хотите полагаться на свою тему functions.php
Файл — особенно если вы используете мотив ребенка или планируете изменить темы — вы можете использовать тот же код, что и легкий штекер:
- В вашем каталоге WordPress перейти к
/wp-content/plugins/
- Создайте новую папку, как:
disable-public-users-endpoint
- Создайте новый файл папки, как:
disable-public-users-endpoint.php
- Вставьте следующий код:
[\d]+)'] ) ) {
$endpoints['/wp/v2/users/(?P[\d]+)'][0]['permission_callback'] = function () {
return current_user_can( 'edit_posts' );
};
}
return $endpoints;
} );
- Сохраните файл и активируйте пробку с помощью администратора WordPress.
Этот подход безопаснее для длительного обслуживания и может контролироваться версией, как и любая другая вилка.
Проверив изменения
После того, как вы добавили код или активировали плагин, вы можете проверить его, посетив:
Если ты не вошел в системуРеакция теперь должна быть 403 Forbidden
ошибка. Если вы обратились к соответствующим разрешениям, пункт назначения все равно вернет пользовательские данные.
Последние мысли
WordPress REST API является важным инструментом для современного развития, но он не должен быть за счет базовой гигиены безопасности. По умолчанию открыто /users
Пункт назначения — это потенциальная ответственность, которую легко забыть — особенно в небольших местах, где безопасность принимается, а не выполнена.
Его блокировка — это незначительный удар со значительными преимуществами: улучшенная конфиденциальность, более низкая поверхность атаки и более четкий сигнал, что ваш сайт укрепляется со стандартными методами работы. Или поместите несколько строк functions.php
Или оберните его как заглушку, это наилучшая практика, которую должен рассмотреть каждый администратор WordPress.