傅文明
遼寧廣播電視大學(沈陽110034 )
Access數據庫是一個桌面關系型數據庫,對于一些信息量較少的系統,選用Access數據庫使得編程、使用、二嵌開發(fā)都比較容易。對于桌面型的數據庫應用來說,Access數據庫的安全機制已經可以滿足要求,但從根本上來說,Access數據庫的安全性設計是不完善的,需要詳細分析數據庫的安全漏洞,提出防范對策。
由于Access數據庫的加密機制非常簡單,所以即使數據庫設置了密碼,解密也很容易。該數據庫系統通過將用戶輸入的密碼與某一固定密鑰進行異或來形成一個加密串,并將其存儲在*.mdb文件中從地址“&H42”開始的區(qū)域內。由于異或操作的特點是經過兩次異或就恢復原值,因此,用這一密鑰與*.mdb文件中的加密串進行第二次異或操作,便可輕松得到Access數據庫的密碼?;谶@種原理,可以很容易地編制出解密程序。
Admin用戶是Access系統的缺省用戶,除非系統在安裝后已經重新鏈接到了某個新的工作組安全系統上,否則將以默認的Admin用戶登錄Access。而微軟將標記Admin帳戶的用戶ID號設成了一個固定值,這就意味著全世界的Access系統的Admin用戶在Access中都是同一個用戶。
Access有一個默認名為system.mdw的工作組信息文件,該文件存放了Access數據庫的全部安全信息,包括用戶賬號和組賬號。需注意的是,該System.mdw工作組信息文件是不安全的。因為在安裝Access的同時,安裝程序自動將默認的工作組定義在其創(chuàng)建的工作組信息文件中。在用戶還沒有使用“工具組管理器”指定其他的工作組信息文件之前,再次啟動Access時,都使用默認的工作組信息文件。默認狀態(tài)下原System.mdw工作組信息文件之所以不安全是因為它的工作組ID是空白的,任何人都可以獲得該工作組信息文件定義的管理員賬號,具有訪問數據庫的各種權限,安全隱患極大。
這里介紹一種在VB中設置Access密碼的解決方案,用關鍵字ALTER DATABASE設置、修改數據庫密碼。使用該方法前,先設置對Microsoft ADO Ext 2.5 for DDL and Security庫的引用,具體語法如下。
ALTER DATABASE PASSW0RD NewPassw ord OldPassword
第一次設置數據庫密碼時,使用 NULL關鍵字作為 AL-TER DATABASE語句中的OldPassword參數,其代碼如下。
Dim ObjConn As ADODB.Connection
Dim strSetPassword As String′創(chuàng)建SQL串以初始化一個數據庫密碼
trSetPassword =″ALTER DATABASE PASS WORD NewPassword NULL;″
Set objConn=New ADODB.Connection′設置數據庫的打開方式為獨占
ObjConn.Mode=adModeShareExclusive′打開數據庫,path為數據庫的路徑
ObjConn.Open="Provider=Microsoft.Jet.OL EDB.4.0;DataSource=Path;″′執(zhí)行 SQL 語句設置數據庫密碼
ObjConn.Execute(strSetPassword)
修改數據庫密碼時,首先要用舊密碼登錄數據庫,然后再更改密碼。其代碼如下:
ObjConn.Mode=adModeShareExclusive
ObjConn.Provider=″Microsoft.Jet.OLEDB.4.0″
ObjConn.Properties(″Jet OLEDB:Database P assword″)=″OldPassword″
ObjConn.Open″DalaSource=Path″′修改密碼
strAltertPasswod =″ALTER DATABASE PA SSW0RD NewPassword OldPassword;″
objConn.Execute(strAlterPassword)
刪除數據庫密碼操作類似于修改密碼過程,只需使用NULL關鍵字作為ALTER DATABASE語句的NewPassword參數即可。
解決的基本思路是屏蔽 Admin用戶對數據庫的所有權限。首先,在Admin用戶組中增加一個新的與 Admin用戶等同的新用戶(如www),然后以新用戶登錄 Access,從 Admin用戶組將Admin用戶撤出,并屏蔽掉Admin用戶對數據庫的所有權限,這樣,Admin用戶就成為了一個普通用戶,實際的數據庫系統管理員則變?yōu)樾掠脩?www,而你的數據庫安全系統就對所有的用戶起到了防護作用。
可使用工作組管理員程序對工作組信息文件進行管理。數據庫管理員有權增加、刪除組和用戶,最好把開發(fā)同一項目的成員設在一個組。Access將用戶歸類到各種組中,所以數據庫安全管理可極大簡化,也就是為組而不是為單個用戶指定權限,然后通過將用戶添加到組中或從組中刪除的方式來更改單個用戶的權限。對于處于同組的用戶授予新權限,只要執(zhí)行一個操作,即可對該組賬號授予新的權限。為了數據庫的安全,要及時刪除不再使用數據庫的用戶和組。
本文分析了與實際使用密切相關的 Access數據庫系統安全漏洞,并提出了一定的防范對策,對于實踐使用有一定的針對性和指導意義,在具體實施時,應根據具體情況、環(huán)境和需求,因地制宜進行分析,采取相應有效措施保護數據庫系統乃至整個系統的安全。
[1]廖啟亮,曾健思等. Access數據庫加密系統安全性剖析及改進策略.中國安全科學學報,2008(5).
[2]郭麗. Access數據庫的安全與防范.北京:清華大學出版社,2006.
[3]薩師煊.數據庫系統概論.北京:高等教育出版社,2003.
[4]曾濤,黃凈.Access數據庫的安全機制、隱患及改進策略.大眾科技,2006(7)