Como Fechar a REST API do WordPress com Controle Total (Sem Plugins de Terceiros)

A REST API do WordPress foi introduzida para facilitar integrações modernas. Mas, para muitos sites, ela representa uma porta de entrada para vazamento de dados e superfícies desnecessárias de ataque. Neste post, você verá como desativá-la ou controlá-la com precisão sem depender de plugins externos, usando abordagens diretas e seguras.


O Que é a REST API do WordPress?

A REST API fornece uma interface HTTP (via JSON) para acessar e manipular dados do site: posts, usuários, comentários, categorias, entre outros.

Exemplo de rota pública:

https://seudominio.com/wp-json/wp/v2/users

Essa rota expõe os usuários registrados, mesmo sem autenticação. Embora o WordPress limite algumas informações, isso ainda pode ser explorado.


Opções para Fechar ou Restringir a API

Abaixo, veja os métodos recomendados, ordenados por grau de impacto.


1. Restringir a API a usuários autenticados

Este é o método mais equilibrado: mantém a funcionalidade para quem está logado (painel, AJAX, Gutenberg), mas bloqueia o acesso externo anônimo.

Código:

add_filter('rest_authentication_errors', function($result) {
    if (!is_user_logged_in()) {
        return new WP_Error('rest_cannot_access', 'Acesso à API desabilitado para visitantes.', ['status' => 403]);
    }
    return $result;
});

Onde colocar: no functions.php ou em um MU-plugin (ver final do post).


2. Remover rotas específicas (como usuários)

Mesmo que a API esteja habilitada, é possível remover rotas sensíveis que entregam informações valiosas.

Código:

add_filter('rest_endpoints', function($endpoints) {
    unset($endpoints['/wp/v2/users']);
    unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
    return $endpoints;
});

Utilidade: evita que bots ou ferramentas automáticas consultem a lista de usuários.


3. Desabilitar a API por completo

Esse método elimina a REST API completamente, devolvendo erro 403 para qualquer chamada. Atenção: o editor Gutenberg, comentários AJAX e partes do painel podem parar de funcionar.

Código:

add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');

add_filter('rest_authentication_errors', function() {
    return new WP_Error('rest_disabled', 'A API REST está desabilitada neste site.', ['status' => 403]);
});

Recomendado apenas para sites estáticos ou com editores desativados.


4. Bloquear a API via Apache (.htaccess)

Se você usa Apache, é possível bloquear a URL da API no nível do servidor. Esse método não depende do WordPress.

Exemplo de .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/wp-json/ [NC]
    RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123$
    RewriteRule ^ - [F,L]
</IfModule>

Explicação: bloqueia acesso a /wp-json/, exceto para o IP indicado. Substitua pelo seu IP.


Como Criar um MU-Plugin Para Isso

MU-Plugins (Must-Use Plugins) são carregados automaticamente pelo WordPress e não podem ser desativados pelo painel.

Passo a passo:

  1. Acesse o diretório: wp-content/mu-plugins/ Se não existir, crie.
  2. Crie o arquivo: fechar-api.php
  3. Conteúdo do plugin:
<?php
/*
Plugin Name: Fechar REST API
Description: Bloqueia ou restringe a REST API do WordPress.
Author: DevData Sistemas
*/

add_filter('rest_authentication_errors', function($result) {
    if (!is_user_logged_in()) {
        return new WP_Error('rest_cannot_access', 'Acesso à API desabilitado para visitantes.', ['status' => 403]);
    }
    return $result;
});

add_filter('rest_endpoints', function($endpoints) {
    unset($endpoints['/wp/v2/users']);
    unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
    return $endpoints;
});

Resultado: visitantes anônimos não conseguem acessar a API e as rotas de usuários são ocultadas completamente.


Considerações Finais

  • A REST API é útil, mas se não for utilizada, deve ser desabilitada ou controlada.
  • Nunca confie na configuração padrão do WordPress para segurança.
  • MU-Plugins são ideais para aplicar políticas imutáveis de segurança.
  • Sempre teste em ambiente de homologação antes de aplicar em produção.
Rolar para cima