sexta-feira, 24 de julho de 2009

Pra que CAPTCHA?

"Designer... Como é o nome daquela sopa de letrinhas tortas que coloca num formulário? Aquela que a gente não consegue ler nada e que não é acessível... Aquela com nome difícil?"

CAPTCHA ou "Completely Automated Public Turing test to tell Computers and Humans Apart" foi criada para testes não automatizados onde o ser humano consegue intervir validando alguma informação antes de completar uma ação.

As CAPTCHAS foram muito difundidas para evitar o SPAM (lembra que saco o UOL?) e ainda utilizadas em vários provedores. De algum tempo para cá, foram aplicadas para validar consultas ou cadastro em formulários evitando ataque robôs como invasões e DoS (Denial of Service) derrubando o servidor. Escutei uma vez a melhor explicação sobre DoS de um analista de rede: "Seria como todos os carros da Avenida Presidente Vargas (RJ) querendo entrar numa rua muito estreita na hora do rush... colapso total!"

Assim como um javascript ou layout ou css pronto para copiar na internet, alguns CAPTCHAS podem ser baixados e instalados em diversos modelos e linguagens de programação. Realmente ele evita (eu disse evita) invasões e ataques, entrada de SQL Injection no seu bando de dados, burlamento de cadastros, reutilização de serviços web e etc. O problema maior do CAPTCHA é como usar, onde usar e principalmente para quem usar.

Um analista desenvolvedor explicou o funcionamento dos robôs de quebra de CAPTCHA. Uma ou mais máquinas robôs acessam o site a invadir e ficam tentando várias combinações de letras e números. Quanto maior a combinação (5 caracteres em diante), mais difícil e mais tempo para efetuar a quebra. Alguns outros robôs utilizam softwares de OCR (Optical Character Recognition) que fazem um scan na tela e no código, acham a imagem do CAPTCHA e tentam detectar os caracteres submetendo várias combinações até que se entre na aplicação.

Há dois anos participei de um projeto para o Ministério do Trabalho e Emprego onde um aplicativo importante precisava de um maior nível de segurança devido ao número de informações ali trafegadas. Para se ter uma idéia, em dias críticos, eram 2.500 usuário simultâneos em cada servidor.

A solução encontrada foi criar um aplicativo oriundo do .Net que sorteia uma sequência de 7 figuras aleatórias, dentre mais de 200 variações de letras e números e 10 fundos diferentes, compondo uma única imagem final. Desde sua implementação, o servidor nunca sofreu ataques e ninguém conseguiu burlar o código e, mesmo assim, estamos aprimorando uma nova versão para inibir ainda mais o acesso dos robôs.

Mas nem tudo são flores...

Ainda na mesma empresa, só que em outro projeto também para o Ministério do Trabalho e Emprego, usou-se uma outra solução CAPTCHA que deu o que falar na semana passada! Veja a matéria no O Globo.

Esse modelo de CAPTCHA utilizava um arquivo de dicionário que sorteava uma delas e montava uma grid igual a "palavra cruzada" onde apenas a palavra escolhida estava escrita corretamente. Visualmente é um pouco confuso e difícil de entender mas interessante pelo modo simples de usar. A falha do projeto foi não validar as mais de 3 mil palavras deste dicionário! Tudo bem que a probabilidade de "acertar" uma delas é pequena mas não nula! Isso sem contar que o arquivo deste dicionário ficava na raiz do site, sem proteção e pedindo para ser hackeado!

Três soluções temporárias e rápidas poderiam ter sido feitas, além do teste das palavras do dicionário é claro:

1) Escolher 30 palavras sem duplo sentido para cada letra do alfabeto (casa, vaso, cartaz, mesa, etc).
2) Barrar acessos múltiplos e simultâneos do mesmo endereço IP.
3) Validar um campo obrigatório que o sistema solicitava antes do CAPTCHA.

Como nós não participamos desta solução CAPTCHA e muito menos fomos envolvidos, só tomamos conhecimento quando estourou a bomba na mídia! A falta de comunicação e a pseudo autosuficiência (não precisamos de designer e nem de analista de testes) do tal projeto ajudou a piorar a situação.

Por essas e outras defendo com unhas e dentes a criação de Wikis e Melhores Práticas no intuito de disseminar o conhecimento entre os projetos e as áreas de uma empresa.
A Gestão do Conhecimento foi criada não só para descentralizar a informação mas para que esta seja difundida e aplicada para o bem estar mental e financeiro de uma empresa. Pense, analise o impacto desta notícia e o quanto ela denegriu a imagem do Ministério do Trabalho e Emprego (10h após a publicação da matéria tinham 180 comentários no Globo Online) e da empresa prestadora de serviço.

E quanto a acessibilidade? O CAPTCHA é acessível a todos usuários? Nem todos, mesmo os que possuem recursos de audio onde um programa lê os caracteres que estão na tela. Isso é uma discussão enorme e precisaria chamar o Horácio Soares para debater o tema. Certo que de uma coisa concordamos: pense bem pra quem (cliente) e como (linguagem) usar um CAPTCHA. Analise e veja se realmente é necessário. Quem sabe não existe uma outra forma mais agradável e acessível para validar um acesso?

Nenhum comentário:

Postar um comentário