From: | Gunnar Wolf <gwolf(at)gwolf(dot)org> |
---|---|
To: | LIZETH ANGHELA SIRPA CACERES <angheliz(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: URGENTE |
Date: | 2007-09-14 22:04:36 |
Message-ID: | 20070914220436.GF2738@cajita |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
LIZETH ANGHELA SIRPA CACERES dijo [Thu, Sep 13, 2007 at 09:20:36PM -0400]:
> Si tienen alguna sugerencia o cometario, por favor haganmela
> llegar.(especialmete comentarios sobre ideas de ataques que se pueden
> realizar a los procedimientos almacenados)
>
> Ahh. tambien quisiera saber quienes se animan a ayudarme a realizar las
> pruebas finales, es decir los ataques
Ten en cuenta que hablar de los "procedimientos almacenados" es hablar
de funciones arbitrarias hechas en una variedad de lenguajes - incluso
toma en cuenta que hay lenguajes "trusted" y "untrusted" dependiendo
del tipo de operaciones que permiten.
¿Cómo puede un usuario de un sistema clásico (piensa en una aplicación
Web, por irnos a lo más común, o en un sistema transaccional detrás de
un GUI en determinada empresa) tener acceso a tus procedimientos
almacenados? Bueno, a través de las funciones que llamen directamente
las acciones que él pueda invocar, o a través de triggers invocados
indirectamente por acciones realizadas sobre tablas. El usuario final
(típicamente) no puede inyectar datos arbitrarios sobre de tus
procedimientos - y si puede hacerlo, es un fallo en la seguridad _de
tu aplicación_.
Pero bueno, una vez dentro de Postgres, e ignorando los lenguajes
no-confiables, ¿qué es lo que puede hacer determinado dato sobre un
procedimiento almacenado _bien escrito_? (y sí, acá asumo que los
programadores no hacen estupideces demasiado grandes - pero bueno,
muchas veces eso es asumir demasiado. O, como dicen otras personas,
«si te evitáramos hacer cosas aparentemente estúpidas, te evitaríamos
hacer cosas muy ingeniosas también») Está más limitado -
Digamos... ¿Pérdida/corrupción de información? Sí, claro, pero ya
tienes acceso directo a la BD, podrías estar modificando los datos
directamente en las tablas. Tal vez lo más grave sería una negación de
servicio (al invocar repetidamente un procedimiento que sea muy caro
para tu BD).
Eso sí, si abres la puerta para la ejecución de lenguajes
no-confiables (untrusted - PL/TclU, PL/PerlU, PL/PythonU y muchos
más), te proveen muchísima más funcionalidad... Pero muchísimos más
riesgos. Como sea, tú eliges si deseas emplearlos :)
Asómate a esta discusión (en inglés), tiene varios puntos que te
pueden servir:
http://www.thescripts.com/forum/thread173959.html
Y a este pedazo de documentación en español:
http://es.tldp.org/Postgresql-es/web/navegable/user/sql-createlanguage.html
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 | Gabriel Hermes Colina Zambra | 2007-09-15 00:02:35 | Re: URGENTE |
Previous Message | Ramón Alberto Bruening González | 2007-09-14 21:56:11 | plpsql con resultado de consulta |