From: | Gunnar Wolf <gwolf(at)gwolf(dot)org> |
---|---|
To: | Juan Martínez <jeugenio(at)umcervantes(dot)cl> |
Cc: | Alejandro Gasca <agasca(at)yahoo(dot)com>, "Mario Gonzalez ( mario__ )" <gonzalemario(at)gmail(dot)com>, Jaime Casanova <systemguards(at)gmail(dot)com>, Roberto Pupo <roberto(dot)pupo(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Seguridad en PostgreSQL |
Date: | 2006-11-05 02:34:44 |
Message-ID: | 20061105023444.GA8775@gwolf.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Juan Martínez dijo [Sat, Nov 04, 2006 at 05:08:47PM -0300]:
> > (...)
> >el atacante podrá borrar tu tabla completa. Claro, ¿cómo puedes
> >protegerte de esto? Evitando interpolar, usando statements preparados
> >y placeholders:
> >
> > $sth = $dbh->prepare('SELECT nombre, descripcion FROM articulo
> > WHERE id = ?');
> > $sth->execute($cgiparam{id});
> > ($nombre, $descripcion) = $sth->fetchrow_array;
> >
> >(mis ejemplos son en Perl, pero estas técnicas son iguales en
> >cualquier lenguaje)
>
> De hecho, yo uso una "técnica" que Postgres la permite, y hasta aquí
> nadie a dicho que sea mala (leyendo por internet)...
>
> $SQLcon = "SELECT nombre,descripcion FROM articulo WHERE id = '$id';";
>
> (En PHP esta vez)...
>
> El mal por inyeccion SQL no permitida se anula, pues lo que pongan en
> $id se considera como un string, por ende no se ejecuta, o me equivoco?
>
> Y claro...el atributo id es un int. Tambien se permite en UPDATE's y
> DELETE's.
No, no te protege en lo mas minimo. Por ejemplo, como crees que
manejaria el siguiente valor?
1'; DELETE FROM articulo; --
(los dos guiones indican que lo que siga es comentario y, por tanto,
ignoran si hay comillas balanceadas o cosas por el estilo)
Y no solo vale para eliminar o invocar otros comandos. Imagina que
haces tu autentificacion de usuarios asi:
$SQLcon = "SELECT id FROM usuario WHERE login='$login' AND password='$passwd';";
Pero por password te dan un:
' OR id = 1;--
Perfecto, tienes acceso como el usuario numero 1, tipicamente
administrador. O, claro, la de artilugios que se te ocurran :)
Usa placeholders.
Saludos,
--
Gunnar Wolf - gwolf(at)gwolf(dot)org - (+52-55)5623-0154 / 1451-2244
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF
From | Date | Subject | |
---|---|---|---|
Next Message | Eliana Gutierrez | 2006-11-05 03:13:47 | Duda con los store procedure |
Previous Message | Fernando Aguada | 2006-11-04 23:03:23 | Poblema con Crystal Reports al llamar a una funcion |