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