Новое в СУБД ЛИНТЕР 6.1

         

Проблемы безопасности при резервном копировании


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

При написании запроса на создание архива пользователь по какой-либо причине может неверно указать имя архивного файла. Например, указать в качестве имени файла путь к исполняемому (или другому важному) файлу операционной системы. Если при этом в SQL-запросе будет присутствовать команда REWRITE, то этот файл будет удален перед созданием файла архива. Тем самым при создании архива нарушится целостность либо операционной системы, либо любой другой программы.

Чтобы избежать подобных ситуаций, перед процедурой удаления указанного в SQL-запросе файла системой будет производиться проверка этого файла по следующим критериям:

• Это должен быть файл архива, созданный в результате резервного сохранения либо программой lhb , либо в результате внутреннего резервного сохранения.

•  Версия базы данных, с которой создавался архив, должна совпадать с текущей версией СУБД ЛИНТЕР.

•  Имя пользователя, создавшего файл архива, должно совпадать с именем пользователя, осуществляющего попытку перезаписи этого файла. Исключение делается только для пользователя, создавшего базу данных (по умолчанию – пользователь SYSTEM).

•  Имя файла не должно содержать абсолютного пути.

•  В имени не должно присутствовать каталогов и переходов на уровень вверх на каталог (/../)

•  В качестве имени устройства должны выступать устройства, описанные в системной таблице $$$DEVICE (либо устройство SY00). Совершенно естественно, что необходимо наличие этой таблицы в базе данных.

Если указывается имя файла без имени устройства, сохранение будет происходить в каталоге, на который указывает переменная SY00.

Примеры корректных имен файлов, передаваемых в SQL-запросе:

BACKUP DATABASE DEVICE ‘SY00’ FILE 'full_database.lhb'; BACKUP DATABASE DEVICE ‘SY02’ FILE 'another one archive.lhb'; (имя SY02 должно присутствовать в системной таблице $$$DEVICE). BACKUP DATABASE FILE 'small.lhb'; (файл будет создан в пути, на который указывает SY00).

Примеры некорректных имен файлов, передаваемых в SQL-запросе:

BACKUP DATABASE FILE 'C:\full_database.lhb'; BACKUP DATABASE FILE 'SY00/ARCHIVES/database.lhb'; BACKUP DATABASE FILE '/../db.lhb';

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



Содержание раздела