# Honeypot anti-bot no WordPress: Os 3 tipos e como aplicar

O <strong>honeypot</strong> é um campo-armadilha invisível que barra bots de spam sem pedir captcha ao usuário. Segundo o <a href="https://radar.cloudflare.com/security/application-layer" rel="noopener" target="_blank">Cloudflare Radar</a> (2026), 82,4% dos ataques de camada de aplicação no Brasil são mitigados como DDoS. Ele resolve spam de formulário, mas não para brute force de login sozinho. Comece pelo formulário de contato.

O honeypot é um campo oculto que humanos nunca veem e bots quase sempre preenchem, denunciando a automação. No WordPress, essa técnica intercepta spam de formulário e comentário antes do banco de dados, sem o atrito do reCAPTCHA. A vantagem é direta: zero clique extra para o visitante real e uma barreira silenciosa para scripts que varrem a web. Neste guia você vai ver os três tipos de honeypot que funcionam em produção, como aplicar cada um no Contact Form 7 e no Elementor PRO, e onde o método falha. Para o contexto maior de proteção, consulte o <a href="https://full.services/seguranca-wordpress/">guias de segurança WordPress da FULL</a>.

---

## Primeiros passos: Como o honeypot funciona

Um honeypot adiciona ao formulário um campo extra escondido do humano por CSS, mas presente no HTML que o bot lê. O visitante real nunca o preenche; o bot, que injeta texto em todos os inputs, preenche. Se o campo-armadilha vier com conteúdo, o servidor descarta a submissão em milissegundos.

A FULL atende mais de 150 mil sites conectados e, no suporte, boa parte dos tickets de spam de formulário some quando essa camada entra no lugar do captcha. A tabela abaixo resume os três tipos de campo-armadilha e o vetor que cada um cobre. O ponto central é que a verificação acontece no servidor, não só no navegador, o que impede o bot de burlar a checagem desativando JavaScript ou ignorando o estilo da página.

<table id="tipos-de-honeypot-wordpress">
  <caption>Os 3 tipos de honeypot no WordPress e quando usar cada um</caption>
  <thead>
    <tr>
      <th scope="col">Tipo de honeypot</th>
      <th scope="col">Como engana o bot</th>
      <th scope="col">Quando usar</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Campo oculto</th>
      <td>Input escondido por CSS que o bot preenche e o humano ignora</td>
      <td>Formulários de contato e comentários</td>
    </tr>
    <tr>
      <th scope="row">Time-trap</th>
      <td>Mede o tempo de preenchimento e rejeita envios em menos de 2 segundos</td>
      <td>Bots que submetem em 200 ms</td>
    </tr>
    <tr>
      <th scope="row">Token de sessão</th>
      <td>Exige um valor gerado no carregamento da página, ausente no bot direto</td>
      <td>Spam via requisição POST direta</td>
    </tr>
  </tbody>
</table>

<p class="wp-caption-text">Legenda: o campo-armadilha aparece no HTML que o bot lê, mas fica invisível para o visitante humano.</p>

## Os 3 tipos de honeypot e qual escolher

Existem três tipos de honeypot em uso real, e a escolha depende do vetor de ataque. O campo oculto cobre cerca de 80% do spam de formulário; o time-trap pega bots que submetem em 200 ms; o token de sessão fecha o envio via POST direto sem carregar a página.

A regra prática é combinar o campo oculto com o time-trap, porque cada um cobre uma fraqueza do outro: o primeiro pega o bot genérico, o segundo pega o que ignora campos ocultos mas envia rápido demais. Ferramentas como Contact Form 7, Akismet, Wordfence e All in One Security implementam variações dessas três abordagens, com graus diferentes de validação no servidor. O <a href="https://full.services/spam-wordpress/">guia de combate a spam no WordPress</a> detalha o impacto de cada camada no volume de envios indesejados e mostra quando o token de sessão vale o esforço de implementação.

## Como aplicar honeypot no formulário: Passo a passo

