
🔒 Como desativar a API REST no WordPress: 4 formas 2026
O que é a API REST e por que a desativar
A API REST no WordPress é uma interface incorporada através da qual aplicações externas leem e modificam dados do site. Os pedidos vão para /wp-json/, a resposta chega como JSON. Surgiu no WordPress 4.7 e está ativada por defeito em todos os sites desde então.
Isto é conveniente para programadores: aplicações móveis, arquitetura headless, integrações com serviços de terceiros. Mas se não usa nada disto, uma API REST aberta continua a ser uma brecha. Zero benefícios, riscos reais.
Ameaças específicas:
- Enumeração de utilizadores. Através de
/wp-json/wp/v2/usersqualquer pessoa pode obter uma lista de nomes de utilizador. O passo seguinte é a força bruta de palavras-passe. - Raspagem de conteúdo. Os artigos via
/wp-json/wp/v2/postssão extraídos automaticamente e republicados noutros sites. - Carga desnecessária. Cada pedido REST passa pelo ciclo completo do WordPress. Mil bots por minuto e o site vai abaixo.
Abaixo estão quatro formas de bloquear a API REST: desde um plugin de um clique até um bloqueio ao nível do servidor. Escolha a que se adequa à sua situação.
💡 Visão geral rápida:
- Instale o plugin Disable WP REST API: mais de 30 000 instalações ativas, sem configurações, funciona imediatamente após a ativação.
- Configure a restrição no Solid Security: se já tem um plugin de segurança no site, o interruptor da API REST está na secção Advanced.
- Adicione código ao functions.php: para quem não quer um plugin separado para um único filtro, um snippet usando
rest_authentication_errors. - Adicione uma regra ao.htaccess: um bloqueio ao nível do servidor Apache, um método rígido e sem exceções.
Método 1: Plugin Disable WP REST API, um clique
O método mais simples e seguro. O plugin Disable WP REST API no WordPress.org faz exatamente uma coisa: fecha a API REST a qualquer pessoa que não tenha sessão iniciada na área de administração. Os utilizadores autenticados funcionam como habitualmente, o editor de blocos, outros plugins, tudo funciona.
Instalação: Plugins → Adicionar Novo, pesquise por "Disable WP REST API", instale e ative. O plugin pesa 4 KB e começa a funcionar imediatamente. Não há configurações.
Verificação: saia da área de administração e abra https://вашсайт.ru/wp-json/ no seu navegador. Verá a mensagem: {"code":"rest_login_required","message":"REST API restricted to authenticated users.","data":{"status":401}}. Isto significa que a API REST está fechada a pedidos externos.
O autor do plugin, Jeff Starr, tem 15 anos de experiência em WordPress e é autor de vários livros sobre o tema. O código é aberto, o plugin é atualizado regularmente: em julho de 2026, versão 2.6.8, testado até ao WordPress 7.0.2.
Vantagens:
- A instalação demora um minuto, sem configurações
- 4 KB de código, não afeta a velocidade do site
- Não interfere com a área de administração nem com o editor de blocos
- Mais de 30 000 instalações ativas, classificação de 4,8 no WordPress.org
Desvantagens:
- Bloqueia apenas utilizadores não autenticados, um utilizador com sessão iniciada vê a API REST completa
- Sem configurações granulares na versão gratuita (a versão Pro, REST Pro Tools, adiciona filtragem por função e IP)
Preço: Grátis. Versão Pro, REST Pro Tools, no site do programador.
Download: 🔗 Disable WP REST API no WordPress.org
Método 2: Restrição via Solid Security
Se já tem o Solid Security (anteriormente iThemes Security) instalado, não precisa de um plugin separado para a API REST. As definições de segurança incluem um interruptor pronto a usar.
Caminho: Security → Settings → Advanced → WordPress REST API. No menu suspenso, selecione "Restricted Access", a API REST ficará disponível apenas para utilizadores autenticados.

