Foros del Web » Programando para Internet » PHP »

Seguridad y Auditoria en php

Estas en el tema de Seguridad y Auditoria en php en el foro de PHP en Foros del Web. Hola amigos busque mucho en san google de como poder hacer una bitacora o auditoria a mi sistema que me indique q usuario a modificado, ...
  #1 (permalink)  
Antiguo 19/05/2009, 15:56
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Seguridad y Auditoria en php

Hola amigos busque mucho en san google de como poder hacer una bitacora o auditoria a mi sistema que me indique q usuario a modificado, eliminado o insertado , pero no encontre lo unico que encontre es q deberia hacerlo en php y no asi en mysql por cuestiones de versiones mi pregunta es
Se debe hacer las bitacoras en php o directamente en mysql y si tuvieran alguna guia de como podria implementarlo se los agradeceria
  #2 (permalink)  
Antiguo 19/05/2009, 16:01
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
Respuesta: Seguridad y Auditoria en php

Podrias realizar una bitacora utilizando Triggers que estan disponibles en MySQL son muy faciles de manejar y ayudan mucho ademas que seria lo masss optimo.

Mira este ejemplo que me sale con ayuda de google




Desde la salida de la versión 5 de MySql se pueden usar triggers en nuestras bases de datos.

Peró, ¿qué son los triggers?, son objetos relacionados con tablas y almacenados en la base dedatos que se ejecutan o se muestran cuando sucede algún evento sobre sus tablas asociadas.

Los eventos pueden ser las sentencias INSERT, DELETE, UPDATE que modifican los datos de una tabla. Los triggeres se pueden ejecutar antes (BEFORE) y/o después (AFTER) de que sean modificados los datos.

Los triggers tienen dos palabras clave, OLD y NEW que se refieren a los valores que tienen las columnas antes y después de la modificación. Los INSERT permiten NEW, los DELETE sólo OLD y los UPDATE ambas.

Un ejemplo de trigger seria uno asociado a la sentencia DELETE en una tabla de clientes, para impedir que se elimine uno que tenga un saldo distinto de cero. Otro trigger seria guardar los datos que se modifican de un cliente en otra base de datos que serviria de auditoria.

Crearemos la tabla de clientes y le ponemos algunos registros:

CREATE TABLE clientes(
id int not null auto_increment,
nombre varchar(100),
seccion varchar(10),
PRIMARY KEY(id),
KEY(nombre)
) ENGINE = InnoDB;

INSERT INTO clientes (nombre, seccion) VALUES
('Miguel','informatica'),
('Rosa','comida'),
('Maria','ropa'),
('Albert','informatica'),
('Jordi','comida');

Y una tabla que será la que guardará los datos de la "auditoria"

CREATE TABLE auditoria_clientes
(
id int not null auto_increment,
nombre varchar(100),
anterior_seccion varchar(10),
usuario varchar(40),
modificado datetime,
primary key(id)
) ENGINE = InnoDB;

y finalmente un trigger que se disparará cada vez que alguien modifique un dato de la tabla clientes y lo guardará en una tabla junto al nombre del usuario y la fecha.

CREATE TRIGGER trigger_auditoria_clientes AFTER UPDATE ON clientes
FOR EACH ROW
INSERT INTO auditoria_clientes(name, anterior_seccion, usuario, modificado )
VALUES (OLD.nombre, OLD.seccion, CURRENT_USER(), NOW() );
  #3 (permalink)  
Antiguo 19/05/2009, 19:36
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Seguridad y Auditoria en php

acoevil Mas claro q el agua imposible! muy bien!
  #4 (permalink)  
Antiguo 07/06/2014, 08:28
 
Fecha de Ingreso: junio-2014
Mensajes: 2
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Seguridad y Auditoria en php

Hola Acoevil, excelente tu publicación, soy un novato en el tema y me gustaria saber si el nombre del usuario, es decir, "CURRENT_USER()" se podria cambiar por el usuario de pagina web, es decir por una variable de session, del usuario que esta haciendo los cambios en ese momento de manera online
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:59.