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