張 征,陳永峰
(1.保定市國土資源局 新市區分局,河北 保定 071000;2.河北軟件職業技術學院,河北 保定 071000)
隨著計算機和網絡技術的飛速發展,數據庫在信息社會中扮演著十分重要的角色,它應用廣泛,深入到各個領域。相對Sql Server、Oracle數據庫來說,Access數據庫在編程、使用、嵌入開發方面比較簡單,因而一些信息量較少的中小型系統把Access作為首選。但Access數據庫的安全性設計相對大型數據庫來說是不完善的,因此在實際應用過程中需要高度重視數據庫的安全漏洞,提高數據庫的安全性。
數據庫安全包含兩層含義。第一層含義是指系統運行安全,系統運行安全通常受到的威脅主要是:一些網絡不法分子通過網絡、局域網等途徑入侵電腦使系統無法正常啟動,或超負荷運行大量算法,關閉CPU風扇,使CPU過熱導致損壞等破壞性活動。第二層含義是指系統信息安全,系統安全通常受到的威脅是:不法分子入侵重要的數據庫,盜取或破壞系統內的重要信息。
數據庫系統的安全框架可以劃分為三個層次:
(1)網絡系統層次:這是數據庫的第一個安全屏障。目前面臨的威脅主要有欺騙、重發、報文修改、拒絕服務、陷阱門、特洛伊木馬等。
(2)宿主操作系統層次:操作系統是數據庫系統的運行平臺,為數據庫系統提供一定程度的安全保護。主要安全技術有操作系統安全策略、安全管理策略、數據安全等方面。操作系統安全策略用于配置本地計算機的安全設置,包括密碼策略、賬戶鎖定策略、審核策略、IP安全策略、用戶權利指派、加密數據的恢復代理以及其他安全選項。安全管理策略是指網絡管理員對系統實施安全管理所采取的方法及策略。針對不同的操作系統、網絡環境需要采取的安全管理策略一般也不盡相同,其核心是保證服務器的安全和分配好各類用戶的權限。數據安全主要體現在以下幾個方面:數據加密技術、數據備份、數據存儲的安全性、數據傳輸的安全性等,可以采用的技術很多,主要有Kerberos認證、IPSec、SSL、TLS、VPN 等技術。
(3)數據庫管理系統層次:數據庫系統的安全性在很大程度上依賴于數據庫管理系統。如果管理系統安全機制非常強大,則數據庫系統的安全性能就較好。數據庫管理系統層次安全技術在于當操作系統已經被突破時仍能保障數據的安全,這就要求數據庫管理系統必須有一套強有力的安全機制。
Access數據庫系統在實際應用中存在來自各方面的安全風險,由安全風險最終引起安全問題,下面從存儲隱患、加密機制簡單、默認權限引發的安全漏洞、平臺漏洞四個方面分析Access數據庫系統的安全風險。
在Access數據庫應用系統中,攻擊者一旦獲得或者猜到數據庫文件的存儲路徑和數據庫名,后綴名為“.mdb”的Access數據庫文件就會被下載,網站中的許多重要信息會一覽無余。例如:對于網上商店的Access數據庫,人們一般命名為store.mdb、shop.mdb 等 , 而 存 儲 的 路 徑 一 般 為“URL/database”。這樣,只要在瀏覽器地址欄中敲入地址:“ URL/database/store.mdb 或者 URL/database/shop.mdb”,就可以輕易地把數據庫文件下載到本地的機器中。
MS Access數據庫是以MDB為文件擴展名的單個文件形式存儲的,加密后的文件可以在不同計算機上以相同的密碼打開,說明該數據庫的密碼一定存在于文件之中。通過使用UltraEdit軟件對加密前后的同一個數據庫文件進行對比,就可以確定加密后的密碼在文件中的大概位置。Access數據庫系統通過將用戶輸入的密碼與某一固定密鑰進行異或來形成一個加密串,并將其存儲在*.mdb文件中從地址“&H42”開始的區域內。由于異或操作的特點是“經過兩次異或就恢復原值”,因此,用這一密鑰與*.mdb文件中的加密串進行第二次異或操作,就可以輕松地得到Access數據庫的密碼。基于這種原理,可以很容易地編制出解密程序。由此可見,無論是否設置了數據庫密碼,只要數據庫被下載,其信息就沒有任何安全性可言了。
Admin用戶是Access系統的缺省用戶,如果Access系統在安裝后未重新鏈接到某個新的工作組安全系統上,用戶將以默認的Admin用戶登錄Access。微軟系統將該Admin帳戶的用戶ID號設成了一個固定值,這就意味著全世界的Access系統的Admin用戶在Access中都是同一個用戶。如果一個用戶在網絡文件系統級別上獲得對你的數據庫系統文件的Admin權,他將以Admin用戶的身份擁有對該數據庫系統的所有權利。微軟系統默認Users組對Access數據庫有大小不一的權限,部分系統給予Users組對數據庫的全部許可權。
數據庫系統的安全性要靠操作系統和硬件設備所提供的環境來保障,如果Access數據庫系統所在的操作系統有漏洞,則在數據庫系統中采取最可靠的安全措施也作用不大。操作系統中的漏洞和安裝在數據庫服務器上的其他服務中的漏洞可能導致未經授權的訪問、數據破壞或拒絕服務。
措施一:修改數據庫文件名。下載Access數據庫文件,首先必須知道該數據庫文件的存儲路徑和文件名。如果將原本簡單的數據庫文件名修改得非常復雜,那些“攻擊者”就要花費更多的時間去猜測數據庫文件名,無形中增強了Access數據庫的安全性。措施二:將Access數據庫文件的后綴名由“ .mdb”改為“.asp 或 asa”等,再修改數據庫連接文件(如conn.asp)中的數據庫地址內容,這樣一來,即使“攻擊者”知道數據庫文件的文件名和存儲位置,也無法進行下載。措施三:將數據庫保存為MDE文件。這種方法既能保護VBA代碼,又能保護窗體和報表。在生成MDE文件時,Access在編譯了所有模塊后,隨即刪除了所有可編輯的源代碼,并對數據庫進行了壓縮,其結果既保證了VB代碼能夠運行,也使MDE數據庫可與MDB數據庫一樣運行,而且數據庫的大小因刪除源代碼和壓縮數據庫而得以減小。
通過編程改進Access數據庫的加密算法。算法一:隨機加密算法。該算法是一種利用隨機函數的隨機數序列與數據進行異或等運算,實現對數據加密的方法。在隨機加密算法中,加密所用的數據是隨機數且不重復使用,實現了“一次一密”的加密。對于Access數據庫的敏感數據,經隨機加密后,可大大增強其安全性。算法二:RSA算法。RSA算法是公開密鑰密碼體制中最優秀的加密算法,其理論基礎是數論中的一個重要論斷,即求兩個大素數之積是容易的,而將一個具有大素數因子的合數進行分解卻是非常困難的。
對于解決由“Admin”用戶所引發的安全漏洞,方法如下:屏蔽“管理員”用戶對數據庫的所有權限。在管理員用戶組中增加與“Admin”用戶等同的新用戶(如bendi), 以bendi用戶登錄Access,將“Admin”用戶從管理員用戶組撤出,屏蔽“Admin”用戶對數據庫的所有權限。操作完畢后,“Admin”就變成了一個普通用戶,數據庫系統管理員則改變為新用戶(bendi),這樣數據庫安全系統就對所有的用戶起安全防護作用了。
解決Users組所引發的安全漏洞,方法如下:屏蔽Users組對數據庫的所有權限。所有Access用戶都屬于Users組,而Users組缺省是對數據庫對象具有全部權限的,所以在分配數據庫的權限之前,必須首先將數據庫的所有權限屏蔽掉。
提高操作系統的安全性,使用盡量可靠的操作系統,及時更新補丁,補救漏洞。安裝正版的質量好的殺毒軟件,及時更新病毒庫,有效地保護好主機。
加強客戶端防護,當惡意軟件或病毒攻擊主機時,防護系統必須集中于保護主機系統及其數據,并停止感染的傳播。這些防護和網絡防護一樣重要。
Access數據庫已廣泛應用于各行各業,給我們帶來了極大的方便,雖然存在一些不足,但只要我們在實際應用中高度重視Access數據庫的安全問題,風險是可以避免的。本文分析總結了Access數據庫系統在實際應用過程中出現的安全漏洞,并提出了一定的防范對策,對于Access數據庫安全使用有一定的針對性和指導意義,在具體實施時,應根據具體情況、環境和需求,因地制宜進行分析,采取相應措施保護數據庫系統的安全。
[1]劉暉.數據庫安全[M].武漢:武漢大學出版社,2010.
[2]黃明祥.信息與網絡安全概論[M].北京:清華大學出版社,2010.
[3]董衛軍.數據庫原理與實踐[M].北京:電子工業出版社,2011.
[4]唐曉波.信息安全概論[M].北京:科學出版社,2010.
[5]廖啟亮.Access數據庫加密系統安全性剖析及改進策略[J].中國安全科學學報,2005(5).
[6]巴爾特,謝暉,許偉.Access2007開發指南[M].北京:人民郵電出版社,2008.
[7]榮欽科技.Access2007數據庫原理與技術[M].北京:清華大學出版社,2009.