Saltar para o conteúdo
BeoHosting
BeoHosting
Segurança

Como Proteger um Formulário de Spam

BeoHosting Team··10 min de leitura de leitura
Como Proteger um Formulário de Spam

Porque é que os formulários são um alvo de spam

Cada formulário no seu site é um alvo potencial para bots de spam. Os formulários de contacto, de comentários, de registo e de subscrição de newsletter são constantemente atacados por scripts automatizados que enviam mensagens indesejadas. As mensagens de spam não só entopem a sua caixa de entrada - podem também conter ligações maliciosas, tentativas de phishing ou até tentativas de injeção de SQL.

Estima-se que mais de 40% do tráfego total da internet seja gerado por bots, e uma parte significativa desses bots foi concebida para enviar spam através de formulários web. Sem qualquer proteção, pode esperar dezenas a centenas de mensagens de spam por dia, consoante a popularidade do seu site. Para além do incómodo, o spam pode ter consequências sérias - se os spammers usarem o seu formulário para enviar emails, o seu domínio pode acabar numa lista negra.

reCAPTCHA - a proteção da Google

O Google reCAPTCHA é o método mais popular de proteção contra spam. Existe em três versões, cada uma com as suas vantagens e desvantagens.

reCAPTCHA v2 (checkbox)

A clássica caixa de seleção "Não sou um robô". O utilizador clica na caixa e o algoritmo da Google analisa os movimentos do rato, a velocidade de interação e outros sinais para determinar se o utilizador é humano. Por vezes exige um desafio adicional, como o reconhecimento de imagens. Vantagens: simples de implementar, fiável. Desvantagens: adiciona fricção à experiência do utilizador, pode frustrar utilizadores com ligações fracas.

reCAPTCHA v3 (invisível)

Corre em segundo plano sem qualquer interação do utilizador. Atribui uma pontuação de 0,0 (provavelmente bot) a 1,0 (provavelmente humano) com base no comportamento do utilizador no site. Você decide que pontuação é aceitável (normalmente 0,5 ou superior). Vantagens: zero fricção para o utilizador, monitorização contínua. Desvantagens: pode produzir falsos positivos, requer verificação da pontuação no lado do servidor, levanta questões de privacidade porque acompanha o comportamento do utilizador.

Turnstile (alternativa da Cloudflare)

O Cloudflare Turnstile é uma alternativa ao Google reCAPTCHA que se foca na privacidade. Não utiliza desafios visuais e não acompanha os utilizadores para além do seu site. A implementação é semelhante à do reCAPTCHA, mas sem o tracking da Google. É gratuito para todos os sites e simples de integrar.

A técnica do honeypot

O honeypot é um método elegante e totalmente invisível de proteção contra bots de spam. O princípio é simples: adicione ao formulário um campo oculto que é invisível para os utilizadores humanos mas visível para os bots.

Como funciona

Adicione um campo de input ao formulário e oculte-o com CSS (display: none ou position: absolute com um deslocamento negativo). Dê-lhe um nome que pareça legítimo, como "email2" ou "website". Os utilizadores humanos não verão este campo e não o preencherão. Os bots, contudo, preenchem automaticamente todos os campos de um formulário. Quando o seu servidor recebe um formulário com o campo honeypot preenchido, sabe que foi enviado por um bot e pode ignorá-lo.

Implementação

No lado HTML, adicione um campo com uma classe CSS que o oculte. No servidor, verifique se o campo honeypot está vazio. Se não estiver - rejeite a mensagem sem erro (devolva a mesma resposta de "obrigado" para que o bot não saiba que foi apanhado). Importante: não utilize display:none no próprio elemento, porque bots mais inteligentes conseguem detetar isso. Em vez disso, utilize uma classe CSS ou uma div de wrapper que mova o campo para fora da área visível.

Vantagens e desvantagens

Vantagens: zero fricção para os utilizadores, não requer JavaScript, sem dependência de terceiros, fácil de implementar. Desvantagens: não protege contra bots sofisticados que analisam o CSS, não protege contra spam manual (pessoas que enviam spam manualmente).

Rate limiting

O rate limiting restringe o número de pedidos que um utilizador pode enviar dentro de um determinado período de tempo. É uma proteção eficaz tanto contra bots como contra utilizadores abusivos.

Ao nível do servidor