Verifique também a definição XML-RPC na mesma secção. Se não usa a aplicação móvel do WordPress e não liga o Jetpack, desative-a também. Duas interfaces que raramente são necessárias, mas frequentemente atacadas.
Vantagens:
- Não é necessário um plugin separado, a funcionalidade já está incorporada no Solid Security
- Interface com explicações, sem necessidade de mexer em código
- O XML-RPC é configurado ao mesmo tempo
Desvantagens:
- Funciona apenas se já usar o Solid Security (instalá-lo só para isto é exagerado)
- A versão gratuita fecha a API REST completamente para utilizadores não autenticados, sem exceções para endpoints individuais
Download: 🔗 Solid Security no WordPress.org
Método 3: Código no functions.php, sem plugins
Se não quiser instalar um plugin para um único filtro, aqui está um snippet que faz o mesmo. Adicione-o ao functions.php do seu tema filho ou através do plugin Code Snippets.
Faça uma cópia de segurança do site antes de editar. Um erro no functions.php causa o ecrã branco da morte e, sem acesso de administrador, terá de o corrigir via FTP.
1 /** 2 * Close REST API for unauthorized users. 3 * Authorized users work with API as usual. 4 */ 5 add_filter('rest_authentication_errors', function($access) { 6 if (! is_user_logged_in()) { 7 return new WP_Error( 8 'rest_forbidden', 9 __('REST API restricted to authenticated users.', 'textdomain'), 10 array('status' => 403) 11 ); 12 } 13 return $access; 14 });
O que acontece aqui. O filtro rest_authentication_errors é acionado em cada pedido REST. is_user_logged_in() verifica se o visitante tem sessão iniciada. Se não, é devolvido um WP_Error com o código 403 e o WordPress bloqueia a continuação do pedido. Se tiver sessão iniciada, a API funciona sem restrições.
Após adicionar o código, verifique o resultado: abra /wp-json/ em modo anónimo. Deverá ser devolvido um erro 403.
Importante. O antigo filtro rest_enabled foi removido do núcleo do WordPress. Snippets com add_filter('rest_enabled', '_return_false'), que aparecem em tutoriais antigos, não funcionam a partir do WordPress 5.0. Use apenas rest_authentication_errors.
Método 4: Bloqueio via.htaccess, ao nível do servidor
Um método radical. Uma regra no .htaccess bloqueia os pedidos para /wp-json/ antes mesmo de o WordPress arrancar. O servidor Apache devolve um 403 sem nunca chegar ao PHP.
Adequado quando:
- A API REST definitivamente não é necessária de forma alguma, nem por si nem por plugins;
- o servidor corre em Apache (para Nginx a regra é escrita através de um bloco
location); - se sente confortável a editar a configuração do servidor.
Adicione ao ficheiro .htaccess na raiz do site:
1 <IfModule mod_rewrite.c> 2 RewriteEngine On 3 RewriteCond %{REQUEST_URI} ^/wp-json/ [NC] 4 RewriteRule .* - [F] 5 </IfModule>
A regra é acionada em qualquer URL que comece por /wp-json/. A flag [F] significa 403 Forbidden, a flag [NC] torna a comparação insensível a maiúsculas e minúsculas.
Certifique-se de fazer uma cópia do .htaccess antes de editar. Um erro de sintaxe derruba o site inteiro com um erro 500.
A principal desvantagem desta abordagem: todos os pedidos REST são bloqueados sem exceção. Se um formulário de contacto deixar de funcionar após a edição (o Contact Form 7 usa a API REST), volte ao método 1 ou 3.
Veja uma visão geral de 6 minutos dos riscos da API REST por David McAllen: ele mostra pedidos reais para /wp-json/ e demonstra ambos os plugins em ação.
⁉️🤔 FAQ
Preciso de desativar a API REST em todos os sites?
Não. Se usa a aplicação móvel do WordPress, o editor de blocos (Gutenberg) ou plugins como o Contact Form 7 e o WooCommerce, eles precisam da API REST. Nesse caso, é melhor não a desativar completamente, mas configurar uma restrição baseada em funções.
Deve desativar a API REST em sites onde não é usada intencionalmente: blogues no editor clássico, landing pages, sites institucionais. Nestes projetos, um
/wp-json/aberto não oferece nada além de riscos. Dois minutos para instalar o plugin Disable WP REST API e o vetor de ataque fica fechado.
Como verifico se a API REST está realmente desativada?
Abra https://вашсайт.ru/wp-json/ no seu navegador em modo anónimo (deve estar sem sessão iniciada). Se vir um erro 401 ou 403, a API REST está fechada. Se forem exibidos dados JSON, a proteção não está a funcionar, verifique as suas configurações.
A linha de comandos também funciona:
curl -I https://вашсайт.ru/wp-json/wp/v2/users. Um código de resposta 200 significa que a lista de utilizadores está a ser servida publicamente, um sinal de alerta, a proteção precisa de ser afinada.
Desativar a API REST vai quebrar o editor de blocos?
Não, se usar os métodos 1 a 3. O plugin Disable WP REST API, o Solid Security e o snippet rest_authentication_errors permitem a passagem de utilizadores autenticados. O editor de blocos funciona, uma vez que tem sessão iniciada na área de administração.
O método 4 (.htaccess) é a exceção. O bloqueio ao nível do servidor corta toda a gente indiscriminadamente e o editor de blocos deixará de funcionar. Se a área de administração quebrar após editar o
.htaccess, volte ao método 1 ou 3.
O que é mais seguro: um plugin ou código no functions.php?
Do ponto de vista da proteção, ambas as opções são equivalentes, usam o mesmo mecanismo do WordPress. A diferença está na conveniência e manutenção.
O plugin Disable WP REST API atualiza-se automaticamente, não depende do tema e não desaparece quando muda de template. O código no
functions.phpé para quem é fundamentalmente contra instalar plugins para uma única função. Escolha com base na sua abordagem de administração, não afeta a segurança.
Posso fechar apenas o endpoint /users e deixar o resto aberto?
Pode, mas isso é uma tarefa de ajuste fino. As ferramentas gratuitas neste artigo bloqueiam a API REST totalmente para utilizadores não autenticados.
Se precisar de manter alguns endpoints abertos e fechar outros, use o REST Pro Tools (a versão Pro do plugin Disable WP REST API) ou o filtro
rest_endpointsnofunctions.php. Terá de listar explicitamente as rotas permitidas, uma tarefa de meia hora se conhecer a estrutura da API REST do WordPress.
Bloqueou a API REST, e agora?
A API REST é apenas um vetor de ataque. Ao fechá-la, removeu o ponto de entrada mais fácil para os bots, mas isto não substitui uma proteção completa.
Resumindo: o método 1 (o plugin Disable WP REST API) resolve o problema em dois minutos. Instale-o, verifique /wp-json/ em modo anónimo, certifique-se de que o seu formulário de contacto funciona, está feito. Os riscos estão reduzidos.
A camada seguinte é uma firewall e proteção contra força bruta. Comece com o Solid Security gratuito: ele fecha a API REST, o XML-RPC e a força bruta de palavras-passe numa única interface. Qual o plugin de segurança que usa, diga-nos nos comentários.


