Re: Seguridad en tablas

From: Horacio Miranda <hmiranda(at)gmail(dot)com>
To: Andres Ortiz <ing(dot)andresortiz(at)gmail(dot)com>
Cc: Jaime Casanova <systemguards(at)gmail(dot)com>, Manuel Sugawara <masm(at)fciencias(dot)unam(dot)mx>, Rommel Oramas <rommel(dot)oramas(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Seguridad en tablas
Date: 2005-12-04 15:20:23
Message-ID: f2b9e7490512040720j4b0a4894g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Disculpen el top pop, pero no seria mucho mejor tener un trigger y
dejar que el usuario cambie la información, cosa que el trigger genere
dos cosas, guardar el valor antiguo o modificado o incluso borrado, el
nombre del personaje que lo cambio, y por supuesto el IP (ideal
tambien el time stamp de la modificación),esto no evita que se
modifique el dato, por el contrario deja todo tal cual, pero permite
colgar al perico que modifico el dato, esto me a dado resultados.

Ojo, no estoy diciendo que no arreglen el modelo de trabajo, flujo
grama o las reglas del negocio, sino que aprovechen el hecho que la
base esta abierta y auditen a los pericos maliciosos.

El 2/12/05, Andres Ortiz<ing(dot)andresortiz(at)gmail(dot)com> escribió:
> Listo Jaime, andaba perdido pero ya entendí la idea que planteaste y la puse
> en practica, funciona perfectamente y aquí todos los ingenieros que en la
> mayoría somos jóvenes recién egresados estamos anonadados con la facilidad
> que se logro revolver esta situación de agujero de seguridad que teniamos,
> una vez mas te agradezco muchísimo por tu colaboración y ya estamos
> trabajando para perfeccionar tu sugerencia que al final termino salvándonos
> el pellejo.
>
> Graciasss.
> Andres Ortiz
> Imagine Technologies
> Bogotá (Colombia)
>
>
> El día 2/12/05, Jaime Casanova <systemguards(at)gmail(dot)com> escribió:
> > > El 2/12/05, Jaime Casanova<systemguards(at)gmail(dot)com> escribió:
> > > > <Limpiando... borrando conversaciones enredadas>
> > > >
> > > > On 12/2/05, Andres Ortiz <ing(dot)andresortiz(at)gmail(dot)com> wrote:
> > > > > El unico campo que me interesa proteger es el que tiene el nombre de
> > > > > usuario, y si hay alguna manera de que al vincular las tablas de
> > > > > PostgreSQL via ODBC en Access no me lo permita o necesite de un
> > > > > usuario o contraseña para logralo.
> > > > >
> > > >
> > > > OK Andres, Manuel y Alvaro tienen toda la razon (al parecer algo se
> > > > enredo en mi cerebro y no me dejo pensar claramente, seria PHP?)...
> > > >
> > > > Aunque Alvaro y Manuel aconsejan que crees una vista yo solo crearia
> > > > una nueva tabla y una regla, algo asi:
> > > >
> > > > CREATE TABLE sanguijuelas (
> > > > usuario tipo_dato not null
> > > > );
> > > >
> > > >
> > > > CREATE RULE no_a_las_sanguijuelas AS ON UPDATE TO tabla
> > > > WHERE NEW.usuario <> OLD.usuario
> > > > DO INSTEAD INSERT INTO sanguijuelas VALUES (NEW.usuario);
> > > >
> > > >
> > > > Con la regla evitas que modifiquen la tabla cuando el cambio que hacen
> > > > incluye cambiar el usuario y ademas dejas un registro de que usuario
> > > > quizo hacer eso en la tabla sanguijuelas.
> > > >
> > > >
> > On 12/2/05, Andres Ortiz < ing(dot)andresortiz(at)gmail(dot)com> wrote:
> > > Exelente idea la que me acabas de decir, se me olvido comertar que soy
> > > algo nuevo en esto del PostgreSql, no conocia la existencia de reglas,
> > > pero ya mismo indago sobre la creacion de reglas, agradezco abusando
> > > de tus conocimientos, que me pudieras regalar donde encuentro el
> > > registro de que usuario quizo meterme el gol con esto del fraude para
> > > mas adelante tomar medidas drasticas. De verdad te agradesco muchisimo
> > > esta solucion y to te imaginas del embrollo que me acabas de sacar,
> > > cualquier problema con Php con gusto te colaboro.
> > >
> >
> > en la tabla sanguijuelas que te puse ahi... se va a crear un registro
> > cada vez que un usuario intente modificar el campo, incluso puedes
> > añadir un campo fecha para indicar en que momento intentaron hacer el
> > cambio y hasta podrias añadir para la direccion ip de la maquina
> > (aunque no recuerdo la funcion que regresa la ip de la maquina
> > cliente)
> >
> > CREATE TABLE sanguijuelas (
> > usuario tipo_dato not null,
> > fecha timestamp not null
> > );
> >
> > CREATE RULE no_a_las_sanguijuelas AS ON UPDATE TO tabla
> > WHERE NEW.usuario <> OLD.usuario
> > DO INSTEAD
> > INSERT INTO sanguijuelas VALUES (NEW.usuario, current_timestamp);
> >
> >
> > --
> > Atentamente,
> > Jaime Casanova
> > (DBA: DataBase Aniquilator ;)
> >
>
>

--
Saludos,
Horacio Miranda Aguilera.
RedHat Certified Engineer

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Claudio Astorga Moreno 2005-12-04 16:32:05 Conexión
Previous Message Edwin Quijada 2005-12-04 02:02:06 RE: Split de un Backup