Защита базы данных Access с помощью пароля. Подключение к базе данных Microsoft Access

И другие. В основном они показывают пароль длиной от 2-16 символов (зависит от версии программы). Можно было ограничиться этим ответом, но так как мы занимаемся детально вопросами программирования и защиты базы данных рассмотрим его более серьезно.
Описание алгоритма пароля для Access 2000 у меня нет, хотя кусочки информации по шифрованию Аccess 97 в англоязычном Интернете есть. Сущность информации в том, что пароль шифруется простейшим алгоритмом XOR и его смещение от начала файла = 67 байт. Но этих данных явно недостаточно для расшифровки. Поэтому, попробуем составить программу, которая сама проанализирует пароль. Сущность предложенного метода заключается в многократном сравнении файлов с паролями и без них, и поиске закономерностей. Все результаты эксперимента сохраняются в таблице и используются для анализа пароля. Примеры программ для определения пароля Access 2000 записаны в 7 примере файла: la_prot.mdb
Таким образом, мы сможем определить а) длину пароля; б) смещение пароля от начала файла; в) позицию меняющихся байтов г) маску пароля (слово для расшифровки). Используя функцию funAnalysisPassword, можно получить следующую информацию.
1. Cмещение пароля от начала файла 67 байт.
2. Маска пароля составляет 40 байт (длина пароля 20 символов)
3. Байты маски:
055 056 212 156 250 163 206
040 230 118 038 138 096 049 004 123 054
144 226 223 177 018 100 019 067 170 063
177 051 081 241 121 091 247 037 124 042
...
Байты Маски меняются в зависимости от даты, установленной на компьютере. Например, на 17.03.2001 = 228,107,236. Проверено, что 67 байт - меняется ежедневно, 68 байт - ежегодно, а 69 байт имеет еще более длительный период изменения. Байты меняются при каждом создании базы данных. Отсюда можно сделать - что это байты, которые сохраняют некоторую информацию по дате создания базы данных.
4. Алгоритм шифрования XOR.
Пример зашифровки: p XOR m = ?.
Пример расшифровки: ? XOR m = p. В примерах используются следующие обозначения: p-байт пароля базы данных, m - байт маски пароля, ? - зашифрованный байт.
5. Символы хранятся в формате UNICODE, т.е 2 байта на символ, поэтому необходимо провести конвертацию строки пароля. Это делается так: password=StrConv(s, vbFromUnicode)
Таким образом, для нахождения пароля достаточно определить байты 67-69, используя информацию из байтов 115-117. Задачка очень интересная и оригинальная, так что подумайте немного сами. В приводимых же примерах la_prot маска пароля определялась по другому, приблизительно. Для этого смотрите функцию funGetMaskPassword. Сущность метода. а) читаем дату создания файла FileDateTime(myDataBase), б) устанавливаем время Time = timeDB, в) создаем незащищенную базу и читаем маску в массив, г) возвращаем текущее время и удаляем лишние файлы.
После того как файл расшифровывался, запускалась программа для тестирования пароля. Используя эту программу, можно находить некоторые байты пароля обычным перебором символов. Код ее приведен ниже:
Public Function funTestPassword(strMdb As String, strPassword As String) As Boolean
Dim cnn As New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMdb & ";Mode=Read;Jet OLEDB:Database Password=" & strPassword
cnn.Open
" Далее идет проверка на ошибку
PS. В примере 7 (la_prot.mdb) Вы найдете и другие функции, работающие с паролем. Использование их необязательно, т.к. если Вы знаете пароль, то его можно удалить или изменить, используя Access, но для проверки разных алгоритмов могут пригодиться.

Под "защитой БД" здесь понимается способ предотвратить несанкционированный доступ к информации, хранимой в таблицах. Защита исходного кода форм и модулей не рассматривается.

