Como corrigir o conflito de spam entre All in One Security e WPForms no WordPress
O que é conflito de spam entre AIOS e WPForms?
O conflito de spam entre AIOS e WPForms acontece porque os dois plugins atuam na mesma requisicao de envio, mas em camadas diferentes. O WPForms tem sua própria proteção antispam (token antispam, honeypot e campo de tempo mínimo de preenchimento) que decide se uma entrada e legitima depois que o WordPress processa o POST. Já o All in One Security age antes disso: o firewall, a regra de bloqueio por evento 404 e a proteção de login por forca bruta inspecionam a requisicao no nível do servidor ou do init do WordPress, sem saber que aquele POST veio de um formulário valido.
Na prática, o usuário clica em Enviar e nada acontece, o envio retorna erro, ou o IP do visitante e adicionado a lista de bloqueio do AIOS. Em outros casos a entrada chega, mas e marcada como spam dentro do WPForms porque o token antispam quebrou no cache ou o CAPTCHA do AIOS no login confundiu o fluxo. O resultado e o mesmo: formulário que parece estar com spam, quando na verdade e uma incompatibilidade de configuração entre o WPForms e as camadas de segurança do AIOS.
Como identificar
- O visitante clica em Enviar e o WPForms exibe ‘Error: Unable to submit form’ ou simplesmente recarrega a página sem mostrar a mensagem de confirmacao.
- Entradas reais chegam em WPForms -> Entradas marcadas como Spam, mesmo vindo de pessoas conhecidas que você sabe que não são bots.
- O IP de quem tentou enviar o formulário aparece bloqueado em WP Security -> Configurações do firewall ou na lista de IPs travados do AIOS logo após a tentativa.
- O envio falha com 403 Forbidden ou a página retorna ‘Sorry, you are not allowed to access this page’ quando o AIOS esta ativo, e volta a funcionar ao desativar o AIOS.
- O CAPTCHA matematico do AIOS aparece em telas onde não deveria, ou o reCAPTCHA do WPForms não carrega, deixando o botão Enviar inerte.
Como prevenir
- Sempre exclua páginas que contem formulários WPForms do cache para que o token antispam seja gerado fresco a cada visita.
- Mantenha o CAPTCHA de cada formulário a cargo de um único plugin: AIOS no login, WPForms no formulário público, sem empilhar os dois na mesma tela.
- Ao habilitar bloqueio por eventos 404 no AIOS, valide que as strings de URL configuradas não capturam admin-ajax.php nem a URL de envio do formulário.
- Documente as regras de firewall do AIOS ativas no site, para que um ajuste futuro de segurança não volte a bloquear o envio dos formulários sem que ninguem perceba.
Causa
- A regra de bloqueio por evento 404 do AIOS esta ativa e captura o admin-ajax.php ou a URL de envio do WPForms como um 404 suspeito, travando o IP do remetente antes de o formulário ser processado.
- O firewall do AIOS bloqueia o método POST ou aplica filtragem de requisicao que rejeita o payload do WPForms enviado via admin-ajax.php, fazendo o envio AJAX falhar silenciosamente.
- O token antispam do WPForms e gerado por sessao e fica preso em cache de página (a própria página do formulário foi cacheada), entao o token chega expirado e o WPForms classifica a entrada legitima como spam.
- O Login Captcha do AIOS, configurado em WP Security -> Brute Force -> aba Login Captcha, esta habilitado em páginas além do login e interfere no fluxo de validação do formulário quando o WPForms também usa CAPTCHA na mesma tela.
- A proteção de login por forca bruta baseada em cookie do AIOS renomeia ou protege a URL de login e bloqueia chamadas AJAX não autenticadas, derrubando o envio do WPForms de visitantes deslogados.
Como resolver
- Confirme que o AIOS e a causa isolando o plugin: Desative temporariamente o All in One Security e tente enviar o formulário de novo em uma aba anonima. Se o envio passar com o AIOS desligado e falhar com ele ligado, o conflito esta confirmado e você sabe onde atuar. Reative o AIOS antes de seguir para os ajustes finos.
Painel WP -> Plugins -> Plugins Instalados Localize 'All-In-One Security (AIOS)' e clique em Desativar Teste o envio do WPForms em uma janela anonima e depois reative o AIOS - Libere o IP de teste e revise a regra de bloqueio por 404: No AIOS, abra a configuração do firewall e o recurso que bloqueia IPs por eventos 404. Remova da lista de bloqueio o IP que ficou travado no teste e ajuste a regra de 404 para não incluir a URL de envio do formulário, evitando que admin-ajax.php seja contado como 404 suspeito.
Painel WP -> WP Security -> Configurações do firewall Localize o recurso de bloqueio por evento 404 e remova o IP de teste da lista de bloqueados Confirme que admin-ajax.php não casa com as strings de URL configuradas para bloqueio - Exclua a página do formulário do cache para preservar o token antispam: Se a entrada legitima cai como spam, o token antispam do WPForms provavelmente esta sendo servido em cache expirado. Exclua a URL da página com formulário das regras de cache do seu plugin de cache (ou do servidor) para que cada visitante receba um token novo e valido.
Abra as configurações do seu plugin de cache (ex.: WP Rocket -> Regras Avancadas) Adicione a URL da página do formulário na lista 'Nunca armazenar em cache (URLs)' Limpe o cache e teste um novo envio do formulário - Alinhe o CAPTCHA: use um plugin so para cada formulário: Evite empilhar o Login Captcha do AIOS e o CAPTCHA do WPForms na mesma tela. Em WP Security -> Brute Force -> aba Login Captcha, mantenha o captcha do AIOS apenas no login e deixe a proteção do formulário público a cargo do reCAPTCHA configurado no próprio WPForms.
Painel WP -> WP Security -> Brute Force -> aba Login Captcha Mantenha 'Enable Captcha On Login Page' restrito ao login, sem aplicar a outras telas Painel WP -> WPForms -> Configurações -> CAPTCHA: configure o reCAPTCHA do WPForms para o formulário público - Ajuste a proteção de login para não bloquear AJAX de visitante: Se você usa a proteção de login por forca bruta baseada em cookie ou renomeia a URL de login, garanta que o admin-ajax.php continue acessivel para visitantes deslogados, pois o WPForms usa esse endpoint no envio AJAX. Teste deslogado depois de cada ajuste.
Painel WP -> WP Security -> Brute Force -> revise a proteção baseada em cookie e a renomeacao de login Confirme que admin-ajax.php não foi protegido junto com a área de login Teste um envio do formulário com o navegador deslogado em janela anonima
<?php
/**
* Garante que o admin-ajax.php usado pelo WPForms nao seja
* cacheado, preservando o token antispam para visitantes deslogados.
* Coloque no functions.php do tema-filho ou em um plugin proprio.
*/
add_action( 'init', 'full_wpforms_no_cache_ajax' );
function full_wpforms_no_cache_ajax() {
if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) {
return;
}
$action = isset( $_REQUEST['action'] ) ? sanitize_key( $_REQUEST['action'] ) : '';
if ( 0 === strpos( $action, 'wpforms' ) ) {
nocache_headers();
if ( ! defined( 'DONOTCACHEPAGE' ) ) {
define( 'DONOTCACHEPAGE', true );
}
}
}














