Saltar para o conteúdo
🔒 Como desativar a API REST no WordPress: 4 formas 2026

🔒 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/users qualquer 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/posts sã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 */
5add_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>
2RewriteEngine On
3RewriteCond %{REQUEST_URI} ^/wp-json/ [NC]
4RewriteRule .* - [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_endpoints no functions.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.