REST API безопасность WordPress: лучшие практики защиты
Введение в REST API WordPress
REST API WordPress предоставляет разработчикам мощный инструмент для взаимодействия с сайтом программно. Однако, это также открывает дополнительные векторы атак для злоумышленников.
1. Ограничение доступа к REST API
По умолчанию, REST API WordPress доступен всем. Ограничьте доступ, разрешив запросы только с определенных доменов или IP-адресов.
function restrict_rest_api_access() {
$allowed_ips = array('192.168.1.1', '127.0.0.1');
if (!in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)) {
wp_die('Доступ запрещен', 'rest_api_access_denied', array('status' => 403));
}
}
add_action('rest_api_init', 'restrict_rest_api_access'); 2. Nonce проверка для безопасности запросов
Используйте nonce (number used once) для проверки легитимности запросов к REST API.
function verify_nonce($request) {
$nonce = $request->get_header('X-WP-Nonce');
if (!wp_verify_nonce($nonce, 'wp_rest')) {
return new WP_Error('rest_api_nonce_error', 'Nonce недействителен', array('status' => 403));
}
return true;
}
add_filter('rest_pre_dispatch', 'verify_nonce', 10, 3); Реализация rate limiting
Ограничьте количество запросов к REST API в единицу времени, чтобы предотвратить брутфорс-атаки.
function rate_limit_rest_api($request) {
$ip = $_SERVER['REMOTE_ADDR'];
$limit = 100; // лимит запросов
$period = 60; // период в секундах
// реализация логики rate limiting
}
add_filter('rest_pre_dispatch', 'rate_limit_rest_api', 10, 3); 3. Отключение ненужных эндпоинтов REST API
Отключите эндпоинты, которые не используются на вашем сайте, чтобы уменьшить поверхность атаки.
function disable_unnecessary_endpoints() {
// например, отключение эндпоинта posts
unregister_rest_route('wp/v2', '/posts');
}
add_action('rest_api_init', 'disable_unnecessary_endpoints', 999); 4. JWT аутентификация для REST API
Используйте JSON Web Tokens (JWT) для аутентификации запросов к REST API.
Для более детальной информации о повышении безопасности WordPress, читайте в нашей статье о безопасности WP.
5. Дополнительные меры безопасности
Используйте плагины безопасности и регулярно обновляйте WordPress и его компоненты.
Более подробно о статической анализе кода WordPress плагинов и тем читайте в статье о PHPStan + WordPress.
Также рекомендуем ознакомиться с руководством по оптимизации WordPress с помощью NGINX FastCGI Cache.
Для новичков WordPress предлагаем ознакомиться с нашим полным руководством по освоению WordPress.
❓ Часто задаваемые вопросы
Что такое REST API в WordPress?
REST API в WordPress представляет собой программный интерфейс, позволяющий взаимодействовать с сайтом посредством HTTP-запросов.
Зачем нужна nonce проверка в REST API?
Nonce проверка используется для подтверждения легитимности запросов к REST API, предотвращая CSRF-атаки.
Как реализовать rate limiting для REST API?
Rate limiting реализуется путем отслеживания количества запросов с одного IP-адреса в единицу времени и ограничения доступа при превышении лимита.
Что такое JWT аутентификация?
JWT (JSON Web Tokens) аутентификация — это метод проверки подлинности пользователей посредством передачи токена, содержащего информацию о пользователе.