Solucionando Spam com Captcha Inverso
Definitivamente spams são um problema terrível nos dia atuais… não pode ser solucionado com leis absurdas e desenvolver um algoritmo para bloqueio é um trabalho monstruoso. Então logo pensamos em soluções de terceiros como o Akismet (muito usado em blogs e formulários de contato em sites) ou captcha que também não é fácil de implementar a menos que utilize soluções como o Recaptcha .
Ótimo, então temos duas soluções simples que praticamente não temos que fazer quase nada, mas qual o grande problema? Askimet é pago para soluções comerciais e o captcha é altamente criticado por suas dificuldades com acessibilidade (está certo que é possível implementar soluções do captcha com aúdio mas complica mais ainda a implementação).
Mas na minha opinião o captcha não é ruim apenas para acessibilidade, mas também para qualquer usuário. E horrível tentar ler o que está escrito nas imagens, enviar o formulário e ver que errou, depois errar de novo e até sair da cadastro.
Absolutamente desistido de qualquer umas dessas soluções, acabei encontrando uma forma muito simples de solucionar as centenas de spams que recebíamos. O captach inverso.
Que consiste na técnica simples de colocar um campo de formulário como hidden, e normalmente os bots de spam não diferenciam dos outros campos e acabam preenchendo-o e enviando o formulário. O que temos que fazer é apenas ignorar todos os comentários que possuam o campo hidden preenchido.
No caso do blog aqui do escritório usamos o Mephisto para sistema de blog( desenvolvido em Rails), e implementar isso em Rails seria muito fácil, mas como quase tudo em Rails, existe uma solução desenvolvida em forma de plugin para o Mephisto. Cortesia de Sven Fuchs.
Para utilizar é bem simples( veja o post sobre o plugin no blog do autor ):
script/plugin install
http://svn.artweb-design.de/stuff/mephisto/mephisto_inverse_captcha/
Lembrando que “script/plugin install repostiorio” deve ser executado tudo em uma linha apenas, no terminal.
Em seguida basta alterar o seu template(partial) de comentários (_comments.liquid) do seu mephisto para algo como abaixo:
<p>
{{ form.name }}
<label for="author">
<small> Nome (obrigatório)</small>
</label>
</p>
<p>
{{ form.sneaky_email }}
<label for="{{form.sneaky_email_codename}}">
<small> E-Mail</small>
</label>
</p>
<p id="comment-email">
Se consegue ler este trecho, o seu browser não trabalha bem com CSS. <br />
<strong>Não preencha nada aqui!</strong><br />
{{ form.email }}
</p>
No template acima estamos adicionando o campo sneaky_email_codename que deverá se visível ao usuário normal e o campo email será escondido, o plugin irá verificar quais campos estão preenchidos e colocar os valores nos locais corretos.
Esta solução é focada em Mephisto/Rails mas pode ser implementada facilmente em qualquer linguagem.
Até o momento esta solução tem sido perfeita para nós e amigável para nossos usuários, esperamos que seja útil para você também.