Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Тут можно читать онлайн Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство БХВ-Петербург, год 2006. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
  • Автор:
  • Жанр:
  • Издательство:
    БХВ-Петербург
  • Год:
    2006
  • Город:
    Санкт-Петербург
  • ISBN:
    5-94157-609-9
  • Рейтинг:
    4/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - описание и краткое содержание, автор Хелен Борри, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.

Для разработчиков баз данных

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать книгу онлайн бесплатно, автор Хелен Борри
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

1. Сделайте оперативную копию security.fdb с использованием gbak.

2. Восстановите ее с другим именем.

3. Запустите скрипт для копии.

4. Закройте сервер.

5. Поменяйте местами старую и новую версии security.fdb и переименуйте.

6. Запустите заново сервер.

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

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

Вот скрипт:

/* Copyright Ivan Prenosil 2002-2004 */

CONNECT 'C:\Program Files\Firebird\Firebird_1_5\security.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] Как уже говорилось ранее, шифрование пароля производится с потерей данных. Единственный способ, которым можно "взломать" пароль, - это перебор словаря, шифруемого тем же алгоритмом, что используется в Firebird. В данном случае время подбора существенно сокращается тем, что шифруемый пароль имеет длину не более 8 символов. - Прим. науч. ред. .

Как спрятать список пользователей/паролей

Если вы переименуете таблицу USERS и заново создадите USERS как просмотр переименованной таблицы, вы можете получить лучший из миров. У пользователей будет возможность изменять свои собственные пароли, а полный список пользователей и паролей будет спрятан для PUBLIC. Каждый пользователь, не являющийся SYSDBA, будет видеть только одну запись из security.fdb (или isc4.gdb, если у вас сервер версии 1.0.x). Новые структуры в security.fdb будут похожи на следующую схему:

/* Copyright Ivan Prenosil 2002-2004 */

CONNECT 'C:\Program Files\Firebird\Firebird_1_5\security.fdb'

USER 'SYSDBA' PASSWORD 'masterkey';

/** Переименование существующей таблицы USERS в USERS2. **/

CREATE TABLE USERS2 (

USER_NAME USER_NAME,

SYS_USER_NAME USER_NAME,

GROUP_NAME USER_NAME,

UID UID,

GID GID,

PASSWD PASSWD,

PRIVILEGE PRIVILEGE,

COMMENT COMMENT,

FIRST_NAME NAME_PART,

MIDDLE_NAME NAME_PART,

LAST_NAME NAME_PART,

FULL_NAME COMPUTED BY (first_name || _UNICODE_FSS ''II middle_name || _UNICODE_FSS ' ' || last_name ) ) ;

COMMIT;

INSERT INTO USERS2

(USER_NAME, SYS_USER_NAME, GROUP_NAME,

UID, GID, PASSWD, PRIVILEGE, COMMENT,

EIRST_NAME, MIDDLE_NAME, LAST_NAME)

SELECT

USER_NAME, SYS_USER_NAME, GROUP_NAME,

UID, GID, PASSWD, PRIVILEGE, COMMENT,

EIRST_NAME, MI DDLE_NAME, LAST_NAME FROM USERS;

COMMIT;

/* */

DROP TABLE USERS;

/* */

CREATE UNIQUE INDEX USER_NAME_INDEX2 ON USERS2(USER_NAME);

/** Создание просмотра, который будет использован вместо первоначальной таблицы USERS. **/

CREATE VIEW USERS AS

SELECT *

FROM USERS2

WHERE USER = ''

OR USER = 'SYSDBA'

OR USER = USER_NAME;

/** Полномочия **/

GRANT SELECT ON USERS TO PUBLIC;

GRANT UPDATE (PASSWD, GROUP_NAME, UID, GID, FIRST_NAME, MIDDLE_NAME, LAST_NAME)

ON USERS

TO PUBLIC;

Реальная таблица USERS2 видима только для SYSDBA. Следующее условие

USER = USER_NAME

гарантирует, что каждый пользователь видит только свою собственную запись. Условие

USER = 'SYSDBA'

гарантирует, что SYSDBA может видеть все записи. Условие

USER = ' '

является важным, потому что переменные USER и CURRENT_USER содержат пустые строки в процессе проверки пароля.

! ! !

ПРИМЕЧАНИЕ. К сожалению, две следующие техники не могут быть реализованы в сервере Firebird 1.5. Они используют запись в файлы протоколов. Улучшения безопасности, выполненные в версии 1.5, означают, что подпрограмма идентификации пользователя теперь выполняется в транзакции только для чтения, следовательно, невозможно выполнять запись в протокол! Похожая схема может быть реализована путем делегирования функции протоколирования внешним функциям.

. ! .

Как запротоколировать попытки соединения с базой данных

Замена таблицы USERS в базе данных безопасности на просмотр USERS имеет одно большое преимущество: она позволяет нам вызывать хранимую процедуру, когда пользователь пытается соединиться с базой данных. Когда сервер Firebird выполняет оператор

SELECT PASSWD FROM USERS

WHERE USER_NAME = ?;

мы можем выполнить процедуру, которая действует как триггер выбора или триггер соединения. Эта процедура может быть написана таким образом, что она, например, будет отвергать подключения в некоторые часы дня или протоколировать время, когда пользователи пытаются подключиться к базе данных.

Мы можем протоколировать только имена известных пользователей - т. е. только тех пользователей, имена которых уже хранятся в таблице USERS - и не существует возможности сообщить, было ли подключение успешным. Однако даже такая ограниченная информация, которую мы можем внести в протокол, является полезной. Это может проинформировать нас о попытках подключения в необычное время, что позволит обнаружить множество подозрительных подключений за короткий промежуток времени.

Для подобной реализации нам нужна таблица для протокола и хранимая процедура для выполнения работы.

Таблица протокола

Таблица протокола должна быть внешней таблицей, потому что транзакция, используемая сервером для идентификации пользователей, не подтверждается, а откатывается. Для внешних таблиц не выполняется отмена записанных данных при откате транзакции, как это происходит при добавлении данных в обычную таблицу.

CREATE TABLE,log_table

EXTERNAL FILE 'C:\Prograin Files\Firebird\Firebird_1_5\security.log' ( tstamp TIMESTAMP, uname CHAR(31) );

Если вы хотите, чтобы таблица протокола была читаема как текстовый файл, вы должны использовать CHAR(20) вместо TIMESTAMP, выполняя необходимые преобразования, и добавить еще два столбца: одиночный CHAR для разделения столбцов времени (tstamp) и имени (uname) и CHAR(2) для заполнения кодами возврата каретки и перевода строки.

Процедура подключения

Хранимая процедура имеет тип процедуры выбора, которую можно вызывать из просмотра. Если соединение успешное, происходит обращение к SUSPEND, и строка записывается в протокол. Если соединение ошибочное по той причине, что запрашиваемая из просмотра строка запрещена, то процедура просто завершается, не записав ничего в протокол. Выходной параметр является простой формальностью, его значение игнорируется.

CREATE PROCEDURE log_proc

(un VARCHAR(31)) RETURNS

(x CHAR(1) )

AS

BEGIN

IF (USER = '') THEN

INSERT INTO log_table (TSTAMP, UNAME) VALUES ( CURRENT_HMESTAMP, :un);

/* и не забудьте изменить записанные поля, если вы изменили таблицу log_table, чтобы сделать ее текстовым файлом! */ IF (USER = '' OR USER = 'SYSDBA' OR USER = :un) THEN SUSPEND;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Хелен Борри читать все книги автора по порядку

Хелен Борри - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ отзывы


Отзывы читателей о книге Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ, автор: Хелен Борри. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x