Актуальность данной темы чрезвычайно высока. Об этом можно судить по первому месту в рейтинге (18 тысяч обращений) статьи которую написал Юрий Шерман. Мне встретилась даже книга в 500 страниц полностью посвящённая защите Access: Garry Robinson "Real World Microsoft Access Database Protection and Security .

Стандартные способы защиты

Защита с использованием пароля БД

Данный способ защиты позволяет установить пароль на открытие БД, для всех пользователей. Для его создания необходимо открыть файл БД в "монопольном" режиме и выбрать пункт меню Сервис / Защита / Задать пароль базы данных. Для работы с такой базой данных в MS Access потребуется вводить пароль. Вот пример работы с файлом БД, используя DAO или ADO.

Public Sub TestDAO()
Dim mWS As DAO.Workspace
Dim mDB As DAO.Database
Set mWS = DBEngine.Workspaces(0)

("C:\a97.mdb", True, True, ";pwd=123")
End Sub

Public Sub TestADO()

CnDB.Open "Provider=Microsoft.Jet.OLEDB.4.0" & _
";Data Source=C:\a97.mdb" & _
";Jet OLEDB:Database Password=123"
End Sub

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

Защита с использованием пароля пользователя

Данный способ позволяет ввести дополнительный уровень ограничений, связанных с работой БД Access. Основан на создании файла рабочих групп, в котором определяются имена пользователей, их пароли и права на работу с различными объектами БД.

Последовательность действий для создания защищённого файла:

  • Создание нового файла рабочих групп.
    Для этого в 97-2000 Access запускается программа WRKGADM.EXE, а в 2003 Access необходимо выбрать пункт меню "Сервис / Защита / Администратор рабочих групп". В администраторе жмём кнопку "Создать", указываем имя, организацию и код группы. Указываем имя и расположение создаваемого файла. Например:
    Имя: test_Имя
    Opгaнизaция: ~
    Кoд paбoчeй гpyппы: cтpoчкa 20 cимвoлoв.
    Фaйл paбoчeй гpyппы: C:\test\gr.mdw
  • Создание ярлыка, для запуска ms Access с использованием созданного mdw файла. Ярлык должен содержать строку: [путь к MSACCESS.EXE] /WrkGrp [путь к файлу mdw]. Например: "C:\Program Files\MSOffice2003\OFFICE11\MSACCESS.EXE" /WrkGrp C:\test\gr.mdw
  • Запустив Access c помощью этого ярлыка необходимо открыть пункт меню "Сервис / Защита / Пользователи и группы". В открывшемся диалоговом окне необходимо создать нового пользователя и добавить его в группу "Admins". Например, был создан "test_Пользователь" с кодом "987654321"
  • Теперь необходимо открыть Access от имени созданного пользователя. Для этого необходимо добавить в созданный ярлык строку: /user [имя пользователя]. Например: "C:\Program Files\MSOffice2003\OFFICE11\MSACCESS.EXE" /WrkGrp C:\test\gr.mdw /User test_Пользователь
  • Запускаем Access c помощью этого ярлыка. Теперь созданному пользователю необходимо присвоить пароль. Это делается в том же диалоге "Пользователи и группы". Допустим пользователю "test_Пользователь" присвоен пароль "test_Пароль". Далее, необходимо создать новую БД. При этом владельцем этой базы, а также всех создаваемых или импортируемых объектов (таблиц, запросов и.т.п.) будет пользователь имя которого было указано в ярлыке.
  • После того, как БД будет создана желательно удалить "Admin" из группы "Admins" и отобрать у группы "Users" права на объекты БД и на открытие базы.
  • Добавляем в ярлык название защищённой БД. Например: "C:\Program Files\MSOffice2003\OFFICE11\MSACCESS.EXE" C:\test\db2k_test.mdb /WrkGrp C:\test\gr.mdw /User test_Пользователь /pwd test_Пароль

Вот пример открытия БД защищённой на уровне пользователей с помощью DAO или ADO

