CAPTCHA reverso ou negativo. Protegendo-se contra SPAMs

CAPTCHA é um acrônimo do inglês Completely Automated Public Turing Test To Tell Computers and Humans Apart que identifica sistemas automatizados de diferenciação de humanos e máquinas. Ele serve para evitar SPAM, automatização de consultas de sistemas terceiros, chupação de conteúdo online, etc. A idéia principal do CAPTCHA é exibir um desafio que apenas um […]

CAPTCHA é um acrônimo do inglês Completely Automated Public Turing Test To Tell Computers and Humans Apart que identifica sistemas automatizados de diferenciação de humanos e máquinas. Ele serve para evitar SPAM, automatização de consultas de sistemas terceiros, chupação de conteúdo online, etc. A idéia principal do CAPTCHA é exibir um desafio que apenas um ser humano seja capaz de resolver, barrando um computador.

captcha-registrobr-fail

Os mecanismos mais conhecidos são as exibições de uma imagem contendo uma sequência alfanumérica para que seja transcrita em uma caixa de texto normal. Depois que os robôs se tornaram capazes de “ler” imagens, os CAPTCHAs tem se adequado, tornando-se um pouco mais complexos, desde colocando imagens borradas (que dificultam até a leitura humana. #FAIL) até escrevendo desafios, como os do Registro.BR. Exemplos: Quais os caracteres em amarelo? Quais dos caracteres não são consoantes? Quais dos caracteres são números? Infelizmente, no caso do Registro.br, existe um link direto para consultas sem passar pelo CAPTCHA! #FAIL2.

A lógica do CAPTCHA

captcha-sample-01Ao acessar uma página de formulário, qualquer visitante (um ser humano ou um robô indexador) pode preenchê-lo e enviar os dados para o destinatário. Como a maioria desses formulários é de contato por e-mail, isso acaba sendo mais uma porta de entrada para SPAM, potencializado pelo poder computacional, através dos robôs.

Quando existe um CAPTCHA no formulário, as chances dessa mensagem SPAM ser barrada é muito grande e depende da complexidade do mecanismo. O robô preenche o campo necessário do CAPTCHA e o sistema checa se esse valor preenchido é o correto, o que ele disponibilizou para consulta. Isso é controlado por sessão ou cookies criptografados.

Dependendo do CAPTCHA, ele pode exibir uma mensagem de erro ou simplesmente ignorar a mensagem, evitando que lixo seja encaminhado por e-mail ou gravado em um banco de dados de suporte, por exemplo.

O problema do CAPTCHA que é resolvido pelo CAPTCHA REVERSO

captcha-scrambledCada vez que os robôs melhoram a sua tecnologia e conseguem identificar as imagens, a solução mais imediata é detonar um pouco mais a visualização dessas imagens, pra dificultar a leitura por uma máquina. O grande problema é que, muitas vezes, nem nós, os humanos, conseguimos decifrar os caracteres que nos mostram e ficamos impedidos de utilizar aquele sistema ou formulário.

A utilização de um CAPTCHA REVERSO é perfeita para esses casos, pois além de ser limpa e não intrusiva, não penaliza os humanos, só as máquinas.

Com essa solução, nós inserimos um campo texto qualquer, com um nome genérico e escondemos ele via JavaScript ou CSS. Como a grande maioria dos usuários possui essa tecnologia disponí­vel e habilitada e os robôs não, somente os robôs verão e preencherão o campo genérico. No lado do servidor, como sabemos que o campo não será exibido e preenchido por humanos, ignoramos toda e qualquer submissão que venha com tal campo não-nulo.

Qual o problema que isso pode gerar? Aqueles usuários que por algum motivo não utilizam um navegador que suporte CSS ou JavaScript (acredite, são poucos, mas existem) irão ver o campo. Como resolver? Colocar junto ao mesmo, um texto dizendo que o campo abaixo não deve ser preenchido. 😉

Existem vários programinhas prontos, extensões de linguagens, etc., que geram o mecanismo automaticamente, mas não encontrei um plugin de WordPress para isso. Se você conhece, por favor, indique aqui nos comentários. Ou quem sabe você não esteja disposto a fazer um? 😉

Artjazz_ru disse:

it was very interesting to read.
I want to quote your post in my blog. It can?
And you et an account on Twitter?

Felipe disse:

Acredito que o caso do registro.br ocultar endereço deve ter algo a ver com boletos de cobrança falsos que as pessoas recebiam pelo correio em nome do registro.br, no mí­nimo quem fazia isso coletava milhares de endereços para tentar enganar um bom número…

Anna disse:

Meajude e demais pessoas,
Nunca vi esses captchas feitos com gifs animados conforme vc citou. Poderia enviar algum link com exemplo?
Qunato ao site do Registro.br, testei acessar as informações de cadastro das 2 formas, com e sem o captcha. Tudo bem, sem o captcha, as informações de endereço e telefone são ocultadas, mas não oculta o que eu acho que seria o fundamental: os e-mails das pessoas cadastradas como ID, pois para um spammer um e-mail é muito mais útil do que um endereço e um telefone.

Meajude disse:

Dos captcha que vi, os que achei interessantes são os feitos em gifs animados, onde as letras são iluminadas como no caso de uma lanterna passando sobre elas… imagino como fariam para quebrá-las..

Há algum tempo eu fiz um plugin/hack sujo pro WordPress pra fazer um captcha negativo. Tem funcionado no meu blog, mas é bem simples e qualquer um que analise um pouco faz um bot que consiga enviar spam..

opa, esqueci de uma coisa, o captcha do registro.br é #FAIL sim, por conta dos color blinds… =]

O registro.br não é #FAIL…

ele libera algumas consultas pelo link direto sim, mas após isso, ele só libera informações do dominio, e para informações das Entidades ele só deixa passar se for pelo CAPTCHA.

[]’s

Tiago Bugarin disse:

Li ontem esse texto e hoje, bem por acaso, topei com isso aqui hoje. Acho que é o que buscava, Manoel.

http://wordpress.org/extend/plugins/js-antispam/

Fernando disse:

Corrige esse FAIL#2 pois pega mal… é óbvio que a versão sem o captcha oculta informações de contato.

Manoel Netto disse:

Fernando,
O CAPTCHA não é feito exclusivamente para evitar SPAM, como você pode ler no texto. Ele é feito principalmente para evitar consultas automatizadas ao seu serviço. A omissão das informações de contato não evitam a consulta automatizada. Eu sei quem registrou um domí­nio e quais os IDs responsáveis e posso fazer uma nova consulta só pelos IDs e saber quem é cada uma dessas pessoas.
Sim, ainda é #FAIL, pois o CAPTCHA é apenas um meio termo limitador dos dados de contato, mas eu ainda consigo saber o principal do WHOIS: Who Is the registrant. 😉
Abraço

Junior disse:

A versão sem desafio de imagem no Registro.BR oculta as informações de contato, ou seja, telefones e endereços, acredito que CAPTCHA foi colocado para proteger esta informação, ou seja, não há nenhum FAIL no sistema do Registro.br

Manoel Netto disse:

Júnior,
Leia a resposta ao Fernando.
PS: Pelo e-mail dos dois, presumo que sejam a mesma pessoa e o e-mail seja FAKE. Qual o problema em aparecer? Eu não desvalorizo comentários contrários í  minha opinião, pelo contrário.
Abraço

Danillo Nunes disse:

A ideia parece ser boa a princí­pio, mas pensando como um spammer que já fez um bot capaz de quebrar imagens de CAPTCHAS simples, deve ser bem fácil fazê-los identificar os campos escondidos e, consequentemente, não preenchê-los.

Manoel Netto disse:

@Danillo,

E o que você me diz se o campo tiver que ser preenchido com um valor padrão (sabido pelo sistema), aleatório e variável, e fazer isso com JavaScript (coisa que bot não executa)?

A idéia do CAPTCHA reverso é mudar a visão de “identificar humanos” para “identificar robôs”, sacou?

Porém, você está certo em um ponto: TODA e QUALQUER solução é passí­vel de quebra. Tudo é uma questão de tempo, apenas. 😉

Abraço

jonathan disse:

não gosto do captcha do registro .br, porque além de ser muito simples de “quebrar” – provavelmente por culpa de alguém que manda fazer mas nao saber pra que serve. Ele torna não é muito usável para quem é daltonico.

já usei a solução inteligentemente nomeada como captcha reverso, mas eu acredito que não funcionaria para um site grande, visto que quebrar o captcha é uma questão de custo beneficio e caso um google começasse a usar provavelmente isso se tornaria um “item” comum nos robôs

Manoel Netto disse:

@Jonathan,

Eu acho o CAPTCHA do RegistroBR criativo, porém, tem seus problemas (como o fato de ignorar os color blinds). Outra coisa: como pode ter um link DIRETO para pular o CAPTCHA? Isso é FAIL total. Basta colocar o link (que é padrão) no seu robô e pronto 😉

Abraço