Aplicar um honeypot no formulário leva cerca de 5 minutos e não exige escrever PHP do zero. A abordagem mais segura é usar um plugin que já trate o campo no servidor, porque esconder o input só no CSS deixa o bot que lê folha de estilo passar. Os passos abaixo cobrem o Contact Form 7, que tem extensão oficial de honeypot, e valem como modelo para o Elementor PRO. Antes de começar, faça backup, conforme o <a href="https://full.services/como-fazer-hardening-de-seguranca-no-wordpress/">processo de hardening de segurança no WordPress</a>.

### Instale a extensão honeypot do Contact Form 7

Adicione o plugin Contact Form 7 Honeypot pelo painel em Plugins e ative-o. Ele registra a tag `[honeypot]`, que você insere no editor do formulário com um name pouco suspeito, como `email_2`. O campo nasce escondido e validado no servidor, então o bot que o preenche é barrado sem mensagem visível ao humano.

### Configure o name e o rótulo acessível

Defina um name plausível para o atacante (`website`, `email_confirm`) e mantenha o rótulo fora da tela com `aria-hidden="true"` e `autocomplete="off"`. Isso evita que um leitor de tela leia o campo e induza um usuário real a preenchê-lo, o que o marcaria como bot por engano.

### Ative o time-trap de 2 segundos

Habilite a verificação de tempo mínimo de preenchimento, disponível no All in One Security e em extensões do Contact Form 7. Um envio que chega em menos de 2 segundos quase sempre é automação. O honeypot de campo combinado com esse time-trap derruba a maioria do spam residual.

## Por que o honeypot não para brute force de login

O honeypot não para brute force de login porque protege o envio de formulários públicos, não o endpoint de autenticação `wp-login.php`. Um bot de força bruta não preenche campos visíveis: ele dispara requisições POST direto com pares de usuário e senha em sequência, ignorando qualquer armadilha do formulário de contato.

Para esse vetor você precisa de limite de tentativas, bloqueio de IP e autenticação em dois fatores. O <a href="https://full.services/wordpress-brute-force/">guia de proteção contra brute force no WordPress</a> e o <a href="https://full.services/wordfence-configuracao/">tutorial de configuração do Wordfence</a> cobrem rate limiting e 2FA, que a armadilha de campo sozinha não entrega. Na prática, são duas frentes distintas: uma blinda o formulário público, a outra blinda a porta de login, e tratar as duas com a mesma ferramenta é o erro mais comum que a gente vê no suporte.

## Dados reais: Cves e o que o honeypot não cobre

O honeypot reduz spam, mas não substitui a correção de vulnerabilidades no código dos plugins. Como CNA (CVE Numbering Authority) sob a CISA desde maio de 2022, a FULL é a única empresa brasileira autorizada a atribuir IDs CVE oficiais, então fala de falha de plugin com a autoridade de quem cataloga essas falhas.

Um exemplo: o Contact Form 7 já teve a <a href="https://nvd.nist.gov/vuln/detail/CVE-2020-35489" rel="noopener" target="_blank">CVE-2020-35489</a>, de CVSS 10.0, que permitia upload irrestrito de arquivos antes da 5.3.2, falha já corrigida. Nenhuma armadilha de campo teria parado essa exploração, que atacava o processamento de upload, não o spam de envio. Segundo o perfil público do WPVulnerability, o plugin hoje está seguro, com zero falhas sem patch, e seus CVEs corrigidos ao longo dos anos sinalizam manutenção ativa. Já o Elementor registra atenção, com a <a href="https://nvd.nist.gov/vuln/detail/CVE-2023-48777" rel="noopener" target="_blank">CVE-2023-48777</a> de CVSS 9.9 corrigida na 3.18.2. A categoria de <a href="https://full.services/cross-site-scripting-xss-o-que-e-e-como-corrigi-lo/">falhas como o XSS</a> mostra por que nenhum campo-armadilha substitui o patch.

