陳 榆,梁志勝
(廣西醫科大學,廣西 南寧 530021)
Microsoft Access是微軟公司于1994年推出的以標準JET為引擎的桌面型數據庫系統。它具有界面友好,易學易用,開發簡單,接口靈活等特點,是典型的新一代數據管理和信息系統開發工具,其以功能全面、程序設計方便等特點得到廣泛應用。與微軟公司所開發的其他數據庫產品如Visual FoxPro、SQL Server等相比不夠強大,它仍具有一定的獨特的優勢,其提供了更強大的數據組織、用戶管理、安全檢查等功能。在一個工作組級別的網絡環境中,使用Access開發的多用戶數據庫管理系統具有傳統的 XBASE數據庫系統所無法比擬的客戶服務器(Client/Server)結構和相應的數據庫安全機制,因此,在很多WEB、桌面存儲等領域得到了廣泛的應用,但由于Access只是屬于文件型的小型數據庫系統,存儲方式過于單一,在存儲大量數據時性能出現瓶頸,特別是它的安全性能方面,使得其在許多方面的應用受到了限制。本文就Microsoft Access數據庫的WEB應用中的數據安全性進行研究,僅供同行參考。
在Access的WEB(包括asp、asp.net、php、jsp等環境)系統應用中,當攻擊者通過各種渠道獲取或者猜到Access數據庫的存儲路徑和數據庫名時,如未對Access數據庫文件進行特殊處理,惡意攻擊者將可以通過 WEB方式訪問并將數據庫下載到本地。而由于Access本身的諸多缺陷,如Access數據庫的解密隱患、由缺省用戶Admin用戶所引發的安全漏洞、工作組信息文件帶來的安全隱患等,將會導致數據庫中的敏感數據(如單位的財務數據、管理員的帳戶密碼或其他隱私數據)不安全。
數據加密又稱密碼學,它是指通過特定的加密算法和指定的加密密鑰將明文數據轉變為不能被正常解讀的密文,而解密則是通過與加密算法所配套的解密算法和加密時所指定的密鑰將不可解讀的密文恢復為可正常閱讀的明文。數據加密在當前仍是計算機系統對信息進行自然保護的一種最可靠的方法。通過數據加密技術對敏感信息進行加密,實現信息的隱蔽,從而增加重要信息的安全性。
本文將以 Asp.net作為平臺,介紹 MD5加密算法及 DES算法在WEB系統中保護數據的具體應用。
3.1.1 MD5算法介紹
MD5的全稱是Message Digest Algorithm MD5(中文名為消息摘要算法第五版),為計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。該算法的文件號為 RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992),該算法以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理后,算法的輸出由四個 32位分組組成,將這四個32位分組級聯后將生成一個128位散列值。
3.1.2 MD5算法在Access項目中的應用范圍
由于MD5算法的不可逆性,目前尚無可靠的破解方式,經過 MD5算法加密的字符串將無法通過一定的解密算法將其還原為原文,所以一般在具體應用中,均使用MD5對密碼字符串等不需要明文顯示的字符或數據進行加密。
3.1.3 加密算法MD5的C#代碼實現
微軟在.Net中集成了MD5算法,我們可以通過初始化系統命名空間 System.Security.Cryptography中的 MD5CryptoServiceProvider類的實例,并調用ComputeHash方法將字符串進行加密,封裝的代碼如下(注:需引處System及System.Security.Cryptography命名空間):


3.1.4 MD5算法的應用實例
用戶在設置密碼時,程序通過調用MD5算法,將用戶密碼加密,并將已經加密的數據保存進數據庫的密碼字段,C#示例代碼:

待需要驗證密碼時,通過將用戶輸入的明文密碼進行MD5加密,再和數據庫中相應記錄的密碼字段中的字符串進行比較,如兩值相等,則可判斷密碼正確,示例代碼如下:

當然,也可以通過直接將用戶輸入的密碼MD5加密以后,直接與數據庫數據進行比對。
3.2.1 DES算法簡介
數據加密算法(Data Encryption Algorithm,DEA)的數據加密標準(Data Encryption Standard,DES)是規范的描述,它出自IBM的研究工作,在1977年被美國政府正式采納。它是一種對稱加密算法,是目前使用最廣泛的密鑰系統之一。
DES使用一個56位的密鑰以及附加的8位奇偶校驗位產生最大 64位的分組大小。這是一個迭代的分組密碼,使用稱為Feistel的技術,其中將加密的文本塊分成兩半。使用子密鑰對其中一半應用循環功能,然后將輸出與另一半進行異或運算;接著交換這兩半文本塊,這一過程會持續下去,但在最后一個循環時不對文本塊進行交換。DES使用了16個循環,使用異或、置換、代換、移位操作四種基本運算。
3.2.2 DES算法的在Access項目中的應用
由于DES算法可以通過密鑰進行解密,所以該算法在項目應用過程中,常被使用作為隱私數據的保護。使用該算法以后,被加密的數據將變成不可解讀的字符串,在數據庫其他安全措施無效的情況下,也可以保護數據庫中的數據免于被惡意攻擊者解析。
3.2.3 DES加密算法的C#實現

3.2.4 DES解密算法的C#實現


3.2.5 DES算法的應用實例
DES可用于加密隱私數據,如客戶的地址、電話等信息。在數據入庫時,通過調用DesEncrypt 方法將數據進行加密:
string str = DesEncrypt("被加密的字符串", "指定的密鑰");
然后將加密后的數據保存進數據庫,在解密時,通過調用DesDecrypt 方法進行解密碼,然后在程序中輸出:
string str = DesDecrypt("被解密的字符串", "加密時使用的的密鑰");
Response.Write(str);
需要注意的是,當解密的密鑰不對時,系統將拋出異常,所以,請先進行異常處理。
Access數據庫雖然存在較多安全性問題,但是如果杜絕數據被下載,那些安全問題將不會使數據庫的數據安全受到威脅,在 WEB應用中,可以通過以下方法,減少惡意攻擊者接觸數據庫的機會:
防止數據庫被找到的方法之一就是為Access數據庫起一個復雜的非常規性的名字,如在文件中加入特別字符,比如#、@等特殊符號,并將其放置于較復雜的目錄結構下。
通過更改數據庫的擴展名,讓攻擊者無法通過 WEB方式下載數據庫。將數據庫名擴展名更改為WEB SERVER不能解析或是對數據庫指定特殊的解析程序,讓攻擊者無法通過WEB方式將數據庫下載至本地,這樣,就算數據庫路徑被獲取,攻擊方也無法獲得數據庫并獲得其中的數據。
通過使用ODBC數據源,將數據庫的真正路徑進行隱藏以后,哪怕攻擊方通過其他手段獲取到程序代碼,也無法獲知數據庫真正位置,因此,可杜絕數據庫攻擊方接觸數據庫。
由于 WEB應用程序多屬于解釋性,有的甚至是直接開放源代碼,而源代碼的安全性對于數據安全至關重要。對重要數據進行加密,對管理員帳號及用戶登錄相關的密碼進行 MD5不可逆加密,對普通的用戶數據使用DES算法進行加密,通過這樣的處理,在前文所述解決方案失效,數據庫被攻擊者下載時,將可減低數據被惡意獲取的機率。
綜上所述,Access數據庫作為網站后臺數據庫,可以很方便的調試,對于數據量比較少的數據情況下,不失為微機平臺上一個優秀的數據庫管理系統。在工作組級或部門級的數據庫應用領域,采用Access開發的數據庫系統將會真正實現以往只有用大型數據庫管理系統如 Oracle等才能開發出的客戶/服務器模式的數據庫應用程序。且Access數據庫的敏感數據經隨機加密后,可大大增強其安全性。目前,我國對Access的應用起步較晚,相關的技術資料也比較缺乏,這在一定程度上制約了Access這樣一個優秀的數據庫產品的應用。為此,應需進一步加快國內用戶對Access數據庫的認識、了解和使用,以期在國內微機平臺上出現更多的用Access開發的數據庫產品。
1 李 楠、張世星.Access數據庫的安全性分析[J].信息技術,2007.31(2)
2 侯思倩.Access數據庫系統安全性分析及其防范對策[J].中小企業管理與科技,2009(28)
3 李德郎.Access數據庫的安全與應用[J].電腦學習,2008(2)
4 陸北江.基于web的Access數據庫管理系統配置和程序優化[J].甘肅科技,2008(14)