powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Защита базы от взлома, защита связанных таблиц
16 сообщений из 16, страница 1 из 1
Защита базы от взлома, защита связанных таблиц
    #39382320
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья! Хочу поделиться, как защитить базу от взлома:
1. Все таблицы связываются с SQL Server без использования DNS, а таблицы хранятся на сервере SSSSS база DDDDD, где создается универсальный пользователь UUUUU с паролем PPPPPP.
Пользователям дается скомпилированный файл MDE с установленной защитой от SHIFT со снятой опцией использовать специальные клавиши Access и без просмотра области навигации, без набора меню Access и контекстных меню (задается в параметрах текущей базы).

В форме, открывающейся при открытии базы (Форма просмотра) в событии Form_Open вызвать процедуру QM:

Код: plaintext
1.
Public Const ConStr$ = "ODBC;DRIVER={SQL Server};SERVER=SSSSS;DATABASE=DDDDD;UID=UUUUU;PWD=PPPPPP;APP=Microsoft Office 2013"
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub QM()
If CurrentDb.Properties("AllowBypassKey") = False Then
 DoCmd.SetWarnings False
 DoCmd. RunSQL  "UPDATE [" & ConStr & "].ТаблицаНаСервере SET Код=-1 WHERE Код=-1;" 
 DoCmd.SetWarnings True
Else
 If CurrentProject.Name Like "*.mde*" Then
  MsgBox "База не защищена", vbCritical
 End If
End If
End Sub

Таблицы подключаются кодом:
Код: plaintext
1.
2.
Dim tdf As DAO.TableDef
Set tdf = CurrentDb.CreateTableDef(rst!Таблица,  dbAttachExclusive , rst!Исходная, ConStr)
CurrentDb.TableDefs.Append tdf

Обратите внимание, что если используете dbAttachExclusive, то логин и пароль в свойство connect НЕ ПОПАДАЕТ ! (Если нужна связь с паролем, используйте dbAttachSavePWD)
Таким образом, пароль хранится только в скомпилированном коде, не доступным для просмотра даже соотв. редактором.
У конечного файла MDE устанавливается свойство AllowBypassKey= False, т.е. игнорирование SHIFT при открытии. База создается с защитой от редактирования с учетной записью файла MDW, но даже если забыли поставить защиту, и такую базу открыли с SHIFT, то связи не будут активизированы инструкцией RunSQL.
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39382366
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulB
Код: vbnet
1.
Public Const ConStr$ = "ODBC;DRIVER={SQL Server};SERVER=SSSSS;DATABASE=DDDDD;UID=UUUUU;PWD=PPPPPP;APP=Microsoft Office 2013"

Эта константа не попадает случайно в модуль в открытом виде?

PaulB
Код: vbnet
1.
If CurrentProject.Name Like "*.mde*" Then


Ну а если так?
Код: vbnet
1.
CurrentProject.Name = "Database.mde.mdb"


Удали вторую звёздочку.
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39382443
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константа действительно попадает, логин и пароль виден редактором! Буду скрывать в коде.
Согласен, вторую звездочку лучше удалить.
Спасибо за подсказку!
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39382465
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulB , попробуйте файл БД с формате MDB переименовать с присвоением ему расширения MDE. И возрадуйтесь...
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39382484
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пользователи получают только файлы MDE, созданные под учетной записью MDW.
Переделал, тогда строку в коде не видно:

Public ConStr$
Sub QM()
ConStr = "ODBC;DRIVER={SQL Server};SERVER=SSSSS;DATABASE=DDDDD;UID=UUUUU;PWD=PPPPPP;APP=Microsoft Office 2013"
If CurrentDb.Properties("AllowBypassKey") = False Then
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE [" & ConStr & "].ТаблицаНаСервере SET Код=-1 WHERE Код=-1;"
DoCmd.SetWarnings True
Else
If CurrentProject.Name Like "*.mde*" Then
MsgBox "База не защищена", vbCritical
End If
End If
End Sub
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39382665
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulBПеределал, тогда строку в коде не видноИ тем не менее я бы рекомендовал написать некий код, который создаёт эту строку. Ну типа:
Код: vbnet
1.
2.
3.
4.
' операторы 
pw = chr(asc("P")) & "aSs" & chr(&H57)
' ещё операторы
ConStr = Replace("ODBC;DRIVER={SQL Server};SERVER=SSSSS;DATABASE=DDDDD;UID=UUUUU;PWD=@@@@@@;APP=Microsoft Office 2013", string(6, 64), pw & "oRd")
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39384586
Владимир2017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый PaulB
Вы можете указать цель защиты Вашей БД и/или "рабочего места"
(будь то разделенная база по файл-сервер схеме или клиент работает с БД по ODBC, HTPP протоколу, например ??)

