ASP - Gerando Código de segurança com imagens
A geração de código de segurança usando imagens é uma tentativa de evitar o ataque dos execráveis 'robos' que procuram injetar código malicioso por toda a parte.
Eu já tratei o assunto no artigo ASP .NET - Usando validação por imagem - CAPTCHA onde falei sobre a tecnologia CAPTCHA.
CAPTCHA é um acrônimo de - Completely Automated Public Turing test to tell Computers and Humans Apart - e envolve um computador (um servidor) que pede que um usuário termine um teste. Como os computadores são incapazes de resolver o CAPTCHA, todo usuário que incorpora uma solução correta é presumidamente humano. O termo foi inventado em 2000 por Luis von Ahn, Manuel Blum , Nicholas J. Hopper e por John Langford.
A tecnologia ASP já teve seus momentos de glória, mas mesmo assim ainda é muito usada, e, por este motivo estou publicando este artigo, uma colaboração recebida, onde é mostrada como você pode implementar uma forma de gerar código de segurança usando imagens similar ao CAPTCHA.
O projeto é composto por 2 arquivos e diversos arquivos de imagens:
O código do arquivo geraCodigo.asp e dado a seguir:
<% 'Gera imagem de segurança Function gerarNumeros() 'Monta array com os caracteres que serão usados para gerar o código de segurança. Podem ser adicionados as letras em minusculas e/ou outros caracteres, 'só lembrando de criar as imagens para estes. caracter = Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z") 'Usando 5 caracteres do array, a palavra é formada randomicamente Randomize For i = 1 to 6 gerarNumeros = gerarNumeros & caracter(ubound(caracter) * Rnd) Next End Function codigo_seguranca = gerarNumeros() %> <script language="JavaScript"> function Monta() { var texto_seguranca = "<%= codigo_seguranca %>"; //Chama a função ASP e atribui o resultado à variavel texto_segurança var comeco = "<img src='"; //Abre a tag da imagem var meio = ".gif'"; //propriedades da imagem, aqui tambem pode ser configurado o tamanho/altura var fim = "> "; //Fecha a tag da imagem for(x = 0; x < texto_seguranca.length; x ++) { p_texto = texto_seguranca.charAt(x); //Pega caracter por caracter para formar a imagem de cada um document.getElementById("resultado").innerHTML += comeco + p_texto + meio + p_texto + fim; //Junta as tags da imagem } } </script> <head> <script language="JavaScript" > function enviardados(){ if(document.form.texto_imagem.value=="" || document.form.texto_imagem.value.length < 4) { alert( "Preencha campo com o código da imagem (6 caracteres)!" ); document.form.texto_imagem.focus(); return false; } return true; } </script> </head> <body onload="Monta()"> <form method="post" action="validaCodigo.asp" name="form" OnSubmit="return enviardados();"> <table border="0" cellspacing="0" cellpadding="0" width="420" height="36"> <tr> <td align="center" background="imagem_fundo.gif" width="112" height="36"><span id="resultado"></span></td> <td width="70" align="center">Digite:</td> <td width="163"><input type="text" name="texto_imagem" size="20"></td> <td width="75"><input type="submit" value="Validar"><input type="hidden" value="<%= codigo_seguranca %>" name="hd_texto"></td> </tr> </table> </form> |
A validação é feita pelo código ASP do arquivo validaCodigo.asp após a submissão do formulário. O código deste arquivo é dado abaixo:
<% 'Valida imagem de segurança hd_texto = request("hd_texto") 'Como usamos no array somente letras maiusculas, então passamos tudo o que foi digitado para maiuscula. texto_imagem = ucase(request("texto_imagem")) if hd_texto <> texto_imagem then %> <script> alert("Código de segurança inválido, tente novamente!") document.location.href = "geraCodigo.asp"; </script> <% else response.write "Código validado com sucesso." %> <br> <br> <a href="geraCodigo.asp">Efetuar nova validação.</a> <% end if %> |
Um exemplo bem simples mas funcional. Teste o exemplo on-line : http://www.macoratti.net/codseg/geraCodigo.asp
Pegue o projeto completo aqui: codigoSegurancaASP.zip
Até o próximo artigo ASP ...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET