sexta-feira, 27 de fevereiro de 2009

Proteja seu site contra SPAM e ajude a digitalização de livros com reCAPTCHA

Resumo


Ainda hoje, SPAM é um problema altamente relevante. Desenvolvedores vêm tomando diversas medidas para tentar conter os prejuízos causados por SPAM. Hoje apresentarei reCAPTCHA, uma implementação CAPTCHA para neutralizar os ataques feitos por robôs, que ao mesmo tempo que realiza testes que apenas humanos conseguem resolver, contribui para a digitalização de livros antigos.

1. Introdução


Não é de hoje que sites e sistemas web são vitimados por spammers e robôs que visam a proliferação de suas mensagens indesejadas. Esta prática é denominada SPAM: o abuso em sistemas eletrônicos de mensagens com respeito ao envio indiscriminado em massa de mensagens indesejadas. Existem várias formas de SPAM, apesar de que sua variante mais conhecida é o SPAM por e-mail. Teoricamente, qualquer sistema disponível publicamente (por exemplo, na internet) sem medidas anti-SPAM está sujeito a receber SPAM. 

Neste cenário, vêm sendo trabalhadas algumas soluções para tentar impedir, ou ao menos diminuir o envio de SPAM. 

Hoje vou apresentar uma solução apresentada contra a ação de robôs. Robôs são softwares projetados para enviar SPAM automaticamente. Realizam tarefas como criar contas em sites, realizar login, enviar mensagens, etc. 

2. CAPTCHA


É sabido que robôs podem realizar ações de interação com a interface, como acessar caixas de texto, digitar texto, selecionar botões, clicar, etc. Mas há certas ações que apenas os seres humanos são capazes de realizar, como copiar texto distorcido. Se o texto não estiver devidamente distorcido, o robô pode utilizar técnicas de OCR (Optical character recognition) para interpretar o texto, exatamente da mesma forma que os scanners trabalham para reconhecer páginas escaneadas, e assim copiá-lo.

Esta solução se chama CAPTCHA (Completely Automated Public Turing Test To Tell Computers and Humans Apart), e busca proteger sites contra robôs através da geração e avaliação de testes que humanos conseguem realizar, mas softwares atuais não.

E CAPTCHA tem sido adotada em massa. É comum de se encontrar, ao criar uma conta em algum site, um campo com letras distorcidas a serem copiadas, para verificar a autenticidade humana do usuário. Observemos que esta parece ser uma solução eficaz contra robôs.

CAPTCHA é indicado especialmente para:
  • Prever SPAM em comentários de blogs.
  • Proteger registros em sites.
  • Proteger endereços de email de spammers.
  • Enquetes on-line.
  • Prever ataques dicionário.
  • Robôs de mecanismos de busca.
  • Worms e SPAM.
Pois bem, temos uma solução. E agora você se pergunta: como embutir esta funcionalidade em meu site?

Felizmente, há diversas implementações de CAPTCHA disponíveis. Apresentarei a implementação mais popular de hoje em dia, o Projeto reCAPTCHA.

3. O Projeto reCAPTCHA


O Projeto reCAPTCHA é uma implementação free, segura e disponível para WordPress, MediaWiki, Java, PHP, ASP.NET, Perl, Python e diversos outros ambientes. reCAPTCHA também realiza testes de áudio como uma alternativa a usuários deficientes de visão.

Além disso, reCAPTCHA ajuda a digitalizar livros de Internet Archive e edições antigas do New York Times. A cada teste realizado com sucesso, mais uma palavra é digitalizada.

Este processo de digitalização ocorre da seguinte forma: cada palavra que não consegue ser reconhecida corretamente por OCR é enviada aos usuários de sites com reCAPTCHA em forma de um teste, junto com outra palavra já conhecida. O usuário deverá interpretar ambas palavras e enviar sua resposta. O sistema aprovará a resposta do usuário se ele digitou corretamente a palavra já conhecida. Aí, o sistema considerará a resposta dada à palavra desconhecida como uma candidata a ser o reconhecimento correto da palavra. Agora, o sistema enviará esta mesma palavra desconhecida a outras pessoas para determinar, com maior certeza, se a resposta candidata é realmente a correta.

reCAPTCHA é utilizado por mais de 100 mil sites, incluindo Facebook, Ticketmaster, e Craigslist.

4. Como reCAPTCHA funciona


O seguinte diagrama ilustra o funcionamento de reCAPTCHA.

  1. O usuário carrega a página web com o código JavaScript para o teste reCAPTCHA embutido.
  2. O browser requisita um teste ao servidor de API reCAPTCHA. O servidor fornece ao usuário um teste e um token que identificará o teste.
  3. O usuário preenche o formulário na página web, e envia o resultado a seu servidor de aplicações, juntamente com o token do teste.
  4. O servidor de aplicação envia a resposta do usuário para o servidor de verificação reCAPTCHA. Este a avaliará e retornará para o servidor de aplicações.
  5. Se estiver correto, o servidor de aplicações irá permitir ao usuário acessar algum serviço ou informação. Se não estiver, poderá permitir ao usuário tentar novamente.

5. Como implementar reCAPTCHA em meu site


Para implementar reCAPTCHA, siga este processo:
  1. Registre-se em reCAPTCHA Administration Portal para obter um par de chaves pública/privada para cada domínio ou todos os domínios.
    Mais informações em http://recaptcha.net/apidocs/captcha/ 
  2. Insira o código client-side na página desejada. Aqui será inserida sua chave pública. Você pode utilizar a API padrão (utiliza JavaScript), a API não-JavaScript e a API AJAX. Existem diversas opções para a customização do Look & Feel e comportamento.
    Mais informações em http://recaptcha.net/apidocs/captcha/client.html 
  3. Escreva o código server-side que receberá a requisição, verificará o teste e retornará. Aqui será inserida sua chave privada.
    Em Java: http://wheelersoftware.com/articles/recaptcha-java.html

6. Observações


Implementei reCAPTCHA no projeto Favorpals e até agora tem sido bem satisfatório. Quem tiver algum comentário a fazer, ou experiência com reCAPTCHA ou outra implementação CAPTCHA, está convidado a comentar este post.

Nenhum comentário:

Postar um comentário