# Como corrigir o conflito de spam entre All in One Security e WPForms no WordPress

O conflito de spam entre AIOS e WPForms ocorre quando o firewall e as camadas de proteção do All in One Security inspecionam o POST do formulário antes do WPForms e bloqueiam o envio ou disparam o lockout do remetente, fazendo entradas legitimas falharem ou caírem como spam.

## 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.

**Antes de começar:** Antes de mexer no firewall do AIOS, na lista de IPs bloqueados ou no .htaccess, faça um backup completo do site (arquivos e banco) ou teste primeiro em staging. Uma regra de firewall removida sem cuidado pode reduzir a proteção do site, entao reative cada camada após confirmar que o formulário voltou a funcionar.

## 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.

Erros relacionados

- [Como corrigir o bloqueio de upload de arquivos entre All in One Security e WPForms](https://full.services/wp-fixer/corrigir-upload-bloqueado-aios-wpforms/)
- [Como corrigir o bloqueio de spam de comentários no All in One Security](https://full.services/wp-fixer/corrigir-spam-comentarios-aios/)
- [Como corrigir o checkout bloqueado pelo firewall do All in One Security no WooCommerce](https://full.services/wp-fixer/corrigir-bloqueio-checkout-aios-woocommerce/)

## 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

1. 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
```

2. 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
```

3. 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
```

4. 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
```

5. 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
```


## Código

```php
<?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 );
        }
    }
}
```

## Perguntas frequentes

### Por que o AIOS bloqueia o envio do meu formulário WPForms

Porque o firewall e a regra de bloqueio por 404 do AIOS inspecionam a requisicao de envio antes do WPForms processa-la. Quando o admin-ajax.php usado pelo WPForms casa com uma regra de bloqueio, o IP do remetente e travado e o envio falha, mesmo sendo legitimo.

### Como saber se o problema e do AIOS ou do WPForms

Desative temporariamente o All in One Security e tente enviar o formulário em uma aba anonima. Se o envio passar sem o AIOS e falhar com ele ativo, o conflito esta no AIOS. Reative o plugin e ajuste o firewall e o bloqueio por 404.

### Por que entradas reais aparecem como spam no WPForms com o AIOS ativo

Em geral o token antispam do WPForms quebra porque a página do formulário foi servida em cache e o token chegou expirado. Exclua a URL do formulário do cache para que cada visitante receba um token valido e a entrada deixe de ser marcada como spam.

### Preciso desligar o firewall do AIOS para o WPForms funcionar

Não. Você não precisa desligar o firewall inteiro. Basta liberar o IP travado, conferir que a regra de bloqueio por 404 não captura o admin-ajax.php e manter o cache fora da página do formulário, preservando a proteção do AIOS.

### O CAPTCHA do AIOS conflita com o reCAPTCHA do WPForms

Pode conflitar quando os dois aparecem na mesma tela. Segundo a documentação do AIOS, o Login Captcha e configurado em WP Security, Brute Force, aba Login Captcha e foi pensado para o login. Deixe o formulário público a cargo do reCAPTCHA do próprio WPForms.

### O envio do WPForms falha so para visitantes deslogados

Isso indica que a proteção de login por forca bruta baseada em cookie ou a renomeacao da URL de login do AIOS bloqueou o admin-ajax.php para quem não esta autenticado. Garanta que esse endpoint continue acessivel para visitantes deslogados.

### Onde vejo os IPs que o AIOS bloqueou ao testar o formulário

Acesse WP Security e abra as configurações do firewall e a lista de IPs bloqueados. O IP de quem tentou enviar costuma estar la após a tentativa. Remova-o da lista e ajuste a regra que o travou para não reincidir.

### Depois de ajustar o AIOS o site continua protegido contra spam

Sim. As correcoes liberam apenas o caminho legitimo do formulário. O firewall, a proteção por forca bruta e o antispam do WPForms continuam ativos, entao os envios falsos seguem barrados enquanto os reais passam.

**Fonte:** [All-In-One Security (AIOS) — How to implement CAPTCHA on your WordPress login page](https://teamupdraft.com/documentation/all-in-one-security/getting-started/how-to-implement-captcha-on-wordpress/)
