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:

 


José Carlos Macoratti