Друзья! Хочу поделиться, как защитить базу от взлома:
1. Все таблицы связываются с SQL Server без использования DNS, а таблицы хранятся на сервере SSSSS база DDDDD, где создается универсальный пользователь UUUUU с паролем PPPPPP.
Пользователям дается скомпилированный файл MDE с установленной защитой от SHIFT со снятой опцией использовать специальные клавиши Access и без просмотра области навигации, без набора меню Access и контекстных меню (задается в параметрах текущей базы).
В форме, открывающейся при открытии базы (Форма просмотра) в событии Form_Open вызвать процедуру QM:
Public Const ConStr$ = "ODBC;DRIVER={SQL Server};SERVER=SSSSS;DATABASE=DDDDD;UID=UUUUU;PWD=PPPPPP;APP=Microsoft Office 2013"
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
Таблицы подключаются кодом:
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.
http://www.sql.ru/forum/1245580/zashhita-bazy-ot-vzloma-zashhita-svyazannyh-tablic