Prevenir spam e envios de bots nos formulários

Trava o spam e os ataques de bots aos teus formulários. Aprende técnicas de prevenção de bots e quando usar CAPTCHA.

Rascunho

Vê os envios de qualquer formulário sem proteção e vais encontrar sempre o mesmo: dezenas de entradas de spam, contactos falsos, ligações maliciosas e disparates. Isto não vem de pessoas a preencher o teu formulário à mão. Vem de scripts automáticos controlados por atacantes e spammers. Prevenir o spam e os envios de bots nos formulários trava estes ataques antes de te fazerem perder tempo ou prejudicarem os teus dados.

O spam é mais do que um incómodo. Enche a tua base de dados, distorce as tuas estatísticas, enche a tua caixa de entrada e pode esconder ameaças de segurança reais. Uma prevenção eficaz de bots protege o teu formulário e mantém os teus dados limpos.

O que vais aprender: como os bots automáticos atacam formulários, porque é que as proteções simples não chegam, que métodos de prevenção de bots funcionam melhor e como aplicá-los sem irritar os visitantes legítimos.

Como funcionam os ataques de bots aos formulários

Um bot (abreviatura de robot) é um programa automático que executa tarefas repetitivas. Os bots que atacam formulários fazem coisas como:

  • Preencher automaticamente todos os campos com texto aleatório
  • Enviar o formulário milhares de vezes por dia
  • Injetar ligações ou anúncios nos campos do formulário
  • Testar vulnerabilidades de segurança sondando o formulário
  • Recolher endereços de email para os juntar a listas de spam

Ao contrário de um hacker que pode visar um formulário específico, os bots atacam milhares de formulários em escala. Percorrem a internet à procura de formulários e, quando encontram um, enviam spam automaticamente. Podes acordar com 10 000 envios falsos na caixa de entrada.

Porque é que os formulários são vulneráveis aos bots

Os formulários aceitam dados de qualquer pessoa

Por natureza, os formulários estão abertos à internet. Qualquer pessoa pode encontrar o teu formulário e enviá-lo. Não há verificação inicial de que quem envia é um humano real.

Os formulários são previsíveis

Se um bot consegue ver o teu formulário no HTML de uma página web, consegue extrair a estrutura do formulário e perceber que campos precisam de ser preenchidos. Isto faz dos formulários alvos fáceis de automatizar.

A maioria dos formulários não tem proteção

Muitos websites publicam formulários sem qualquer deteção de bots. Os bots aprendem depressa a explorar estes alvos indefesos.

Porque é que as proteções básicas não funcionam

Ofuscar os nomes dos campos do formulário

Algumas pessoas pensam que esconder os nomes dos campos do formulário vai confundir os bots. Mas os bots conseguem fazer engenharia inversa dos nomes dos campos a partir do HTML ou analisando o envio do formulário. Isto não funciona.

Campos honeypot (campos falsos)

Um campo honeypot é um campo escondido do formulário que os visitantes legítimos nunca veem. Os bots, que não percebem CSS nem atributos escondidos, preenchem-no na mesma. Podes rejeitar os envios em que o honeypot está preenchido.

Isto funciona contra bots muito simples, mas os bots sofisticados já aprenderam sobre os campos honeypot e sabem que não os devem preencher. Hoje é uma defesa fraca por si só.

Problemas de matemática ou perguntas simples

"Quanto é 2 + 2?" parece algo a que um bot não consegue responder. Mas a IA moderna e as ferramentas de OCR (reconhecimento ótico de caracteres) conseguem ler e resolver problemas de matemática simples. Esta defesa está ultrapassada.

Métodos eficazes de prevenção de bots

CAPTCHA

O CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) é o método de prevenção de bots mais comum. Há vários tipos:

CAPTCHA de texto: os utilizadores resolvem um puzzle de texto distorcido. Mais antigo e hoje menos eficaz, porque a IA consegue ler texto distorcido.

CAPTCHA de imagens (reCAPTCHA v2): os utilizadores clicam em caixas de seleção ou identificam objetos em imagens. Mais fiável do que o de texto, mas ainda não é perfeito. É o que vês em muitos websites.

CAPTCHA invisível (reCAPTCHA v3): o utilizador não vê nada. O sistema analisa o comportamento (como move o rato, com que rapidez preenche o formulário) para determinar se é humano. Sem fricção para os utilizadores reais, mas exige um backend mais sofisticado.

Limitação de pedidos (rate limiting)

A limitação de pedidos restringe quantas vezes o mesmo endereço IP ou a mesma conta de utilizador pode enviar um formulário num determinado período. Se um atacante tentar enviar 1000 formulários em 10 minutos a partir do mesmo IP, a limitação de pedidos bloqueia-o depois dos primeiros 5 envios em 10 minutos.

A limitação de pedidos é invisível para os utilizadores reais (a maioria das pessoas não envia o mesmo formulário 20 vezes numa hora), mas eficaz contra bots (que enviam repetidamente e a uma velocidade sobre-humana).

Verificação de email

Exige que os visitantes verifiquem o endereço de email clicando numa ligação num email de confirmação. Os bots normalmente não conseguem aceder a caixas de email (ou usam endereços falsos que não são reais). Isto elimina muitos envios de bots.

Desvantagem: cria fricção extra para os visitantes legítimos. Usa-a em formulários de alto valor (inscrições, criação de conta) em que estás disposto a acrescentar um passo extra.

Análise comportamental

Analisa como os visitantes interagem com o formulário:

  • Preencheram o formulário a uma velocidade sobre-humana (todos os campos em 0,5 segundos)? Provavelmente um bot.
  • Nunca deram foco a nenhum campo (só passaram com a tecla tab sem escrever)? Provavelmente um bot.
  • Preencheram um campo, apagaram, preencheram outra vez, apagaram outra vez? Provavelmente um humano.