<aside aria-label="Metodologia dos Testes">
<h2 id="metodologia-dos-testes">Metodologia dos testes</h2>
<p>As observações deste guia vêm da operação de suporte da FULL em mais de 150 mil sites conectados, entre <time datetime="2024-01">janeiro de 2024</time> e <time datetime="2026-06">junho de 2026</time>, com WordPress 6.x e PHP 8.2. Os perfis de vulnerabilidade citados foram extraídos do banco público do WPVulnerability e confirmados no NVD/NIST por ID CVE. Os dados de distribuição de ataques vêm do Cloudflare Radar, com janela dos últimos 28 dias para o Brasil. Cada CVE citada foi checada quanto a risco atual contra histórico, distinguindo falha sem patch de falha já corrigida, padrão de quem trabalha como CNA.</p>
</aside>

## Quando o honeypot falha e o que combinar

O honeypot falha contra bots avançados que leem CSS, executam JavaScript e ignoram campos com `display:none`, uma fatia crescente do tráfego malicioso. Nesses casos, o campo-armadilha some do alcance do bot e o spam passa. A defesa não pode terminar no formulário.

Segundo o <a href="https://radar.cloudflare.com/security/application-layer" rel="noopener" target="_blank">Cloudflare Radar</a>, nos últimos 28 dias 82,4% dos ataques de camada de aplicação no Brasil foram mitigados como DDoS e 16,4% por WAF, o que mostra que parte relevante das ameaças nem chega ao formulário: é barrada na borda. Por isso a recomendação no suporte da FULL é empilhar a armadilha de campo com um firewall de aplicação, que age antes do PHP processar a requisição. O <a href="https://full.services/all-in-one-security-seguranca-wordpress/">All in One Security</a> reúne campo-armadilha, firewall e limite de login no mesmo plugin, o que reduz as lacunas entre camadas soltas.

<aside aria-label="Resumo Tecnico">
<h2 id="resumo-tecnico">Resumo técnico</h2>
<ul style="margin-bottom:1.5rem">
  <li><strong>Melhor cenário:</strong> honeypot de campo oculto mais time-trap em formulário de contato com tráfego humano legítimo, onde corta a maioria do spam sem captcha.</li>
  <li><strong>Pior cenário:</strong> proteger login com honeypot apenas, deixando o brute force passar pelo POST direto em wp-login.php.</li>
  <li><strong>Principal conflito:</strong> esconder o campo só por CSS contra bots que leem folha de estilo e ignoram inputs ocultos.</li>
  <li><strong>Melhor alternativa gratuita:</strong> a extensão Honeypot do Contact Form 7, validada no servidor.</li>
  <li><strong>Em uma frase:</strong> o honeypot barra spam de formulário com zero atrito, mas só funciona somado a firewall e limite de login.</li>
</ul>
</aside>

## Decisão rápida: Honeypot, captcha ou firewall

A escolha entre honeypot, captcha e firewall depende do que você protege e do atrito que aceita impor ao usuário. A armadilha de campo custa zero clique extra; o reCAPTCHA adiciona fricção visível; o firewall WAF opera na borda antes do PHP. A árvore abaixo resume a decisão para cada cenário comum num site WordPress, com base nos vetores mais frequentes no suporte.

<ul class="arvore-decisao" style="margin-bottom:1.5rem">
  <li><strong>Se o problema é spam em formulário de contato</strong> → use honeypot de campo oculto com time-trap, sem captcha.</li>
  <li><strong>Se o ataque é brute force no login</strong> → ignore o honeypot e ative limite de tentativas com 2FA.</li>
  <li><strong>Se o bot lê CSS e ignora campos ocultos</strong> → combine honeypot com firewall de aplicação na borda.</li>
  <li><strong>Se o site recebe ataque de DDoS</strong> → priorize WAF e CDN, porque o honeypot não atua nesse vetor.</li>
</ul>

## Proteja o site inteiro com a plataforma FULL

