Um problema comum para quem fornece um formulário de contato ou disponibiliza algum sistema de comentário em um site é o aumento de spam enviados por bots(robos) que lêem os campos do formulário e enviam as informações de spam via POST.
Uma maneira muito comum de se proteger deste tipo de ataque é diferenciar se quem está enviando as informações é uma pessoa ou um bot. Isso pode ser feito criando um código que seja de fácil leitura para o usuário humano e difícil para máquinas e pedir para o usuário digitar este código junto com as outras informações do formulário.
Este sistema é muito comum hoje em dia e recebe o nome de CAPTCHA(Completely Automated Public Turing Test to Tell Computers and Humans Apart ou Teste Público Totalmente Automatizado para Diferenciar Humanos de Computadores) e vamos agora apreender com fazer um simples.
Começaremos criando uma imagem com um fundo um pouco bagunçado, quanto mais bagunçado melhor, isso dificulta a leitura por bots.
O CAPTCHA vai funcionar da seguinte forma, vamos gerar um código baseado na hora do sistema e armazená-lo em uma sessão, após isso iremos criar uma imagem com o fundo que criamos acima e escrever o nosso código gerado sobre ele.
Vamos então aos código
Na linha 3 geramos nosso código “aleatório” começamos pegando o timestamp através da função time e aplicamos sobre ele a função md5 deste código md5 pegamos os 9 primeiros caracteres(se você quiser pode pegar mais ou menos) através da função substr.
Na linha 5 salvamo nosso código na sessão para que possamos compará-lo mais tarde.
Na linha 8 criamos uma imagem a partir da imagem de fundo que criamos.
Na linha 10 carregamos uma fonte através da função imageloadfont que carrega define a fonte que será utilizada para escrever nosso código de captcha na imagem criada na linha 8.
Na linha 12 utilizamos a função imagecolorallocate para gerar uma cor para o código que iremos inserir na imagem.
Na linha 14 utilizamos a função imagestring para “desenhar” o código gerado na linha 3 na imagem criada na linha 8, utilizando a fonte definida na linha 10.
Na linha 17 mudamos o cabeçalho do arquivo para ele ser um arquivo do tipo imagem no formato png, isso faz com que o navegador mostre a imagem e não o código binarios em forma de texto.
Na linha 19 enviamos a imagem gerada para o navegador. Na linha 21 desalocamos o espaço utilizado pela imagem criada.
Para utilizar o captcha precisamos de um formulário e dentro dele exibiremos a nossa imagem através da tag IMG e também precisaremos de um campo para o usuário inserir o código captcha.
Agora basta compara o valor passado por POST no input captcha com o valor armazenada em sessão.
Nenhum comentário:
Postar um comentário