Isto exige JavaScript no formulário para acompanhar as interações do utilizador. É invisível para os utilizadores reais e eficaz contra bots simples.

Identificação do dispositivo (device fingerprinting)

Analisa as características do dispositivo que envia o formulário (tipo de navegador, sistema operativo, resolução do ecrã, fuso horário, etc.). Os bots têm muitas vezes identificações de dispositivo invulgares ou inconsistentes. Os dispositivos legítimos têm padrões que parecem humanos.

Isto é sofisticado e exige serviços de terceiros, mas é muito eficaz.

Quando usar cada método

Para um formulário de contacto básico

Usa a limitação de pedidos (invisível) mais um CAPTCHA se receberes muito spam. A verificação de email é opcional.

Para um formulário de inscrição numa newsletter

Usa a limitação de pedidos mais a verificação de email. Isto confirma que o email é real e evita inscrições em massa de endereços falsos.

Para um formulário de alto valor (criação de conta, pagamento, etc.)

Usa várias camadas: limitação de pedidos, CAPTCHA, verificação de email. Considera a análise comportamental para mais confiança.

Para um endpoint de API ou acesso programático

Usa autenticação de API (tokens ou chaves de API) em vez de CAPTCHA. O CAPTCHA não funciona em APIs. A limitação de pedidos é essencial.

O impacto da prevenção de bots na experiência do utilizador

Uma prevenção forte de bots pode criar fricção para os utilizadores reais. Equilibra a segurança com a usabilidade:

CAPTCHA: acrescenta alguns segundos e um passo extra. Visível e ligeiramente irritante, mas bem aceite pelos utilizadores. Muitas pessoas esperam-no.

Verificação de email: exige que o utilizador verifique o email e clique numa ligação. Mais fricção, mas necessária para ações de alto valor.

Análise comportamental ou limitação de pedidos: invisíveis. Sem qualquer fricção para os utilizadores reais.

Boa prática: usa primeiro os métodos invisíveis (limitação de pedidos, análise comportamental). Só mostra um CAPTCHA se o envio do formulário parecer suspeito. Assim, 95% dos utilizadores reais nunca veem um CAPTCHA, mas os bots quase sempre veem.

Monitorizar os envios de formulários à procura de spam

Mesmo com a prevenção de bots em vigor, algum spam pode passar. Monitoriza os teus envios:

  • Revê regularmente os novos envios à procura de padrões óbvios de spam
  • Procura envios com texto sem sentido ou ligações
  • Acompanha a taxa de envios (se disparar de repente, podes estar sob ataque)
  • Verifica de que países vêm os envios (se só serves os EUA, envios de certos países podem ser suspeitos)

A maioria dos formulários permite marcar envios como spam. Usa isto para treinar modelos de aprendizagem automática que possam ajudar a prevenir spam no futuro.

O que o WEMASY faz para prevenir spam

Os formulários do WEMASY incluem prevenção de bots por predefinição. Todos os formulários incluem limitação de pedidos (os envios múltiplos do mesmo IP são travados) e proteção CAPTCHA opcional (reCAPTCHA v3). Podes ativar a verificação de email nos formulários que a exigem. O WEMASY também monitoriza os envios à procura de padrões de spam e assinala as entradas suspeitas.

Todos os formulários trazem proteção contra spam. Proteções mais avançadas estão disponíveis em planos superiores. Vê os detalhes do teu plano na página de preços.

Perguntas frequentes

O CAPTCHA vai impedir todo o spam?
O CAPTCHA bloqueia a maioria dos bots, mas não todos. Ataques sofisticados podem contornar o CAPTCHA com serviços que os resolvem automaticamente. No entanto, o CAPTCHA sobe bastante a fasquia. A maioria dos spammers passa para alvos mais fáceis. Combina o CAPTCHA com a limitação de pedidos para uma melhor proteção. Com o criador de websites do WEMASY, podes configurar isto diretamente no teu website.
O reCAPTCHA v3 é melhor do que o v2?
O reCAPTCHA v3 é invisível (sem fricção para os utilizadores), enquanto o v2 mostra uma caixa de seleção em que os utilizadores têm de clicar. O v3 é melhor para a experiência do utilizador, mas exige que confies na análise que a Google faz do comportamento do utilizador. O v2 é mais transparente porque o utilizador faz uma escolha explícita. Ambos são eficazes. O v3 é preferível em formulários com muito tráfego.
Posso usar campos honeypot em vez de CAPTCHA?
Os honeypots bloqueiam bots simples, mas não os sofisticados. Combina o honeypot com a limitação de pedidos para uma melhor proteção. Se tens uma taxa de spam alta, o honeypot sozinho provavelmente não chega. Acrescenta CAPTCHA ou verificação de email.
E se utilizadores legítimos não conseguirem resolver o CAPTCHA?
Algumas pessoas (sobretudo com deficiências visuais) têm dificuldades com CAPTCHAs de imagens. A maioria dos serviços, como o reCAPTCHA v2, inclui alternativas de áudio. Para a acessibilidade, usa o CAPTCHA mais amigável que existir e garante que a alternativa está disponível. Ou usa o CAPTCHA invisível (v3), que não exige ação do utilizador.
Como sei se o meu formulário está sob ataque de spam?
Repara em picos súbitos de envios, sobretudo se contiverem padrões óbvios de spam (ligações, texto sem sentido, texto repetido). Se de repente recebes 100 envios em 10 minutos (quando a tua taxa normal é de 10 por dia), estás sob ataque. Ativa de imediato uma prevenção de bots mais rigorosa.

Põe isto em prática
no teu próprio site.

Começa grátis com a WEMASY e cria o teu site em poucos minutos.