Public Sub TestDAO()
Dim mWS As DAO.Workspace
Dim mDB As DAO.Database
DBEngine.SystemDB = "C:\test\gr.mdw"
Set mWS = DBEngine.CreateWorkspace _
("", "test_Пользователь", "test_Пароль", dbUseJet)
Set mDB = mWS.OpenDatabase _
("C:\test\a97.mdb", True)
End Sub

Public Sub TestADO()
Dim CnDB As New ADODB.Connection
CnDB.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\test\a97.mdb;" & _
"Jet OLEDB:System database=C:\test\gr.mdw;" & _
"User ID=test_Пользователь;" & _
"Password=test_Пароль;"
End Sub

Снятие такой защиты.
Создать новую БД. В ярлыке прописать путь к этой БД, MDW файл защищённой БД имя и пароль владельца. Открыть с помощью этого ярлыка новую БД. Импортировать в неё таблицы из защищённой, после чего сменить для всех объектов БД владельца на Admin. Для того, чтобы узнать имя и пароль владельца БД можно воспользоваться специализированными программами, описанными в обзоре Пароли Access . При отсутствии файла рабочих групп его можно восстановить. Для этого потребуется узнать имена и идентификаторы владельцев объектов БД. Эта информация содержится в файле базы данных и может быть извлечена с помощью таких программ как AOPR. Используя эти данные создаётся новый файл. (последовательность описана выше)

Совсем не обязательно использовать программы, позволяющие определить пароль БД или пользователя. Часто программисты совсем не заботятся о сокрытии пароля в тексте программы. Запустив программу, работающую с защищённой БД необходимо открыть в шестнадцатеричном редакторе WinHex виртуальную память этого приложения. Проведя поиск Unicode строк "User ID="; "Password="; "Database Password=" или "pwd=" можно найти имя пользователя, его пароль и пароль базы данных.


Можно вовсе проигнорировать наличие защиты. Для этого надо воспользоваться AccessRecovery , которая создаёт новый файл без защиты и переносит в него таблицы, запросы, формы, макросы, отчеты и код модулей.

Нестандартные способы защиты

Изменение расширения файла

Достаточно простой способ ввести в заблуждение - изменение расширения файла БД. Увидев незнакомое расширение, не каждый попытается выяснить природу этого файла. Кроме этого появляется возможность связать это расширение с вашей программой, так чтобы при клике по файлу запускалось ваше приложение, а не Access. Желательно открывать такой файл с монопольным доступом, так как в этом случае не будет создаваться ldb файл.

Защита с использованием пароля БД, содержащего непечатные символы

В первую очередь этот способ нацелен на противодействие определению паролей с помощью специальных программ. Одна база с такой защитой хорошо попортила мне нестроение. Теперь я попорчу настроение её авторам рассказав об этой защите. Способ основан на том, что пароль БД формата Access 2000 и 2002-2003 - текстовая строка в формате Unicode. При этом, нет ни каких ограничений на её содержимое. Стандартный способ установки и использования пароля БД подразумевает его ввод с клавиатуры в диалоговом окне. Если стока пароля содержит непечатные символы, то они не будут корректно отображены программой открывающей пароли БД. С другой стороны этот пароль нельзя ввести в диалоговом окне при открытии БД в MS Access.
Но и про Access 97 я не забыл. Дело в том, что в спецификации баз данных и в справке по DAO 3.60 указано, что максимальное число символов в пароле - 14. Но на самом деле их может быть 20. При этом и сам Access 97 не допускает ввода строк пароля более 14 символов. В спецификации Access 2003 также сказано про 14 символов, но программа допускает ввод всех 20. Также возможно использование непечатных символов, что приводит большинство программ взламывающих пароли в ступор.

Для установки такого пароля потребуется использовать программу, использующую метод CompactDatabase библиотек ADOX или DAO.

