Feed e Twitter

Feed RSS Twitter

Busca

Por Lustosa em 29/01/2009 às 09:00

Muitas vezes, nossos sites possuem algum formulário de contato. Algo como um “Fale Conosco”, ou alguma outra forma genérica de contato. O importante é que o visitante acessa o formulário, preenche os dados e submete. Normalmente, esses dados são enviados a alguem por email.

Até aí, tudo muito bonito. Funciona muito bem. Porém, os spammers acharam uma forma de propagar links para sites de origem duvidosa através destes formulários. Então, bolaram robôes que varrem a Internet em busca de formulários como estes. Ao encontrar um formulário, preenchem automaticamente todos os campos, e submetem os dados.

O resultado disso é o recebimento de várias mensagens inúteis com links muitas vezes utilizados pra disseminar vírus e outras ameaças.

Uma das formas de se resolver isso é colocando um CAPTCHA, aquelas imagens com letras tortas que teoricamente só um humano consegue decifrar. Alguns dos problemas com os CAPTCHAs: as vezes, o CAPTCHA é fraco, e é possível se usar um programa para quebrá-lo. Já aconteceu algumas vezes com serviços grandes, como Hotmail e Gmail. Outro problema, é que as vezes as letras ficam tão tortas que nem um humano consegue decifrar de primeira. Eu mesmo já tentei fazer um cadastro no BOL, e só consegui lá pra quarta ou quinta tentativa.

Uma outra forma, mais simples, consiste em se colocar no formulário um campo escondido via CSS. O formulário ficaria mais ou menos assim:

<form action="/email/send" method="post">
Nome: <input type="text" name="nome" /><br />
Email: <input type="text" name="email" /><br />
<input type="text" name="vazio" value="" style="display:none" />
<input type="submit" value="Enviar" />
</form>

Notem que o formulário possui um campo chamado vazio, que está escondido através do estilo “display:none“. A técnica é simples: o script que processa o post do formulário, verifica se este campo está preenchido ou não. Se estiver, muito provavelmente se trata de um robô fazendo spam, já que a princípio este campo não deveria nunca ser exibido na tela, e portanto não poderia ser preenchido.

Embora não seja 100% eficaz e peque um pouco pela falta de acessibilidade (já que dependendo do dispositivo que acesse o celular, o campo pode aparecer), ainda assim se trata de mais uma opção, ao meu ver, menos obstrusiva que um CAPTCHA.

NOTAS:

  • O HTML acima está simples, sem seguir nenhum padrão, só para efeitos de demonstração da técnica. Deveria usar tags como <fieldset> e <label> para manter o formulário bonitinho;
  • O style não deveria estar explícito no campo, e sim externo em um CSS, setando o display pra hidden ou através de uma classe ou através de um ID.

Já faço uso desta técnica em alguns sites que recebiam um volume considerável de spam automático, e hoje o nível caiu pra 0.

Outro aspecto do envio de email que também é extramamente importante é em relação ao spam envolvendo a manipulação dos cabeçalhos do email, como já descrito em um outro artigo.

Artigos relacionados

Arquivado em email, segurança

Feed RSS para os comentários deste artigo.


2 comentários em “Evitando spam em formulários”

  1. Pedro comentou:

    Não seria melhor utilizar type=hidden do que display:none ???

  2. Curioso comentou:

    Até que blog estar me servindo pra alguma coisa ^^


Copyright 2009 Ataraxia!   Sinopse