Encriptación de parámetros simple

21/01/2004 - 09:36 por Karma | Informe spam
Me gustaria encriptar las variables por querystring, de tal manera que la
pagina que manda le pasase una funcion

encripta(texto)

y la que recibe

desencripta(texto)

en la pagina de Dani castillo viene pero no funciona o no se la nueva
direccion, me podrian ayudar? gracias
 

Leer las respuestas

#1 danicastillo
21/01/2004 - 18:16 | Informe spam
enassss!

si, la web parece muerta :( , los servidores gratuitos me estan dando caña
ultimamente :(

en fins, te pego el texto de la web a palo seco:

En asp es muy comun pasar información entre páginas por parámetro, la tipica
llamada de
documento.asp?codigo%

que muestra el documento de identificador 25 de una tabla...

En algunos casos, el tener un paso de parámetros tan claro no es nada
conveniente, es muy facil que alguien interesado en nuestra información
obtenga una "copia" de toda nuestra base de datos pidiendo sucesivamente
todos los códigos (no a mano, sino por programa claro, algo que "lea" de
internet los sucesivos códigos de 1 en adelante).

Conviene en estos casos, aparte de otras posibles protecciones de los datos,
ocultar un poco esos parámetros, una forma común es pasarlos por metodo post
(formulario), otra forma que es la que vamos a ver aquí es usar una pequeña
rutina que encripte y desencripte parámetros.

Este ejemplo trabaja como un módulo, veamoslo:


Nombre del fichero:encripta.asp [descargar]



<%' Por daniel castillo. http:\\www15.brinkster.com\danic\ %>
<%
' parámetros "seguros", rutina de encriptación/decriptación
' básica de parámetros

dim sparams,sparamsv
if request.querystring("sp")<>"" then
unsecparam
end if

function requestparam(n)
dim k,r
n=lcase(n)
r=""
if request.querystring("sp")<>"" then
for k=lbound(sparams) to ubound(sparams)
if n=sparams(k) then
r=sparamsv(k)
end if
next
end if
requestparam=r
end function

function secparam(param)
dim ck,ts,key,param2,chk
ts=cSng(time())
randomize time
ck=clng(ts* rnd *1000000)
' codifica "param" , una cadena de parametros
' ck es la clave
ck=cstr(ck)
for k=1 to len(ck)
if (cstr(mid(ck,k,1))>="0") and (cstr(mid(ck,k,1))<="9") then
key=key & mid(ck,k,1)
end if
next
do while len(key)<len(param)
key=key & key
loop
for k=1 to len(param)
' función de encriptación
' sirve cualquier función reversible que
' para todo c [0..255] el resultado esté entre [100..999]
param2=param2 & (100+ asc(mid(param,k,1)) +cint(mid(key,k,1)) )
' función de checksum
chk=(chk+asc(mid(param,k,1))) mod 256
next
secparam="?sp=" & param2 & "&chk=" & chk & "&ck=" & ck
end function

sub unsecparam ()
dim param,ck,ts,k,chk,ch
dim param2
param=request.querystring ("sp")
ck=request.querystring("ck")

for k=1 to len(ck)
if (mid(ck,k,1)>="0") and (mid(ck,k,1)<="9") then
key=key & mid(ck,k,1)
end if
next
if len(key)>0 then

do while len(key)<len(param)
key=key & key
loop
for k=1 to len(param)/3
' función de desencriptado, reversa de la de encriptar
ch= cint(mid(param,k*3-2,3))-cint(mid(key,k,1))-100
param2=param2 & chr (ch )
' función de checksum
chk=(chk+ ch) mod 256
next
end if
if cstr(chk)<>request.querystring("chk") then
param2=""
response.write "Error no definido:"
%><script languaje="javascript"><!--
top.document.location="\index.asp";
// -->
</script>
<%
response.end
end if
sparams= split(param2,"&")
sparamsv= split(param2,"&")
dim v
for k=lbound(sparams) to ubound(sparams)
v=split(sparams(k),"=")
sparams(k)=lcase(v(0))
sparamsv(k)=v(1)
next
end sub
%>





Analicemoslo por encima, proporciona funciones para encriptar y desencriptar
parámetros, básicamente tiene dos funciones útiles:

secparam(cadena) , devuelve una cadena "encriptada" de parámetros, por
ejemplo, si queremos llamar a un link de esta forma
<a href="documento.asp?codigo%"> documento </a>
<a href="documento.asp<%=secparam("codigo%")%>"> documento </a>
(sin el primer interrogante)

Para recuperar parámetros encriptados llamaremos a
parametro=requestparam("codigo")

Es case sensitive, cuidado con las mayusculas


veamos un ejemplo de cómo usar este módulo


Nombre del fichero:prueencripta.asp [descargar]



<%'Por daniel castillo. http:\\www15.brinkster.com\danic\%>
<!--#include file ="encripta.asp" -->
Al llamar a este asp se ha pasado como parámetro:
<br>
nombre=<%=requestparam("nombre")%><br>
codigo=<%=requestparam("codigo")%><br>
<br>
Ejemplo de link<br>
<a href="prueencripta.asp<%=secparam("nombre=dani&codigo%")%>">
Probar parámetros nombre=dani&codigo%
</a><br>
<a href="prueencripta.asp<%=secparam("nombre=pepe&codigo")%>">
Probar parámetros nombre=pepe&codigo
</a>





fijaos en la url que sale una vez pulsado el link, (o con propiedades), es
una "longaniza" de números.

La fórmula de encriptado puede hacerse mucho más compleja claro, pero esta
tampoco está mal , de todas formas podria mejorarse con una clave interna
(no pasada por parámetros tambien como ésta) , que asegurara mejor los
datos, esto es solo un ejemplo, también puede combinarse con otros métodos
de protección.

También podeis intentar modificar la url de un paso de parámetro, vereis que
el checksum "salta" y os redirige a un index.asp (en teoria la página
inicial), de forma que dificultamos el que la gente vaya "probando" codigos
a ver si encuentra algo interesante.


-o|o|--
-o|o| dani castillo
-o|o| http://www15.brinkster.com/danic/
-o|o| tutorial y trucos asp, vb, diseño
-o|o|--
"Karma" escribió en el mensaje
news:buldjc$p72$
Me gustaria encriptar las variables por querystring, de tal manera que la
pagina que manda le pasase una funcion

encripta(texto)

y la que recibe

desencripta(texto)

en la pagina de Dani castillo viene pero no funciona o no se la nueva
direccion, me podrian ayudar? gracias


Preguntas similares