Взлом защиты.

  • Во-первых, можно воспользоваться AccessRecovery .
  • Во-вторых, можно попытаться определить пароль БД с помощью специальных программ. В обзоре Пароли Access приводится сводная таблица по их возможностям.
  • В-третьих, можно узнать пароль, проанализировав код программы в отладчике. Каков бы ни был пароль, он всё равно передаётся как текстовая строка в методе открытия БД. При наличии определённого опыта - это не очень сложная задача. Когда мне впервые встретилась подобная защита - пароль удалось найти, используя отладчик OllyDbg, найдя место создания ADODB.Connection
  • Узнать или изменить пароль БД можно, не прибегая к помощи специальных программ. В Access 97 пароль получается сложением по XOR пароля с 20 байтной последовательностью. Значения этих байт можно получить из любого не защищённого паролем mdb файла. Начиная с Access 2k, в связи с использованием Unicode, для хранения 20 символов пароля отведены 40 байт. При шифровании также используется сложение по XOR, но для получения последовательности байт соответствующей пустому паролю необходимо создать файл с датой исследуемой БД. Полученные байты можно вписать в исследуемый файл и обнулить пароль, либо сложить их с аналогичными байтами исследуемого файла и получить значение пароля.

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

Защита с модификацией файла

Способ защиты основан на модификации первых байт файла. Таким образом, перед открытием БД в её файл записывается правильный заголовок, хранимый в программе, а после закрытия возвращается неправильный. При попытке открыть файл БД с помощью ms Access появляется сообщение об ошибке. Не плохо совместить этот способ с изменением расширения файла. Например, можно взять заголовок dbf файла и записать его в начало mdb файла. Далее меняем расширение файла на dbf и наслаждаемся результатом. БД теперь можно открыть в Excel, Access или другой программой, позволяющей читать dbf файлы. Вот пример такого преобразования:

"модификация заголовка файла БД
"Ex: Call BaseProtect("C:\01.mdb", True)

Public Sub BaseProtect(sPath As String, bLock As Boolean)
Dim iFn As Integer
iFn = FreeFile()
Open sPath For Binary Access Write As #iFn
Put #iFn, 5, CStr(IIf(bLock, _
"ProtectDataBase", "Standard Jet DB"))
Close #iFn
End Sub

Метод не достаточно эффективен, так как программу, работающую с БД, можно прервать искусственно и на диске останется не защищённая БД. Поэтому стоит его использовать только в сочетании с другими способами.

Защита изменением версии БД

Этот способ - дальнейшее развитие идеи модификации заголовка файла с целью противодействия программам, читающим пароли. Метод основан на том, что для работы с БД Access 97 и 2k программы используют разные алгоритмы чтения пароля и при этом пытаются самостоятельно определить версию mdb файла.

Для определения версии можно использовать последовательность из 40 байт, начиная с 122 от начала файла. Если в БД Access 97 вписать эту последовательность от Access 2k, то получим интересный результат. Программа ms Access, ADO и DAO нормально работают с этим файлом, а большинство взламывающих пароли программ попадаются на эту уловку. Аналогичный результат может быть получен при пересадке байтовой последовательности из Access 97 в Access 2k

Заголовок файла Access 2k
зелёным выделен фрагмент пароля БД
синим - фрагмент характерный для версии БД
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F

00000000 00 01 00 00 53 74 61 6E 64 61 72 64 20 4A 65 74
00000010 20 44 42 00 01 00 00 00 B5 6E 03 62 60 09 C2 55
00000020 E9 A9 67 72 40 3F 00 9C 7E 9F 90 FF 85 9A 31 C5
00000030 79 BA ED 30 BC DF CC 9D 63 D9 E4 C3 9F 46 FB 8A
00000040 BC 4E 9B 6D EC 37 40 D2 9C FA DB C8 28 E6 0E 20
00000050 8A 60 49 02 7B 36 E8 E4 DF B1 6A 62 13 43 D2 39
00000060 B1 33 29 F7 79 5B 8F 23 7C 2A 4F E9 7C 99 08 1F
00000070 98 FD DC 75 0C FF D8 FD 82 66 5F 95 F8 D0 89 24
00000080 85 67 C6 1F 27 44 D2 EE CF 65 ED FF 07 C7 46 A1
00000090 78 16 0C ED E9 2D 62 D4 54 06 00 00 34 2E 30 00

