Форум » Clipper » Вопрос о безопасности базы данных » Ответить

Вопрос о безопасности базы данных

Dima: Имеем сервер Novell 4.x + Ads for Novell На серваке лежит база (это и понятно) Есть основная программа работающая на рабочих станциях (писанная на Clipper) + 2 проги написанные на (X)harbour и работающие с той же базой данных и выполняющие свои специфические функции. Саму базу с сервера может получить любой злоумышленник , скажем конкурент , путем копирования. Как скрыть базу данных или скажем запретить ее копирование другими средствами ? PS Шифрование не предлагать !

Ответов - 12

Гост: Dima пишет: Имеем сервер Novell 4.x + Ads for Novell На серваке лежит база (это и понятно) Есть основная программа работающая на рабочих станциях (писанная на Clipper) + 2 проги написанные на (X)harbour и работающие с той же базой данных и выполняющие свои специфические функции. Саму базу с сервера может получить любой злоумышленник , скажем конкурент , путем копирования. Как скрыть базу данных или скажем запретить ее копирование другими средствами ? PS Шифрование не предлагать ! Oracle

Гост: Гост пишет: Oracle Пардон! А што такое Clipper и (X)harbour ??? Dima пишет: Шифрование не предлагать ! Google не предлагать!

Andrey: Dima пишет: Как скрыть базу данных или скажем запретить ее копирование другими средствами ? Переводить ВСЕ на HARBOUR+ LETODB ! Сам маялся долго насчет этой проблемы !


Dima: Andrey А сколько пользователей в сети у Вас которые юзают одну и ту же базу данных под LetoDb ? У нас 60. На данный момент в ряде баз 3 лимона записей в каждой.

Andrey: Так по моему под ADS можно назначить отдельный каталог (с базами) на сервере который обычный пользователь не видит !!! ADS сам занимается доступом к базам. И всех делов то...

Dima: Andrey пишет: Так по моему под ADS можно назначить отдельный каталог (с базами) на сервере который обычный пользователь не видит !!! Да можно сделать средствами Novell , сняв атрибут FileScan на папке с базой и в программе установить AX_rightCheck(.f.) В этом случае все файловые функции будут работать не так как нужно :( Вот цитата из NG [pre2] Вызов AX_RightsCheck( .F. ) приведет к тому, что доступ к любым новым открываемым рабочим областям будет происходить через Advantage server без проверки прав доступа к файлам/директориям. Это позволяет сетево- му администратору "спрятать" Xbase файлы данных от пользователей, ко- торые обращаются к данным не через Advantage-приложения. Xbase данные защищаются путем удаления всех прав доступа к директориям, в которых расположены файлы данных. Только Advantage-приложения, используя этот метод защиты смогут получить доступ к файлам данных. Advantage server будет создавать, открывать и/или обновлять "скрытые" файлы с правами "администратора". Замечание: Изменение метода защиты с помощью AX_RightsCheck() дейс- твует только на те рабочие области, которые были открыты или созданы после вызова этой функции. Замечание: Функции CA-Clipper, такие как FILE(), FOPEN() и FERASE() не являются функциями RDD. Поэтому они не способны получить права доступа Advantage Database Server. Следовательно, если системный ад- министратор удалит права доступа к директориям, эти функции могут ра- ботать не так, как ожидается. Замечание: SET PATH не будет действовать при установке метода защиты Advantage "не проверять права доступа". Если при создании или откры- тии файла не указано полного пути доступа и командой SET PATH указан путь, то путь указанный в SET PATH НЕ БУДЕТ учитываться при попытке открыть файл с установкой"не проверять права доступа". Путь, указан- ный в команде SET PATH будет учитываться при попытке открыть/создать файл с установкой "проверять права доступа" Замечание: При отключении проверки прав доступа вам может понадобить- ся указать директорию к местоположению семафорного файла связи между клиентом и сервером. Для дополнительной информации обратитесь к ваше- му руководству по Advantage server. [/pre2]

k_dima: у меня лет 10, без проблем работали программы в режиме невидимости каталогов . Временные файлы нужно делать на локальном диске, а индексы создавать на станции администратора.

Dima: k_dima пишет: Временные файлы нужно делать на локальном диске Так и делаю. Как быть например с функцией File() ? В программе стоит проверка (при запуске) на наличие баз данных Примерный кусок кода [pre2] if !file("test.dbf") dbcreate("test",{{"t1","c",1,0}}) endif [/pre2] Установки set path to dbf\ set default to dbf\ Понятно что эти установки нужно привести к полному пути , типа set path to n:\sklad\dbf\ set default to n:\sklad\dbf\ но это не повлияет на работу функции File()

Pasha: В Ace32/харборе есть функция AdsCheckExistence У клиента для клиппера я прямого аналога не вижу. Можно попробовать функцию AX_GetDrive(). Если она вернет пустую строку, то файл не существует

Dima: Pasha Cпасибо , думаю. Дело в том что эта задача должна работать как в серверном варианте так и в локальном. Сегодня так и работает. Под сервером RDDADS , локально RDDSIX

Pasha: Dima пишет: задача должна работать как в серверном варианте так и в локальном. Можно использовать такую функцию: Function TableExist(cName) Local lRet if RddName() = "SIXCDX" lRet := File(cName) else lRet := ! Empty(AX_GetDrive(cName)) endif Return lRet

PRG_MAN: у меня сделано через обработчик ошибок OldErrBlock:=ERRORBLOCK( {|o| BREAK(o)} ) BEGIN SEQUENCE dbUseArea(...) dbSetIndex(...) RECOVER USING objErr DiagOpenErr( objErr, .t. ) DiagErrMsg ( objErr ) ERRORBLOCK( OldErrBlock ) Return .F. END SEQUENCE ERRORBLOCK( OldErrBlock ) Return .T. Static Proc DiagOpenErr (o, lShared) Local NF If ValType(o)=='O' DO Case CASE !Empty(o:cargo) nError := o:cargo CASE o:osCode = 2 .and. o:genCode = 21 nError := ER_FILE_NOT_FOUND CASE o:osCode = 3 .and. o:genCode = 21 nError := ER_DIR_NOT_FOUND . . . Static Proc DiagErrMsg (o) Local NF If ValType(o)=='O' NF := AllTrim(o:FileName) EndIF If Empty(NF) NF := LastFileName EndIF DO Case CASE nError = ER_FILE_NOT_FOUND _ErrorMessage('Не найден файл '+NF) CASE nError = ER_DIR_NOT_FOUND _ErrorMessage('Не найдена директория '+NF) . . .



полная версия страницы