數據庫,網站運營的基礎,網站生存的要素,不管是個人用戶還是企業用戶都非常依賴網站數據庫的支持,然而很多別有用心的攻擊者也同樣非常“看重”網站數據庫。
對於個人網站來說,受到建站條件的制約,Access數據庫成了廣大個人網站站長的首選。然而,Access數據庫本身存在很多安全隱患,攻擊者一旦找到數據庫文件的存儲路徑和文件名,後綴名為“.mdb”的Access數據庫文件就會被下載,網站中的許多重要信息會被一覽無余,非常可怕。當然,大家采用了各種措施來加強Access數據庫文件的安全,但真的有效嗎?
存在漏洞的保護措施
流傳最為廣泛的一種Access數據庫文件保護措施,是將Access數據庫文件的後綴名由“.mdb”改為“.asp”,接著再修改數據庫連接文件(如conn.ASP)中的數據庫地址內容,這樣一來即使別人知道數據庫文件的文件名和存儲位置,也無法進行下載。
這是網上最流行的一種增強Access數據庫安全的方法,而且還有強大的“理論基礎”。
因為“.mdb”文件不會被IIS服務器處理,而是直接將內容輸出到Web浏覽器,而“.asp”文件則要經過IIS服務器處理,Web浏覽器顯示的是處理結果,並不是ASP文件的內容。
但大家忽略了一個很重要的問題,這就是IIS服務器到底處理了ASP文檔中的哪些內容。這裡筆者提醒大家,只有ASP文件中“”標志符間的內容才會被IIS服務器處理,而其他內容則直接輸出到用戶的Web浏覽器。你的數據庫文件中包含這些特殊標志符嗎?即使有,Access也可能會對文檔中的“”標志符進行特殊處理,使之無效。因此後綴為“.ASP”的數據庫文件同樣是不安全的,還是會被惡意下載。
面對蠱惑人心的理論,以及眾人的附和,筆者也開始相信此方法的有效性。但事實勝於雄辯,一次無意間的試驗,讓筆者徹底揭穿了這個謠言。
筆者首先將一個名為“cpcw.mdb”的數據庫文件改名為“cpcw.asp”,然後上傳到網站服務器中。運行FlashGet,進入“添加新的下載任務”對話框,在“網址”欄中輸入“cpcw.ASP”文件的存儲路徑,然後在“重命名”欄中輸入“cpcw.mdb”。進行下載後,筆者發現可以很順利地打開“cpcw.mdb”,而且它所存儲的信息也被一覽無余。這就充分說明了單純地將數據庫文件名的後綴“.mdb”改為“.ASP”,還是存在安全隱患。
沒有最“安全”,只有更“安全”
任何事情都不是絕對的,因此增強Access數據庫文件的安全也只是相對的。畢竟Access只能用於小型數據庫的解決方案,它存在很多先天不足,特別是在安全方面。
我們所采用的各種方法,也只是相對來說增強了Access數據庫文件的安全,並不能實現絕對的安全,畢竟先天不足的問題是無法解決的。下面筆者為大家介紹一些方法,雖然不能完全防止別人下載Access數據庫文件,但只要你善用它們,Access數據庫文件就會更安全。
方法一:數據庫文件名應復雜
要下載Access數據庫文件,首先必須知道該數據庫文件的存儲路徑和文件名。如果你將原本非常簡單的數據庫文件名修改得更加復雜,這樣那些“不懷好意”者就要花費更多的時間去猜測數據庫文件名,無形中增強了Access數據庫的安全性。
很多ASP程序為方便用戶使用,它的數據庫文件通常都被命名為“data.mdb”,這大大方便了有經驗的攻擊者。如果我們將數據庫文件名修改得復雜一些,他人就不易猜到,如將“data.mdb”修改為“1rtj0ma27xi.mdb”,然後修改數據庫連接文件中的相應信息。這樣Access數據庫就相對安全一些。此方法適合於那些租用Web空間的用戶使用。
不足之處:一旦查看到數據庫連接文件(如conn.ASP)中的內容,再復雜的文件名也無濟於事。
方法二:利用ODBC數據源
很多網站Web程序,將Access數據庫文件的存儲路徑和文件名存放在數據庫連接文件中。一旦這些連接文件中的內容外洩,那麼不管數據庫文件名多麼復雜,都會暴露出蹤跡。
這時就可以使用ODBC數據源方法,即使連接文件的內容外洩,他人也只能知道網站程序所使用的ODBC數據源名稱,而數據庫文件的存儲路徑和文件名卻無法找到。
手工修改數據庫連接文件(如conn.asp)中的內容,以及創建ODBC數據源。下面以筆者的論壇程序為例,首先將conn.ASP文檔中的
DBPath=Server.MapPath("./data/1rtj0ma27xi.mdb")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&DBPath
修改為:conn.open"rtjmaxi",其中“rtjmaxi”是指ODBC數據源名稱。
接著在IIS服務器中新建名為“rtjmaxi”的ODBC數據源,並在其中指定“1rtj0ma27xi.mdb”數據庫文件的位置即可,最後點擊“確定”按鈕完成配置。
不足之處:此方法不適合於租用Web空間的用戶使用,要想使用ODBC數據源方法,必須要有管理和維護IIS服務器的權限。
方法三:改變存儲位置
一般情況下,Access數據庫文件存放在相應的Web目錄中,很多黑客就是利用這種規律來查找並下載數據庫文件。
因此可以采用改變數據庫文件存儲位置的方法,將數據庫文件存放在Web目錄以外的某個文件夾中,讓黑客難以猜測存儲位置。
接著修改好數據庫連接文件(如conn.ASP)中的數據庫文件相應信息,這樣Access數據庫文件就安全多了。即使攻擊者通過連接文件找到數據庫文件的存儲路徑,由於數據庫文件存放在Web目錄以外的地方,攻擊者就無法通過HTTP方式下載數據庫文件。
例如,IIS網站的Web目錄位於“D:\wwwroot”下,在該Web目錄下的“DATA”文件夾中存放著“1rtj0ma27xi.mdb”,現在筆者將該數據庫文件轉移到Web目錄以外的“D:\CPCW”文件夾下。然後修改數據庫連接文件,將“DBPath=Server.MapPath("./data/1rtj0ma27xi.mdb")”修改為“DBPath=Server.MapPath("../cpcw/1rtj0ma27xi.mdb")”,這樣Access數據庫文件就安全多了。雖然數據庫文件沒有存放在Web目錄中,但並不影響ASP程序訪問數據庫。
不足之處:此方法不適合於租用Web空間的用戶使用,因為將Access數據庫文件移至Web目錄之外,一般需要很大的權限。
以上方法,在不同程度上增強了Access數據庫文件的安全性,但大家不能將它們當成“仙丹妙藥”,畢竟網絡環境是復雜的,黑客的破壞手段也在不斷增強,大家可以根據自己的需要,選擇其中的多種方法配合使用,效果才理想,Access數據庫文件才會更安全。