Относно защитата на данните в MDB файлове Access, Access, статии,Програмиране - C програмиране,
Малко отклонение. Какво е SUBD? Това означава система за управление на релационни бази данни. Какво е релационно? За простота можем да кажем, че това са бази данни, базирани на таблици. Какво, има ли други? Да, има. Бази от знания, йерархични бази данни, обектно-ориентирани бази данни. Има файлови бази данни, изградени по метода за индексиран последователен достъп (ISAM). В такива системи всяка таблица се съхранява в отделен файл, а името ISAM идва от физическия начин на съхраняване и достъп до данните. Примери за бази данни ISAM са dBase, FoxPro, Paradox, Excel. Някои теоретици приписват ISAM на релационни бази данни, други смятат, че пълноценната RDBMS трябва не само да съхранява и извлича информация, но и да гарантира нейната цялост. Достъпът в този смисъл е някъде по средата. Може да изпълнява някои контролни функции, но е далеч от SQL сървърите. Има и други видове бази данни, но това е отделен разговор. И така, да продължим. Повече или по-малко напреднал разработчик разделя своята MDB база на две, а понякога и на повече части. Разделянето на интерфейсни и таблични части трябва да се извърши, когато програмата е готова за пускане в експлоатация, а понякога дори и по-рано (освен ако не пишете програма само за себе си). Това улеснява поддържането на програмата при клиента. И това е практически задължително изискване при изграждане на файлово-сървърни многопотребителски системи. Въпросът за защитата на клиентската страна вече беше повдигнат тук. Искам да разгледам проблема със защитата на данните в таблиците. Ще разгледаме версията на файловия сървър на местоположението на базата данни.
Преди да започнем да говорим за защита, трябва да сте наясноКакво искате да защитите вашите данни. Защитите идват на различни нива и сложност. И може да се окаже, че изпълнението на изискването „за защита на всички данни, доколкото е възможно“ ще надхвърли сложността на разработването и отстраняването на грешки в самата база данни. И не забравяйте, че това, което един човек е направил, друг винаги може да развали. И никаква защита няма да ви спаси от обикновената небрежност. Виждал съм случаи, когато входът и паролата за достъп са написани на лист хартия, а след това този лист хартия е залепен за монитора, "за да не го загубите". И това не е шега. Факт е, че обикновен служител на компания / отдел най-често не се интересува от защитата на информацията. Неговата задача е да изработи необходимите часове и то с най-голям комфорт за себе си. Оттук излиза: раздавате пароли за достъп на ВСЕКИ служител, а те ги пишат на лист (в общ списък) и ги поставят под стъкло. Подобен "позор" обикновено завършва с факта, че някой е въвел / изтрил нещо на грешното място. Започва разглобяването - и тогава операторът разбира, че ако не разкрие паролата си, тогава никой не може да влезе в базата данни и да „рови“ там от негово име. Оттук и извода - защита на базата, бизнеса на ЛИДЕРА, а не на операторите. Сега нека разгледаме начините за защита.
административен метод.
Ако информацията е написана, тя може да бъде прочетена; ако може да бъде прочетена, може да бъде копирана; ако може да бъде копирана, може да бъде открадната.
Прикриване.
ПРЕДУПРЕЖДЕНИЕ. Никога не присвоявайте разширения, запазени за временни файлове, към база данни. В противен случай програмата за почистване на твърдия диск може да го изтрие. Не присвоявайте разширения на медийни файлове. В противен случай, от любопитство, потребителите винаги ще се опитват да го стартират, за да видят какво крие администраторът на сървъра?
Има и друга възможност да объркате потребителя. Факт е, че в Access има три опции за показванеобекти:
- Нормалният режим (скритите и системните обекти не се показват в прозореца на базата данни) е зададен по подразбиране
- Режим на показване на скрити обекти (системните обекти не се показват в прозореца на базата данни)
- Режим на показване на системните обекти (показват се всички обекти)
Системният обект е вграден обект на база данни, дефиниран като системен обект, като например таблицата "MSysIndexes", или дефинирани от потребителя системни обекти. За да дефинирате системен обект, името му трябва да започва със знаците USys. Например, добавете USys към името на формуляр, таблица, отчет - и те веднага "изчезват", стават системни, но можете да ги получите от приложението по същия начин, както обикновено. За да направите обект скрит, трябва да го изберете, след това щракнете с десния бутон - и изберете "Свойства" в контекстното меню и задайте параметъра "Скрит". За да видите такива обекти, направете следното:
Услуга - Опции - раздел Преглед.
В групата Display изберете необходимата опция - поставете отметка (махнете отметката) „Hidden Objects“, „System Objects“ и др. Такава „защита“ може да обърка много потребители: дори ако успеят да отворят приложението чрез Shift, те ще бъдат изненадани да открият, че някаква форма или таблица не е там, въпреки че се вижда по време на работа. Но, разбира се, такъв трик няма да работи за професионалисти - разбира се, те знаят за свойствата на обектите на базата данни. Но като се има предвид, че по-голямата част от любопитните хора най-често се отказват от опитите си да „пуфят“, ако не успеят от първия път, тогава такава „защита“ заслужава внимание.
Защита на ниво домейн политики.
Защита с AutoExec макрос и Shift lock.
Нека създадем два макроса за изграждане на защитния интерфейс: AutoExec, AutoKeys.AutoExec е необходим за прихващане на събитието "отваряне на приложение", AutoKeys изпълнява подобна роля - прихваща натискания на клавиши на клавиатурата. За да ги прихване, трябва да се нарича AutoKeys (запазено име в Access). По същата причина AutoExec трябва да се нарича AutoExec. Друг важен момент - в менюто Инструменти - Опции за стартиране ще премахнем всички отметки, в противен случай ще стане много лесно да заобиколите защитата срещу Shift: Window - Display - DB Window. Ако всички менюта са деактивирани, тогава в елемента от менюто "Прозорец" ще се показват само режимите на подреждане на прозорци, а основният прозорец няма да се показва. В макроса AutoExec ще дадем команда за стартиране на формата FrmStart, в макроса AutoKeys - формата OnOffShift. Освен това, формулярът OnOpenShift ще се стартира при натискане на клавишната комбинация Ctrl + Q. За да направите това, в конструктора задайте името на макроса - ^Q. Защо толкова трудно? Факт е, че ако просто зададем стартирането на формуляра в услугата - Опции за стартиране, тогава когато защитата срещу Shift е активирана, ще се отвори празен прозорец на Access. Ще затворим базата като цяло за всички, включително и за нас! За всяка ключалка трябва да има ключ: това е формата VklOtkShift - чрез нея се инсталира и премахва защитата. И ако го направите скрит (вижте по-долу) и го пуснете през макрос (клавишна комбинация), ще объркаме любопитните потребители още повече. Самото включване става чрез свойството на основата
DBS.Properties("AllowBypassKey") = вярно (или невярно)
Това свойство е зададено на True или False в зависимост от стойността на паролата, въведена в полето на формуляра OnOffShift. След това базата данни се затваря (за да влязат в сила промените)
Пример за това как всичко работи може да се намери тук http://www.accessoft.ru/Text/Text201.html
Защитата на база данни с таблици е малко по-различна от защитата на база данни с изпълним код. Най-често стартовата формае формуляр с предупредителен етикет като "Таблици с данни, без директен достъп!" и задайте таймер. Ако след отваряне на стартовия формуляр, в рамките на определено време, клавишната комбинация, която предизвиква формуляра за деактивиране на Shift, не бъде натисната, тогава приложението се затваря. И тук фантазията на разработчиците може да се развие! Попаднах на програма, в която при опит за отваряне на база данни с таблици на целия екран се разгръща черно пиратско знаме с череп, завързан с червен шал и превръзка на очите, кръстосани саби и кървав надпис - „Не сте добре дошли тук!“. Възможно е след известно време, преди да затворите базата, да поставите на високоговорителя полицейска сирена или зловещ смях. Сред разработчиците на бази данни има хора с хумор! Някои "особено злобни" програмисти също вграждат команди за рестартиране и изключване на компютъра. И като се има предвид фактът, че има много ключове и изходът от формуляра за деактивиране на защитата от Shift може да бъде окачен и на по-сложна комбинация от няколко клавиша, тогава „експериментаторът скоро ще се умори да включва компютъра отново Обикновено защитата от Shift се използва в комбинация с други методи: свързване с компютър, влизане с парола, криптиране на данни и т.н. И сега нека добавим голяма муха в мехлема. Тази защита работи само за онези, които са научили Access от книги като Access in 24 Hours, Access for Dummies и т.н. Работи само ако се опитвате да отворите MDB с Access. Не работи срещу обичайното свързване на други програми към него. За да направите това, можете да използвате същия Access. Достатъчно е да създадете чиста база данни и да я свържете със защитена. Или импортирайте цялото съдържание на защитената база данни в нея. Така ще имате точно копие на защитената база с премахната защита. Освен това в интернет можете да намерите програми, които са новивключете Shift. И след това стартирайте с натиснат Shift и правете каквото искате. Така че нека преминем към следващата защита - защита с парола.
Защита на базата данни с парола.
Този метод на защита ви позволява да зададете парола за отваряне на базата данни за всички потребители. За да го създадете, трябва да отворите файла на базата данни в режим "изключителен" и да изберете елемент от менютоУслуга / Защита / Задаване на парола за база данни. За да работите с такава база данни в MS Access, ще трябва да въведете парола. Ето пример за работа с db файл с помощта на DAO или ADO.
Public Sub TestDAO() Dim mWS As DAO.Workspace Dim mDB As DAO.Database Set mWS = DBEngine.Workspaces(0) Set mDB = mWS.OpenDatabase _ ("C:a97.mdb", True, True, ";pwd=123") Краен суб
Public Sub TestADO() Dim CnDB като нова ADODB.Connection CnDB.Open "Provider=Microsoft.Jet.OLEDB.4.0" & _ ";Източник на данни=C:a97.mdb" & _ ";Jet OLEDB:парола за база данни=123" End Sub
Това също не е най-надеждният начин за защита на базите данни. Има достатъчен брой безплатни и платени помощни програми, които показват паролата. Налични са включително изходни кодове за VB код, които ви позволяват да прочетете такава парола. Освен това не всичко е толкова лошо. Факт е, че някои разработчици смятат, че няма други езици освен английския. Достатъчно е да включите български букви в паролата, за да шашнете потребителя, който използва такива програми. Да, те изглежда разкриват паролата, но това, което дават като парола, е невъзможно да се анализира. Нека продължим да играем с паролата на базата данни. Например, можете да използвате непечатаеми знаци в паролата си. На първо място, този метод е насочен към противодействие на дефинирането на пароли с помощта на специални програми. Стандартен начин за задаване и използване на паролаБазата данни предполага въвеждането й от клавиатурата в диалоговия прозорец. Ако низът на паролата съдържа непечатаеми знаци, тогава те няма да бъдат правилно показани от програмата, която отваря паролите на базата данни. От друга страна, тази парола не може да бъде въведена в диалоговия прозорец при отваряне на базата данни в MS Access. Ако паролата съдържа табулатори, Esc или Enter, тогава по стандартния начин няма да можете да ги въведете в полето за въвеждане на парола. Методът се основава на факта, че паролата на базата данни във формат Access 2000 и 2002-2003 е текстов низ във формат Unicode (в Access 97 - ANSI). Въпреки това няма ограничения за съдържанието му. Спецификацията на базата данни и DAO 3.60 помагат да се посочи, че максималният брой знаци в една парола е 14. Но всъщност може да има 20. В същото време самият Access 97 не позволява низове от пароли с повече от 14 знака. Спецификацията на Access 2003 също казва 14 знака, но програмата позволява да бъдат въведени всичките 20. Възможни са и непечатаеми знаци, което прави повечето програми за разбиване на пароли изумени. За да зададете такава парола, ще трябва да използвате специална програма, която използва метода CompactDatabase на библиотеките ADOX или DAO. Но, както се казва, срещу всичко можете да намерите скрап. И такава защита се разкрива.
Първо, можете да използвате програматаAccessRecovery, която създава нов файл без защита и прехвърля в него таблици, заявки, формуляри, макроси, отчети и модулен код.
Но всичко това вече изисква наличието на определени знания и опит, така че има вероятност любопитен потребител да се умори да експериментира.
Защита чрез терминален достъп до сървъра.
Почти непроницаема защита. Както клиентската част, така и базата с таблици се намират на сървъра. Компютърът на клиента емулира терминала на сървъра. Сякаш седите зад него (в смисъл, на сървъра). Можете да конфигурирате терминалния достъп така, че когато стартирате необходимата задача (чрез пряк път), поискате подходящите пароли за достъп до системата, необходимата база данни се зарежда веднага. Когато базата е затворена, терминалът се затваря. Защитата от преместване е регистрирана в самата база данни, всички стандартни менюта на Access и горещи клавиши са деактивирани, прозорецът на базата данни е деактивиран. И потребителят не може да презапише или копира нищо. Нито отваря директно маси, нито има достъп до формуляри и отчети, които са затворени за него. Друг терминален достъп се нарича според мен отдалечен работен плот. Недостатъците на този метод са, че цялата обработка на данни пада върху сървъра, но слабите машини могат да се използват като клиенти.