Validação Captcha em Aplicações Rails

Recentemente precisei usar captcha em uma aplicação feita em rails, como já tive boas dores de cabeça para fazer isso em Java pensei que iria ter bastante dificuldade em fazer isso no rails mas para minha surpresa foi super simples.

Existem basicamente duas formas de usar captcha, uma é gerando uma imagem dinamicamente no servidor a a outra é deixar um conjunto de imagens previamente geradas e fazer uso das mesmas, a primeira acho mais segura porém tem o inconveniente de gerar algumas imagens que ninguém consegue ler e aí a gente fica puto :) , o segundo caso apesar de ser um pouco menos seguro acho que para maioria dos casos atende.

Para quem quer gerar a imagem no servidor eu recomendo usar o simple capctha, para quem prefere imagens previamente geradas(é o meu caso) eu recomendo o jcap, um mecanismo feito em javascript super simples de utilizar e que acredito atender suficiente bem para a maioria dos interessados, já aviso que sei como burlá-lo com uma certa facilidade mas como a idéia é bloquear os robôs não vejo muito problema.

Usando o jcap

Baixe o Jcap aqui.
Descompacte e copie os .js para o diretório public/javascript da sua aplicação
Edit o jcap.js para informar corretamente o diretório com as imagens

var imgdir = “../images/cimg/”;

Copie a pasta cimg para o diretório public/images
Adicione o import do javascript no cabeçalho da página

<%= javascript_include_tag 'jcap', 'md5' %>

Modifique seu formulário para algo do tipo:

<%= form_tag({:action => ‘create’}, {:onSubmit => ‘return jcap()’, :name => ‘xfrm’}) %>
<input type=”text” name=”uword” id=”uword” size=”20″ >
<%= submit_tag “Create” %>
<%= end_form_tag %>

Adicione a sua página o seguinte código

<script language=”javascript” type=”text/javascript”>
window.onload = cimg();
</script>

Pronto!

Leave a Reply


Yoomp