Защита с использованием электронного ключа

Это ещё одно подтверждение, того, что стандартные способы защиты, даже от сторонних производителей уязвимы. Речь идёт о ключах HASP. С помощью утилиты HASP Envelope можно зашифровать файл (в данном случае БД) и разрешить к нему доступ только из защищённого приложения. Используется механизм "прозрачного" шифрования. Со стартом операционной системы запускается некий процесс, который отслеживает все обращения к защищённому файлу БД. Если это обращение исходит от обычного приложения, например от ms Access - файл читается и выводится сообщение о "нераспознаваемом формате базы данных". Но если с файлом работает указанное при шифровании приложение, то данные передаются ему в дешифрованном виде. В результате, сама программа, не подозревает о наличии защиты. Да, сложность взлома такой базы возрастает в разы. Но при этом надо помнить, что с приложением должен поставляться электронный ключ, ценой N у.е. и что скорость доступа к данным падает в два - три раза.

Взлом защиты.

Было найдено два способа получить БД своё полное распоряжение.

  • Во-первых, уязвим оказался код программы. Обращение к базе шло с использованием запросов. С начала в отладчике был найден запрос, вызываемый в ответ на нажатие кнопки в программе. Далее этот запрос был подменён текстом запроса на создание таблицы в другой БД. После нажатия кнопки запрос выбрал данные таблицы из защищённой БД и сохранил их в другом файле.
  • Во-вторых, была написана программка, которая используя хук внедрила свой код в адресное пространство защищённого HASP"ом процесса и от его имени просто скопирована файл базы данных.

Шифрование значений таблиц

Этот способ не плох. Во всяком случае появляется реальная надежда что то спасти. Однако есть ряд ограничений. Перед отображением данных их необходимо дешифровать. Нет возможности поиска по части строки в зашифрованном поле. Алгоритм шифрования и ключ содержатся в программе, а значит, есть потенциальная уязвимость. В данном случае надёжность зависит от устойчивости к взлому программы, работающей с БД. Можно сочетать приятное с полезным: не шифровать, а сжимать содержимое memo полей. Разбираться с алгоритмом сжатия в коде программы занятие скучное.

Заключение

Перед тем как ставить вопрос о способе защиты БД стоит задуматься о её необходимости. Не стоит полагаться на стандартные методы, но это не повод для отказа от использования Access. Специалист взломает что угодно, но можно сделать, чтобы это было не так просто.

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

Самый простой способ защиты базы данных - с помощью пароля. Можно назначить пароль базе данных Access, который будет требоваться всякий раз при ее открытии.

Установка и снятие пароля защиты базы данных

Чтобы установить пароль для защиты базы данных:

  1. Закройте базу данных. Если база данных совместно используется в сети, убедитесь, что остальные пользователи ее закрыли.
  2. Сделайте резервную копию базы данных и сохраните ее в надежном месте.
  3. В меню Access выберите команду Файл › Открыть (File › Open).
  4. Выделите файл базы данных.
  5. Щелкните по стрелке, расположенной справа от кнопки Открыть (Open). В раскрывающемся списке режимов открытия базы данных выделите элемент Монопольно (Open Exclusive). База данных откроется в режиме монопольного доступа.
  6. Выберите команду Сервис › Защита › Задать пароль базы данных (Tools › Security › Set Database Password).
  7. В появившемся диалоговом окне введите в поле Пароль (Password) пароль для защиты базы данных с учетом регистра символов.
  8. Введите пароль еще раз в поле Подтверждение (Verify).
  9. Нажмите кнопку ОК .

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

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

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