Configurar honeypot, firewall e limite de login plugin a plugin consome tempo e ainda deixa lacunas entre as camadas. A plataforma FULL entrega o All in One Security e os outros 16 plugins do bundle ativados em um clique, no plano PRO por R$849,90 ao mês para até 10 sites, o que dá R$85 por site com firewall, armadilha de campo e monitoramento de CVE inclusos. No suporte, a gente vê que boa parte dos sites comprometidos tinha as camadas soltas e mal configuradas. Para ativar tudo de uma vez, conheça os <a href="https://full.services/planos">planos da FULL</a>. Para checar se algum plugin do seu site já está vulnerável, rode o <a href="https://security.full.services">FULL Scan</a> gratuitamente e consulte o <a href="https://security.full.services/vulnerabilidades-no-wordpress">repositório de vulnerabilidades</a> com dados oficiais de CVEs.

<h2 id="faq">Perguntas frequentes sobre honeypot no WordPress</h2>

<details>
<summary>O que é um campo honeypot e como ele detecta um bot?</summary>
<p>É um input escondido do usuário humano por CSS, mas presente no HTML do formulário. O bot automatizado preenche todos os campos, inclusive o oculto, e essa marca denuncia a automação. No servidor, o WordPress descarta qualquer envio em que o campo-armadilha venha preenchido. Por isso o método para spam sem pedir nenhum clique extra ao visitante real, ao contrário do reCAPTCHA.</p>
</details>

<details>
<summary>Por que o honeypot sozinho não para ataques de brute force no login?</summary>
<p>Porque o brute force ataca o endpoint wp-login.php com requisições POST diretas, sem carregar o formulário visível onde o honeypot vive. O bot de força bruta nem vê o campo-armadilha: ele dispara pares de usuário e senha contra a autenticação. Para esse vetor é preciso limite de tentativas, bloqueio de IP e 2FA, recursos que o Wordfence e o All in One Security oferecem e que a armadilha de campo não cobre.</p>
</details>

<details>
<summary>É possível usar honeypot sem captcha e ainda bloquear spam?</summary>
<p>Sim, é possível e é justamente a maior vantagem dessa técnica. Ela bloqueia a maior parte do spam de formulário sem exibir nenhum desafio ao usuário, mantendo a taxa de conversão intacta. A extensão Honeypot do Contact Form 7 faz isso de forma gratuita e validada no servidor. Para spam residual de bots mais rápidos, some um time-trap de 2 segundos, que rejeita envios automáticos quase instantâneos.</p>
</details>

<details>
<summary>Qual a diferença entre o honeypot e o time-trap de formulário?</summary>
<p>A armadilha de campo detecta o bot pelo input oculto que ele preenche; o time-trap detecta pelo tempo de envio. Um humano leva mais de 2 segundos para preencher um formulário, enquanto o bot submete em cerca de 200 ms. O time-trap rejeita esses envios ultrarrápidos. As duas técnicas são complementares: o campo pega bots genéricos e o time-trap pega os que ignoram campos ocultos mas submetem rápido demais.</p>
</details>

<details>
<summary>Quantos campos honeypot um formulário WordPress precisa ter?</summary>
<p>Um campo-armadilha bem configurado já basta para a maioria dos formulários, desde que validado no servidor e não apenas escondido por CSS. Adicionar dois ou três campos com names diferentes aumenta a captura contra bots que evitam um name específico, mas traz retorno decrescente. O ganho real vem de combinar a armadilha com um time-trap e, em sites muito visados, com um firewall de aplicação na borda.</p>
</details>

## Próximos passos para blindar seus formulários

Comece pelo formulário de contato, o alvo mais comum de spam, instalando a extensão honeypot do Contact Form 7 e somando um time-trap de 2 segundos. Em seguida, trate o login com limite de tentativas e 2FA, porque o honeypot não cobre esse vetor. Por fim, empilhe um firewall de aplicação para os bots que leem CSS e ignoram campos ocultos. Para continuar aprendendo, o <a href="https://full.services/academy/">FULL Academy</a> reúne os tutoriais e guias de segurança em um só lugar, e o <a href="https://security.full.services">FULL Scan</a> mostra em segundos se algum plugin do seu site já está exposto a uma CVE conhecida.
