自配秘方:
讓大家回復只是希望多些人了解MDE+SQL的安全性﹐希望支持
1. 用正常ODBC連接SQL資料表, 且再用以下代碼重新連接
Function ODBCrelink()
Dim db As Database Dim tbl As TableDef Dim a As String Dim B As String Dim D As String
a = "sa" '用户 B = "102030" '口令
Set db = CurrentDb For Each tbl In db.TableDefs If Left(tbl.Connect, 4) = "ODBC" Then tbl.Connect = "ODBC;DRIVER=SQL server;SERVER=172.118.132.210;DATABASE=ABCDatabase" tbl.Attributes = dbAttachSavePWD tbl.RefreshLink End If Next
End Function
2. 當然發布的MDE都有一個啟動窗體﹐并且數據庫窗體要設置為不顯示了
3. 啟動窗體下代碼如下﹕其中left(date,4)是隨便寫的一個函數目的是使得密碼部分是通過一定算法得到的﹐一定不能直接寫密碼。
private sub form_load()
Dim tbl As DAO.TableDef
If CurrentDB.Properties("StartupShowDBWindow") = False Then Set tbl = CurrentDb.CreateTableDef("") tbl.Connect = "ODBC;DRIVER=SQL Server;SERVER=172.118.132.210;UID=SunPo;PWD=" & left(date,4) & ";DATABASE=ABCDatabase" tbl.Attributes = dbAttachSavePWD tbl.Name = "AAA" tbl.SourceTableName = "AAA" CurrentDataBase.TableDefs.Append tbl CurrentDataBase.TableDefs.Delete "AAA" end if
end sub
4. 發布出去的MDE最好只有用戶只應有的權限﹐一定不要有壓縮修復數據庫等數據庫管理方面的功能﹐否則前功盡棄
5. 藥效
a. 只要數據庫窗體出現﹐連接表就不會連接到SQL
b. 不論何時從其他MDB中導入此MDE的表時, 都不會成功。
6. 耐藥性
如果病毒深入了解以上原理﹐當然還有一些相對應的破解此MDE方法。但你想到的時候﹐我的藥方也會升級的﹐主要是多一些判斷, 畢竟能實現連接是我代碼做到的, 只要不能被導出﹐其他都好辦。你不信試一試!!!