В чем цель?
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39385941
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Владимир!
Цель: защита данных от несанкционированного изменения и от кражи.
Таким образом, невозможно открыть базу с SHIFT, т.к. нельзя снять свойство AllowBypassKey, потому что база создана под учетной записью mdw, и что бы изменить ее свойства, нужно иметь mdw файл, знать логин и пароль администратора.
Далее запускается главная форма, которая активирует связанные таблицы инструкцией RunSQL.
Доступ к данным определяется логикой приложения. Пользователь определяется: VBA.Environ("USERDOMAIN") & "/" & VBA.Environ("USERNAME"). При открытии любой формы проверяется права этого пользователя.
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39385947
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обратите внимание, что для этого не нужно создавать DSN соединения инструкцией RegisterDatabase
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39385968
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря не совсем понял, зачем всё это. Встроенной системы защиты SQL Servera недостаточно? Насколько я знаю, там есть две системы авторизации Windows и собственная SQL Server.

У ТС как я понял, клиент-серверная версия базы. Таблицы на сервере, а "морда" на Access. А где расположен сам SQL Server? На машине пользователя или на сервере?

Когда я писал связку Access + SQL Server для организации. я пользовался Windows авторизацию. Т.е. ты входишь в систему, а вход SQL происходит автоматически.

Чем это не устраивает Вас?
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39385970
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, я работал с ADP. Может с подключением таблиц иначе?
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39386020
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно, база хранится на SQL сервере. Но авторизация на сервере не разделяет доступ к записям внутри таблицы. Таким образом, пользователь, если сможет открыть таблицу, то может делать с ней что захочет. Поэтому необходимо логическое разделение доступа.
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39386024
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulBЦель: защита данных от несанкционированного изменения и от кражи.
Таким образом, невозможно открыть базу с SHIFT, т.к. нельзя снять свойство AllowBypassKey, потому что база создана под учетной записью mdw, и что бы изменить ее свойства, нужно иметь mdw файл, знать логин и пароль администратора.Тот, кто спёр базу, сопрёт и файл рабочей группы. Имея файл рабочей группы, оттрассировать сетевой доступ и получить информацию для подключения к серверу не составит труда.

PaulBПользователь определяется: VBA.Environ("USERDOMAIN") & "/" & VBA.Environ("USERNAME").Подменяется одним щелчком пальцев.
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39386032
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Файл рабочей группы MDW используется только для редактирования оригинала mdb. Пользователи не имеют к нему доступа, поэтому украсть не смогут.
На другом компьютере невозможно подключиться к SQL серверу. А рабочие станции защищены.
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39386040
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulBНа другом компьютере невозможно подключиться к SQL серверу.Это ещё почему?
...
Рейтинг: 0 / 0
Защита базы от взлома, защита связанных таблиц
    #39409408
Владимир2017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulB
<<< Уважаемый Владимир!
Цель: защита данных от несанкционированного изменения и от кражи.
Таким образом, невозможно открыть базу с SHIFT, т.к. нельзя снять свойство AllowBypassKey, потому что база создана под учетной записью mdw, и что бы изменить ее свойства, нужно иметь mdw файл, знать логин и пароль администратора.
Далее запускается главная форма, которая активирует связанные таблицы инструкцией RunSQL.
Доступ к данным определяется логикой приложения. Пользователь определяется: VBA.Environ("USERDOMAIN") & "/" & VBA.Environ("USERNAME"). При открытии любой формы проверяется права этого пользователя. >>>

1. При загрузке приложения я определяю изменения как в коде, так и в структуре БД.

2. Если выполненные юзером изменения укладываются в изменения дозволенные и описанные в Программной документации (Руководство Пользователя, Руководство Админстратора, Руководство Программиста), такие изменения принимаются на ст оронре клиента.

3. Если выполненные юзером изменения не укладываются в совокупность Правил изменения Приложения, юзеру (админу, программеру) выводится соответствующее сообщение, однозначно указывающее на ошибки в оговоренных Правилах использования Приложения. Да, это не так просто, однако, вызывает уважение к Программному Продукту.

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

Как я защищаю свои приложения:

1. Передаю Заказчику полностью весь исходный код (удивитесь ??? ). В Договоре на разработку оговариваю стоимость Технического Задания (если Приложение достаточнро серьёзное),

2. Обеспечиваю Заказчику мою (от разработчика) техническую поддержку (онлайн поддержка).

3. Выдаю любые консультации Заказчику, возникшие в течении эксплуатации готового Продукта. Начиная от первичной устаовки (инсталляции) до апдейтов...

А шо Вы хотели?
Заказчик есть Бог... )))
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Защита базы от взлома, защита связанных таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]