O Nginx tem um módulo de rate limiting integrado. Pode limitar o número de pedidos POST ao seu formulário a, por exemplo, 5 por minuto por endereço IP. Cada pedido acima do limite recebe uma resposta HTTP 429 (Too Many Requests). Isto impede eficazmente os bots que enviam centenas de pedidos por segundo.

Ao nível da aplicação

A maioria das frameworks web tem middleware de rate limiting. O Laravel tem o middleware ThrottleRequests, o Express.js tem o pacote express-rate-limit, o Django tem o django-ratelimit. Ao nível da aplicação pode ser mais preciso - por exemplo, limitar o número de mensagens a 3 por sessão, e não apenas por endereço IP.

Ao nível do CDN

A Cloudflare, o AWS WAF e serviços semelhantes conseguem aplicar rate limiting antes mesmo de o pedido chegar ao seu servidor. Esta é a forma mais eficaz, porque protege contra ataques DDoS e bots de spam ao nível da rede.

Validação no lado do servidor

Nunca dependa apenas da validação no frontend. Qualquer bot de spam sério ignora o JavaScript e envia pedidos diretamente para o endpoint do seu servidor.

Validação de email

Verifique o formato do endereço de email, mas verifique também se o domínio sequer existe (verificação do registo DNS MX). Rejeite domínios de email descartáveis conhecidos (mailinator.com, tempmail.com, etc.), porque são frequentemente utilizados para spam.

Conteúdo da mensagem

Verifique a mensagem em busca de sinais comuns de spam: demasiadas ligações (mais de 2-3 numa mensagem de contacto é suspeito), palavras de spam conhecidas (casino, farmácia, barato, comprar já), o mesmo texto enviado várias vezes, mensagens num idioma que não espera no seu site.

Limite de tempo

Meça quanto tempo um utilizador passou na página antes de submeter o formulário. Se o formulário foi preenchido em menos de 3 segundos, é provável que se trate de um bot. Adicione um timestamp oculto ao formulário e verifique-o no servidor. Esta é uma técnica simples mas eficaz.

Akismet e serviços semelhantes

O Akismet é um serviço anti-spam desenvolvido pela Automattic (a empresa por detrás do WordPress). Analisa o conteúdo da mensagem, o endereço IP, o user agent e outros sinais para determinar se uma mensagem é spam. É gratuito para uso pessoal e oferece planos acessíveis para sites comerciais.

A integração é simples: envie o conteúdo do formulário para a API do Akismet e receba uma resposta que indica se a mensagem é spam ou não. O Akismet processa mais de 500 milhões de comentários por mês e tem uma precisão extremamente elevada (99,9%).

As opções alternativas incluem o CleanTalk (pago, sem CAPTCHA), o OOPSpam (baseado em API, focado na privacidade) e o hCaptcha (semelhante ao reCAPTCHA mas com melhor privacidade).

Uma abordagem combinada - a melhor proteção

Nenhuma técnica isolada é perfeita. A melhor proteção combina vários métodos numa defesa em camadas.

  • Primeira camada - Honeypot: Apanha a maioria dos bots simples sem fricção para os utilizadores.
  • Segunda camada - Rate limiting: Impede o envio em massa e ataques DDoS ao formulário.
  • Terceira camada - reCAPTCHA v3 ou Turnstile: Para bots mais sofisticados, uma verificação invisível em segundo plano.
  • Quarta camada - Validação no lado do servidor: Verifica o conteúdo, o formato e o limite de tempo.
  • Quinta camada - Akismet: A última linha de defesa para mensagens que passam por todas as camadas anteriores.

Conclusão

Proteger formulários de spam é um processo que exige várias camadas de defesa. Comece com um campo honeypot e validação no lado do servidor como base, adicione rate limiting ao nível do servidor e implemente o reCAPTCHA v3 ou o Cloudflare Turnstile para proteção avançada. Para sites com grandes volumes de spam, o Akismet ou um serviço semelhante proporciona uma camada de segurança adicional. Na BeoHosting, os nossos planos de alojamento suportam todos estes métodos de proteção, e a nossa equipa de apoio pode ajudar na configuração do rate limiting no lado do servidor e de outras medidas de segurança.

BeoHosting Team

10+ anos de experiência — Especialistas em alojamento web e infraestrutura

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Última atualização: