🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como desativar o XML-RPC com segurança no WordPress

Time Full Services Time Full Services
Tipo Seguranca
Nome do erro XML-RPC (vulnerabilidade) EN: XML-RPC vulnerability
Severidade Atenção
Descrição Desativar o XML-RPC no WordPress significa bloquear o arquivo xmlrpc.php, uma interface antiga de acesso remoto que invasores abusam para força bruta amplificada e ataques de pingback. Em sites que não usam app móvel nem Jetpack clássico, desligá-lo remove uma superfície de ataque inteira sem perda de função.

O que é o XML-RPC no WordPress?

O XML-RPC é um protocolo antigo de acesso remoto do WordPress, exposto pelo arquivo xmlrpc.php na raiz do site. Ele permite publicar por apps externos, pingbacks e algumas integrações legadas. O problema é de segurança: o método system.multicall deixa o atacante testar centenas de senhas em uma única requisição (força bruta amplificada), e o pingback é usado em ataques de negação de serviço refletida. A maioria dos sites hoje usa a REST API e não precisa do XML-RPC, então desativá-lo é uma medida de hardening segura.

Como identificar

  • No log de acesso aparecem dezenas de POST para “/xmlrpc.php” vindos do mesmo IP em segundos.
  • O plugin de segurança reporta “XML-RPC multicall attempt” ou bloqueios repetidos no xmlrpc.php.
  • Picos de CPU e lentidão coincidindo com requisições a xmlrpc.php no relatório do servidor.
  • Recebe pingbacks de spam ou seu site aparece como origem de um ataque de pingback reportado pelo host.
Antes de começar: Se você usa o app oficial do WordPress, o Jetpack clássico ou pública por e-mail, confirme que essas integrações continuam funcionando após o bloqueio. Teste em horário de baixo tráfego e tenha o backup do .htaccess antes de editar.

Como prevenir

  • Mantenha o xmlrpc.php bloqueado por padrão em sites que não dependem dele
  • Use um firewall/WAF que limite requisições a xmlrpc.php e bloqueie multicall
  • Prefira a REST API para integrações modernas, que tem controle de autenticação mais granular

Causa

  • O xmlrpc.php fica ativo por padrão em toda instalação WordPress, mesmo sem app remoto configurado.
  • O método system.multicall permite testar muitas senhas numa só chamada, burlando limites de tentativa de login.
  • O recurso de pingback (X-Pingback) é explorado para ataques DDoS refletidos usando seu site como amplificador.
  • Bots varrem a internet em busca de xmlrpc.php aberto porque é um vetor de ataque conhecido e padronizado.
  • Plugins de cache ou firewall mal configurados deixam o xmlrpc.php fora das regras de bloqueio.

Como resolver

  1. Confirme se você realmente não usa o XML-RPC: verifique se algum app móvel, o Jetpack clássico ou uma integração externa pública via xmlrpc.php. Se nada depende dele, pode bloquear com segurança.
  2. Bloqueie o arquivo no servidor (Apache): no Apache, a forma mais robusta é negar acesso ao xmlrpc.php direto no .htaccess da raiz, antes mesmo de o PHP rodar. Use o bloco de código abaixo, que recusa qualquer requisição ao arquivo.
  3. No Nginx, negue pela configuração do site: adicione um bloco location para xmlrpc.php retornando 403 e peça ao host para recarregar a configuração.
  4. Alternativa via filtro do WordPress: se não puder editar o servidor, desative o XML-RPC por código no functions.php do tema-filho ou em um plugin de snippets, com o filtro xmlrpc_enabled e a remoção do cabeçalho de pingback.
  5. Valide o bloqueio: acesse seudominio.com/xmlrpc.php no navegador. Bloqueado certo, retorna 403 Forbidden em vez da mensagem "XML-RPC server accepts POST requests only".
APACHE
# .htaccess da raiz - nega acesso ao xmlrpc.php antes de o PHP rodar (Apache)
<Files xmlrpc.php>
Require all denied
</Files>

# Em servidores Apache mais antigos (2.2), use a sintaxe equivalente:
# <Files xmlrpc.php>
#   Order Deny,Allow
#   Deny from all
# </Files>

Perguntas frequentes

Desativar o XML-RPC quebra alguma coisa no meu site?
Só se você usa o app oficial do WordPress, o Jetpack clássico ou publicação por e-mail, que dependem do xmlrpc.php. Sites comuns gerenciados pelo painel e pela REST API não perdem nenhuma função ao desativá-lo.
Bloquear pelo .htaccess é melhor que desativar por plugin?
Sim. O .htaccess barra a requisição antes de o PHP carregar, gastando menos recurso e protegendo contra força bruta de forma mais eficiente. O filtro por código só age depois que o WordPress já iniciou o processamento.
O XML-RPC é o mesmo que a REST API do WordPress?
Não. São interfaces diferentes. O XML-RPC é o protocolo antigo via xmlrpc.php; a REST API é a interface moderna em /wp-json/. Desativar o XML-RPC não afeta a REST API, e a maioria dos plugins atuais usa a REST.
Como sei se estou sob ataque de força bruta pelo XML-RPC?
Olhe o log de acesso do servidor: muitos POST para /xmlrpc.php do mesmo IP em poucos segundos é o sinal clássico. Plugins de segurança também alertam "XML-RPC multicall attempt" quando detectam o abuso do método multicall.
Preciso desativar o XML-RPC se já uso um firewall?
Um WAF ajuda limitando as requisições, mas bloquear o arquivo direto é a defesa mais limpa quando você não usa o recurso. Camadas se somam: firewall mais xmlrpc.php negado no servidor cobrem o vetor por completo.
Como reativo o XML-RPC se precisar depois?
Remova o bloco de negação do xmlrpc.php que você adicionou ao .htaccess, ou apague o filtro xmlrpc_enabled. Acesse seudominio.com/xmlrpc.php: voltar a mostrar "XML-RPC server accepts POST requests only" confirma que está ativo de novo.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes