[Perl] Pregunta #3-Envio con POST
Gunnar Wolf
gwolf@campus.iztacala.unam.mx
Fri, 15 Mar 2002 10:07:13 -0600 (CST)
> Por lo que estoy viendo, todos utiliz=E1is POST 'despu=E9s' de validaros=
=2E Pero
> entonces, =BFlas cookies me aportan alguna ventaja extra que no pueda hac=
er
> con POST? Porque a m=ED todo lo que me est=E1n haciendo es darme problema=
s:
> Tengo tres =E1reas reservadas (3 empresas distintas) de validaci=F3n dent=
ro de
> mi p=E1gina, con distintos usuarios para cada una de las tres partes, y l=
os de
> una parte no quiero que se puedan meter en la otra. Pero sospecho que por
> culpa de las cookies un usurio de una empresa se puede meter en las otras=
=2E
> Soluci=F3n???
Si lo manejas bien, no debe poderse meter a un lugar con cookie del otro.
> Por lo que estoy leyendo, las cookies sirven de poco, tienen problemas de
> seguridad y adem=E1s no validan al usuario que es para lo que yo las util=
izo.
> Entonces, =BFpara que me sirven? Supongo que las podr=E9 quitar, pero =BF=
c=F3mo
> validar=E9 a mis usuarios si dec=EDs que se utiliza POST una vez validado=
s?
Las cookies pueden ser muy =FAtiles en determinados casos - Sin embargo, a
m=ED no me gustan, ya que buena parte de los sistemas que hago los hago
pensando en computadoras de uso p=FAblico o, al menos, compartidas... Y eso
le raja la madre a lo que puedas guardar en cookies a largo plazo. A corto
plazo? Te evitan el tener que estarte acordando de pasar HIDDENs, y son un
poco m=E1s discretas... Pero -creo- hasta ah=ED.
> Perdonar mi inexperiencia, pero =BFqu=E9 es eso enviar una variable
> identificando a la sesi=F3n a trav=E9s de un campo oculto?
Bueno... una sobresimplificaci=F3n. Un usuario pasa por login.cgi, y es
autentificado correctamente. Entonces, parte de lo que haces es:
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
use Date::Calc qw(Today_and_Now Add_Delta_DHMS);
# Claro, conviene tener Date::Calc instalado ;-)
# Today_and_Now da la fecha actual
# Add_Delta_DHMS agrega los d=EDas/horas/minutos/segundos especificados a
# una fecha
my @ahora =3D Today_and_Now; # @ahora =3D (a=F1o, mes, d=EDa, hora, min, se=
g)
my @expira =3D Add_Delta_DHMS(@ahora,0,0,15,0); # Le sumamos 15 minutos
# Creamos una llave de 30 caracteres manera aleatoria
# Recuerda que esto es una SOBRESIMPLIFICACI=D3N - sigue el consejo de
# Salvador y haz una llave m=E1s segura.
$sesion =3D '';
$sesion .=3D ('.', '/', 0..9,'A'..'Z', 'a'..'z')[rand 64] while length($ses=
ion) < 30;
$dbh->do("INSERT INTO sesion (id_sesion, id_usuario, expira) VALUES
('$sesion', '$usuario', '$expira[0]/$expira[1]/$expira[2] $expira[3]:$expir=
a[4]:$expira[5])')
or die 'AUCH!',$dbh->errstr;
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
Y ya. Lo =FAnico que pasas entre los CGIs es la llave de la sesi=F3n. Revis=
as
siempre que no haya expirado a=FAn, y... Ah=ED tienes tu cookie :)
--=20
Gunnar Wolf - gwolf@campus.iztacala.unam.mx - (+52-55)5623-1118
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF