Ver Mensaje Individual
  #42 (permalink)  
Antiguo 17/03/2004, 12:13
Avatar de mauriciolangea
mauriciolangea
 
Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 11 meses
Puntos: 0
Interbase

Tema : Interbase

Pregunta : ¿Como permito que los usuarios puedan modificar su propia contraseña?

Respuesta

La manera más sencilla es hacer un GRANT UPDATE a la tabla USERS para que sea una tabla PUBLICA, además de crear u TRIGGER para prevenir que los usuarios puedan cambiar la contraseña de otros usuarios, a excepción de SYSDBA.

Debes conectarte a la base de datos de seguridad de Interbase (isc4.gdb) ...


En windows ...

CONNECT 'C:\Archivos de programa\Borland\InterBase\isc4.gdb'
USER 'SYSDBA'
PASSWORD 'masterkey';



En Linux ...

CONNECT /opt/interbase/isc4.gdb
USER 'SYSDBA'
PASSWORD 'masterkey';



Creamos el TRIGGER, para que los usuarios no se cambién la contraseña entre sí, a excepción de SYSDBA.


CREATE EXCEPTION E_NO_RIGHT
'No estás autorizado para modificar a éste usuario.';

SET TERM !!;
CREATE TRIGGER user_name_bu
FOR USERS
BEFORE UPDATE
AS
BEGIN
IF (NOT (USER='SYSDBA' OR USER=OLD.USER_NAME))
THEN EXCEPTION E_NO_RIGHT;
END !!
SET TERM ;!!



Y finalmente realizamos el GRANT UPDATE sobre la table USERS, para que sea una tabla PUBLICA.


GRANT UPDATE(PASSWD, GROUP_NAME, UID, GID, FIRST_NAME, MIDDLE_NAME, LAST_NAME)
ON USERS
TO PUBLIC;



Esta modificación tiene una gran falencia, todos los usuarios y sus contraseñas encriptadas, quedarán visibles al PUBLICO, de esta manera es más fácil descargar la lista de usuarios y intentar romperlas a fuerza bruta.