周 惠
[摘要]ASP+Acces的網(wǎng)站具有開發(fā)簡單、實用性強的特點,因此,這種模式成為許多中小型網(wǎng)站的首選方案。但ASP+Access解決方案在為我們帶來便捷的同時,也帶來了不容忽視的安全問題。對Access動態(tài)網(wǎng)站數(shù)據(jù)庫文件常見的幾種不安全現(xiàn)狀進行分析,并針對這些情況,歸納整理目前一些通用的解決方案,遂一分析這些解決方案的不足之處和可能存在的安全隱患。最后·為大家提供并講解切實有效的解決方法,可以最大限度的解執(zhí)^mcess~數(shù)據(jù)庫動態(tài)網(wǎng)站的數(shù)據(jù)庫文件的安全問題。
[關(guān)鍵詞]數(shù)據(jù)庫文件ASP安全對策
中圖分類號:TP3文獻標識碼:A文章編號:1671—7597(2009)0820040—01
一、引言
ASP+Access結(jié)構(gòu)的網(wǎng)站最突出的優(yōu)點是切入點低,設(shè)計與維護簡單,因此,這種模式無疑是我們構(gòu)建網(wǎng)站的首選方式,特別是中小型網(wǎng)站,很多都是采用的這種模式。但是這種模式下構(gòu)建的網(wǎng)站安全問題也是十分明顯的。特別是Access數(shù)據(jù)庫文件,很容易被下載。針對這種情況,本文對目前Access數(shù)據(jù)庫文件被下載的常見幾種情況作了分析,并提出了相應(yīng)的解決方法。
二、幾種常見的下載Access數(shù)據(jù)庫文件的方法
1憑借經(jīng)驗或是利用程序猜測Access數(shù)!據(jù)庫文件的路徑和名稱
一般的程序員寫程序的時候都有這么一個習(xí)慣,將數(shù)據(jù)庫文件放在data、database等文件夾下面,下載這樣的數(shù)據(jù)庫只要在IE上直接打入地址就可以下載了。
2Asp數(shù)據(jù)連接文件的源碼泄露
例如:以下是Asp數(shù)據(jù)連接文件的源碼:
DBPath=:Server,MapPath(“.../123/abc/asfadf.mdb”)
如果這部分代碼泄露,即使數(shù)據(jù)庫名字起得再怪異,隱藏的目錄再深,數(shù)據(jù)庫文件也難免被下載。
3憑借其它技術(shù)手段進行有目的性攻擊
可以通過請求返回的特殊錯誤提示直接取得數(shù)據(jù)庫路徑與文件名。
三、目前逼用解決Access數(shù)據(jù)庫文件被下載的方案
(一)修改數(shù)據(jù)庫文件的路徑與文件名
這種方法就是將數(shù)據(jù)庫文件的路徑與文件名修改成別人意想不到的,如:sdert/ccqasd/wwl2341@%1po,mdb等這類路徑與文件名。其目的就是防止別人猜到數(shù)據(jù)庫而被下載。但是,如果編寫一個專門的猜測程序,可以猜測出這類數(shù)據(jù)庫文件路徑與名稱,所以這不是最好的方法。
(二)修改數(shù)據(jù)庫名后綴為Ase或Aep格式式
IIs對*,asp與*.asa以外的內(nèi)容,不做任何處理就直接輸出,而對于*.asp與*as8后綴的文件則自動作解析。所以對于有些網(wǎng)站,即使你知道了網(wǎng)站數(shù)據(jù)庫文件的路徑與文件名,但是直接在IE中打上地址,仍然無法下載,因為程序員已經(jīng)將*.mdbl的文件變成*.asp或是*.asa等文件。我們看到的數(shù)據(jù)庫文件將是一堆亂碼,沒有任何有用信息。但是,有經(jīng)驗的人遇到這種情況,往往會利用一些工具,如IFlashGet等工具來完成下載。
(三)數(shù)據(jù)庫文件名前加“#”等特殊字符防止被下載
IIs在處理“#”等特殊字符時,會自動跳過不執(zhí)行,而只能識別“#”前面的部分,對于后面的自動去掉,從而起到保護數(shù)據(jù)庫文件的作用。但是,我們只要把“#”換成(nicode)uTF-8編碼,就可以下載數(shù)據(jù)庫了。#”在UTF-8編碼是“%23”,所以只要用“%23”來代替“#”號就可以完成下載。
(四)用加密數(shù)據(jù)庫文件的方法解決文件被下載后帶來的危害
此種方案也就是對Lccess數(shù)據(jù)庫文件進行加密,但是,Access~數(shù)據(jù)庫的加密機制是非常脆弱的??梢暂p松地編寫一個程序來破解代碼。
四、有效防止Access數(shù)據(jù)庫文件被別人下載的方法
(一)針對虛擬主機情況
在mdb文件中建一個表,假設(shè)表中的一個字段名叫:NotDownLoad,并在字段中填入:“(%=aLl%>”(這里你可以隨便輸入什么,只要不是正確的IAspi語句就行了),再把數(shù)據(jù)庫改名為{,aspS~,asa,就可以起到真正防下載的作用。在IE中遇到了asp文件,服務(wù)器就會自動去解析這些代碼,而這段代碼又無法被服務(wù)器解析出來,IE就會報錯,這樣數(shù)據(jù)庫絕對不會被正確的下載。
接下來,我們還得在數(shù)據(jù)庫名前加上一個“#”。這里的“#”主要是防sqL中別人用注入法來跨庫查詢]Access數(shù)據(jù)庫文件中的管理員記錄。如果我們在庫名前面加上“#”的時候,就算你猜測到了數(shù)據(jù)庫文件的路徑與文件名,我們也不怕類似的提交:select*from d:web\asp\#1mtof,asp。這類SQL查詢語句,系統(tǒng)會提示出錯。
(二)針對擁有托管主機權(quán)限的情況
將數(shù)據(jù)庫文件放在WEB目錄外,也就是將數(shù)據(jù)庫放到IIS以外的目錄。這種情況下,無論別人有多高技術(shù),也是不可能下載到你的數(shù)據(jù)庫文件的。因為它根本不在WEB目錄里。但這種方法不適合利用虛擬空間的單位和個人。
五、結(jié)束語
要想徹底解決Asp+Access:模式下網(wǎng)站的數(shù)據(jù)庫文件安全,還需要網(wǎng)站管理員平時多注意一些系統(tǒng)的安全,以及程序員寫SP/ASP,NET/JSP代碼本身的安全,否則依然存在安全的隱患,甚至是對網(wǎng)站或是服務(wù)器致命的打擊。