Чтобы удалить пароль защиты базы данных:

  1. Откройте базу данных в режиме монопольного доступа.
  2. В диалоговое окно Необходимо ввести пароль (Password Required) ведите пароль.
  3. Выберите команду Сервис › Защита › Удалить пароль базы данных (Tools › Security › Unset Database Password). Появится диалоговое окно Удаление пароля базы данных (Unset Database Password).
  4. Введите текущий пароль базы данных.
  5. Нажмите кнопку ОК .

Установка связи с таблицами базы данных, защищенной паролем

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

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

Пароль учетной записи пользователя определяется для того, чтобы запретить пользователю подключение под учетной записью другого пользователя. MS Access по умолчанию присваивает учетной записи пользователя Admin и любым новым учетным записям пользователя, создаваемым в рабочей группе, пустые пароли .

Внимание! Если пароль потерян или забыт, то восстановить его будет невозможно. Поэтому следует хранить его в надежном месте. Чтобы получить доступ к БД пользователь, потерявший пароль, должен обратиться к администратору (члену группы Admins той рабочей группы, в которой были созданы учетная запись и пароль), чтобы тот снял пароль.

Для создания пароля пользователю необходимо:

1. Запустить MS Access с использованием той рабочей группы, в которой хранится учетная запись пользователя, и войти в него по той учетной записи, для которой нужно создать или изменить пароль.

2. Открыть БД.

3. На вкладке в группе Администратор выбрать команду

4. На вкладке Изменение пароля оставить поле Текущий пароль пустым , если учетная запись ранее не имела пароля. В противном случае ввести в поле Текущий пароль старый пароль .

5. Ввести новый пароль в поле Новый пароль .

6. Повторно ввести новый пароль в поле Подтверждение и нажать кнопку OK (рис. 11.18).

Снятие пароля учетной записи пользователя

Для выполнения данной процедуры необходимо войти в БД по учетной записи члена группы Admins .

1. Запустить MS Access с использованием файла рабочей группы , в котором хранится учетная запись пользователя.

2. Открыть БД.

3. На вкладке Работа с базами данных ленты инструментов в групппе Администратор выбрать команду Пользователи и разрешения - Пользователи и группы….

4. На вкладке Пользователи ввести имя учетной записи пользователя в поле Имя .

5. Нажать кнопку Снять пароль (рис. 11.19).

6. Повторить шаги 4 и 5 для снятия других паролей, затем нажать кнопку OK .



Разрешения на доступ

Разрешения - набор атрибутов, определяющих права пользователя на данные или объекты в БД.

Существуют два типа разрешений на доступ :

1. Явные - если они непосредственно присвоены учетной записи пользователя. Такие разрешения не влияют на разрешения других пользователей.

2. Неявные - разрешения на доступ, присвоенные учетной записи группы. Пользователь, включенный в такую группу, получает все разрешения, предоставленные группе. Удаление пользователя из этой группы лишает его всех разрешений, присвоенных данной группе.

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

Изменять разрешения других пользователей на отдельные объекты БД могут следующие пользователи:

· члены группы Admins , определенной в файле рабочей группы , который использовался при создании конкретной БД;

· владелец объекта;

· любой пользователь , получивший на этот объект разрешения администратора .

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

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

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

1. Администраторы (члены группы Admins ) всегда могут получить все разрешения на объекты, созданные в рабочей группе.

2. Учетные записи, являющиеся владельцами таблиц, запросов, форм, отчетов или макросов всегда могут получить все разрешения на доступ к этим объектам.

3. Учетная запись, являющаяся владельцем БД, всегда может открыть БД.

Поскольку учетные записи пользователя Admin совершенно одинаковы для всех экземпляров MS Access, то первым шагом при организации системы защиты является определение учетных записей администратора и владельца (или единой учетной записи, являющейся записью и администратора, и владельца). После этого следует удалить учетную запись пользователя Admin из группы Admins . Если этого не сделать, любой пользователь Microsoft Access сможет подключиться к рабочей группе с помощью учетной записи Admin и получить все разрешения на доступ к таблицам, запросам, формам, отчетам и макросам рабочей группы.

