Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Предоставление пользователям возможности изменять свой собственный пароль

Предоставление пользователям возможности изменять свой собственный пароль

Самым простым и наиболее известным способом изменения является предоставление следующей привилегии изменения для пользователя, не являющегося SYSDBA, GRANT UPDATE ON USERS то PUBLIC и добавление триггера, предотвращающего изменение пользователем, не являющимся SYSDBA, пароля других пользователей.

Вот скрипт:

/* Copyright Ivan Prenosil 2002-2004 */

CONNECT 'C:Program FilesFirebirdFirebird_1_5security.fdb'

USER 'SYSDBA' PASSWORD 'masterkey';

CREATE EXCEPTION E_NO_RIGHT 'You have no rights to modify this user.';

/* Вы не имеете прав для изменения этого пользователя */

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 ;!!

/** Grants. **/

GRANT UPDATE (PASSWD, GROUP_NAME, UID, GID,

FIRST_NAME, MIDDLE_NAME, LAST_NAME)

ON USERS TO PUBLIC;

Довольно неуклюже предоставлять доступ ко всем столбцам, когда вам реально нужен доступ только к PASSWD. К сожалению, это необходимо, если ваше приложение собирается использовать gsec или сервис API.

Такая модификация не устраняет проблему видимости для PUBLIC полного списка пользователей и их зашифрованных паролей. Это позволяет пользователям очень просто получить список паролей других пользователей и постараться сломать их локально посредством грубой силы[136].

Оглавление книги


Генерация: 1.218. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз