石紅春
摘要:本文討論了網(wǎng)站Access數(shù)據(jù)庫的安全性問題,介紹了防止Access數(shù)據(jù)庫被惡意下載的常見方法,對中小型網(wǎng)站數(shù)據(jù)庫的安全管理提供了相應(yīng)解決方法。
關(guān)鍵詞:Access數(shù)據(jù)庫;安全性
1引言
Access數(shù)據(jù)庫具有操作簡單、界面友好等特點,是中小型網(wǎng)站數(shù)據(jù)庫的首選。Access數(shù)據(jù)庫在帶來便捷的同時,也帶來了不容忽視的安全問題。攻擊者一旦找到數(shù)據(jù)庫文件的存儲路徑和文件名,后綴名為“mdb”的Access數(shù)據(jù)庫文件就會被下載,后果不可估量。
2 Access數(shù)據(jù)庫安全性的弱點
Access數(shù)據(jù)庫在安全性方面,其弱點具體表現(xiàn)為:
①安全性不夠,用戶級密碼容易破解;
②并發(fā)數(shù)為255,對高強度操作適應(yīng)性差,若服務(wù)器配置不高,網(wǎng)絡(luò)不暢通,編程的方法不佳,多人同時訪問就能導(dǎo)致MDB損壞;
③每個數(shù)據(jù)庫文件最大限制只有2G,不適合做大型網(wǎng)站的數(shù)據(jù)庫。
3解決網(wǎng)站Access數(shù)據(jù)庫安全性的常見方法
根據(jù)本人在動態(tài)網(wǎng)站開發(fā)過程中的實際經(jīng)驗,為保障后臺數(shù)據(jù)庫的安全,將防止Access數(shù)據(jù)庫被下載的方法歸納如下:
方法一:取復(fù)雜的數(shù)據(jù)庫文件名
此方法最省事。若攻擊者通過第三方途徑獲取到數(shù)據(jù)庫的路徑,此方法便失效。另外,數(shù)據(jù)文件通常都較大,起再復(fù)雜的文件名也容易分析出來,故保密性為最低。
方法二:數(shù)據(jù)庫名后綴改為asa、asp等
這是最常用的方法。將數(shù)據(jù)庫擴(kuò)展名更改為asa或asp后,還需配合一些其他的設(shè)置才能更安全。如在數(shù)據(jù)庫中新建表,表名任取,在表中添加一個OLE對象的字段,然后添加一個記錄,插入事先建好的文本文件(內(nèi)容為“<%”或者“%>”)。
其原理是:在改名后的庫文件中加入“<%”或“%>”,llS就會按ASP語法來解析,就會報告500錯誤,即可防止下載Access數(shù)據(jù)庫。
方法三:數(shù)據(jù)庫名前加“#”
在數(shù)據(jù)庫文件名前加上#,然后修改數(shù)據(jù)庫連接文件(如:oonnasp)中的數(shù)據(jù)庫地址。其原理是下載的時候只能識別#號前名的部分。對于后面的自動去掉。另外,在數(shù)據(jù)庫文件名中保留一些空格也起到類似作用,由于HTTP協(xié)議對地址解析的特殊性,空格會被編碼為“%”。即使暴露了數(shù)據(jù)庫地址,一般情況下也無法下載到原始數(shù)據(jù)庫文件。
方法四:加密數(shù)據(jù)庫
首先選取“工具”一“安全”一“加密/解密數(shù)據(jù)庫”,選取數(shù)據(jù)庫(如:datamdb),單擊“確定”,出現(xiàn)“數(shù)據(jù)庫加密后另存為”的窗口,存為:datal mdb。以上的動作對數(shù)據(jù)庫文件加以編碼,目的是為了防止他人查看數(shù)據(jù)庫文件的內(nèi)容。
接下來為數(shù)據(jù)庫加密,先打開經(jīng)過編碼了的datal mdb,選擇“獨占”方式。然后選取菜單中的“工具一安全一設(shè)置數(shù)據(jù)庫密碼”,輸入密碼即可。即使他人得到了datal mdb文件,沒有密碼就無法看到datal mdb的內(nèi)容。
加密后要修改數(shù)據(jù)庫連接頁,如:corm open“d river=fmicrosoftaccess driver(。mdb)}:uid=admin:pwd=數(shù)據(jù)庫密碼;dbq=數(shù)據(jù)庫路徑”。
在數(shù)據(jù)庫連接頁中的密碼沒有被泄露的情況下,數(shù)據(jù)庫即使被人下載了,也無法打開。
方法五:數(shù)據(jù)庫放在Web目錄外或?qū)?shù)據(jù)庫連接文件放到其他虛擬目錄下
若Web目錄是e:\webroot,可以把數(shù)據(jù)庫放到e\data文件夾內(nèi),在e:\webroot里的數(shù)據(jù)庫連接頁中修改數(shù)據(jù)庫連接地址為:“/data/數(shù)據(jù)庫名”的形式,這樣數(shù)據(jù)庫可以正常調(diào)用,但無法下載。因為它不在Web目錄里!
方法六:使用ODBC數(shù)據(jù)源
在ASP等程序設(shè)計中,如果有條件,應(yīng)盡量使用ODBC數(shù)據(jù)源,不要把數(shù)據(jù)庫名寫在程序中,否則,數(shù)據(jù)庫名將隨ASP源代碼的失密而一同被暴露。
如果使用ODBC數(shù)據(jù)源,就不會存在這樣的問題了。但這樣處理的結(jié)果是:效率很低。速度變慢;遷移也不方便,必須重新設(shè)置數(shù)據(jù)源。
方法七:添加數(shù)據(jù)庫名的(如MDB的)擴(kuò)展映射
通過修改llS設(shè)置來實現(xiàn),適合有l(wèi)lS控制權(quán)的管理員。只要修改一處,整個站點的數(shù)據(jù)庫都可以防止被下載。
在lIS屬性—主目錄—配置—映射—應(yīng)用程序擴(kuò)展那里添加mdb文件的應(yīng)用解析。選擇的DLL(或EXE等),最好不要選擇aspdll。這樣別人下載數(shù)據(jù)庫時就出現(xiàn)404或500等錯誤。
4小結(jié)
沒有最“安全”,只有更“安全”。因此,增強Access數(shù)據(jù)庫文件的安全性也只是相對的。如果要使網(wǎng)站數(shù)據(jù)庫更加安全,我們就應(yīng)該考慮選擇Sql server等安全性更高的數(shù)據(jù)庫了。