В группу Admins разрешается добавлять произвольное число учетных записей, однако владельцем БД может быть только одна учетная запись - та, что была активной при создании БД, либо та, что была активной при передаче права владельца путем создания новой БД и импорта в нее всех объектов из исходной БД. Однако учетные записи групп могут являться владельцами таблиц, запросов, форм, отчетов и макросов БД.

Для входа в MS Access могут быть использованы только учетные записи пользователя; вход с помощью учетной записи группы невозможен.

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

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

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

Широкое использование ms Access породило целый класс программ, позволяющих узнать "забытые" пароли к базам данных. Не знаю кто был первым, но похожи они друг на друга как близнецы.

Тестирование

Все программы, рассматриваемые в данном обзоре, справляются с паролями типа "may". Но далеко не все позволяют узнать нестандартные пароли. Результаты тестирования представлены в таблице. Подробнее о методах защиты можно прочитать в статье Защита и взлом баз данных Access . Здесь можно отметить, что лидером стал . Файл БД Access, защищённый паролем из 20 непечатных символов и заголовком другой версии так и остался неприступен. К сожалению неприступным остался только пароль, но не база данных. позволяет восстановить содержимое таблиц, а почти полностью воссоздаёт файл, включая таблицы, запросы, формы, макросы, отчеты и код модулей. В тестировании принимали участие зарегистрированные версии программ.

Позволяет открывать пароли базы данных Access. Кроме этого есть возможность удалить или заменить пароль для баз Access 97

Единственная из программ выдающая пароль в шестнадцатеричном виде, что позволяет видеть пароли, использующие непечатные символы. Это я раньше так думал, но на деле в шестнадцатеричный вид переводится строка и в результате толку от неё никакого. Базы Access 97 с паролем в 20 символов считает повреждёнными и не выдаёт никакого результата.

AOPR позволяет определять пароли для многих приложений MS. Применительно к БД Access он умеет определять:

  • Пароль базы данных
  • Владельца базы - имя пользователя (user) и его идентификатор (ID)
  • Информацию о владельцах объектов БД
Открыв в AOPR файл рабочих групп можно увидеть:
  • Имена пользователей и их пароли
  • Принадлежность пользователей к группам

Программа определяет пароли для БД формата 97 - 2000 - 2003. Для баз Access 97 возможно изменение и удаление паролей.

Надо отметить, что программа не стоит на мете в своём развитии. Алгоритмы определения паролей совершенствуются. Если в предыдущей версии (AOXPPR) для Access 97 - только первые 14 символов, а если встречает непечатные символы - говорит, что файл повреждён. Access 2k - нормально читает все 20 символов, но на Unicode выдаёт знаки вопроса. В описываемой версии нормально определены все пароли, и непечатные символы нормально копируются в буфер обмена.

Это набор утилит позволяющих узнавать пароли к очень большому числу приложений. С БД Access работает программа Office Key. Она позволяет определять пароли БД, группы, пользователей и их пароли по файлу рабочих групп. Аналогичные функции и у другой утилиты этого производителя - Access Key. Размер архива - 662 КБ. Она является самостоятельным продуктом, не входящим в состав Passware Kit.

Программа не позволяет узнать идентификаторы (ID) пользователей, хозяина БД и её объектов. Таким образом, по возможностям она уступает . Однако прекрасно справилась с тестами. Копирует в буфер обмена настоящий пароль, а не знаки вопроса. Нормально определяет пароли при замене последовательности в 40 байт, характерных для разных версий БД. Единственная ошибка на файле Access 97 c непечатными символами.

Программа позволяет определить пароль базы данных, хозяина БД - его имя и идентификатор. По файлу рабочих групп определяет имена пользователей и их пароли. Работает с БД ms Access 2.0 - 2003