萬盛學電腦網

 萬盛學電腦網 >> 病毒防治 >> 從數據庫管理下手提升網站的安全

從數據庫管理下手提升網站的安全

  數據庫,網站運營的基礎,網站生存的要素,不管是個人用戶還是企業用戶都非常依賴網站數據庫的支持,然而很多別有用心的攻擊者也同樣非常“看重網站數據庫。

  對於個人網站來說,受到建站條件的制約,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={Microsoft Access Driver (*.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數據庫文件才會更安全。

  如何更好的達到防范黑客攻擊,本人提一下個人意見!第一,免費程序不要真的就免費用,既然你可以共享原碼,那麼攻擊者一樣可以分析代碼。如果在細節上注意防范,那樣你站點的安全性就大大的提高了。即使出現了SQL Injection這樣的漏洞,攻擊者也不可能馬上拿下你的站點。 由於ASP的方便易用,越來越多的網站後台程序都使用ASP腳本語言。但是, 由於ASP本身存在一些安全漏洞,稍不小心就會給黑客提供可乘之機。事實上,安全不僅是網管的事,編程人員也必須在某些安全細節上注意,養成良好的安全習慣,否則會給自己的網站帶來巨大的安全隱患。目前,大多數網站上的ASP程序有這樣那樣的安全漏洞,但如果編寫程序的時候注意一點的話,還是可以避免的。

  1、用戶名與口令被破解

  攻擊原理:用戶名與口令,往往是黑客們最感興趣的東西,如果被通過某種方式看到源代碼,後果是嚴重的。

  防范技巧:涉及用戶名與口令的程序最好封裝在服務器端,盡量少在ASP文件裡出現,涉及與數據庫連接的用戶名與口令應給予最小的權限。出現次數多的用戶名與口令可以寫在一個位置比較隱蔽的包含文件中。如果涉及與數據庫連接,在理想狀態下只給它以執行存儲過程的權限,千萬不要直接給予該用戶修改、插入、刪除記錄的權限。

  2、驗證被繞過

  攻擊原理:現在需要經過驗證的ASP程序大多是在頁面頭部加一個判斷語句,但這還不夠,有可能被黑客繞過驗證直接進入。

  防范技巧:需要經過驗證的ASP頁面,可跟蹤上一個頁面的文件名,只有從上一頁面轉進來的會話才能讀取這個頁面。

  3、inc文件洩露問題

  攻擊原理:當存在ASP的主頁正在制作且沒有進行最後調試完成以前,可以被某些搜索引擎機動追加為搜索對象。如果這時候有人利用搜索引擎對這些網頁進行查找,會得到有關文件的定位,並能在浏覽器中查看到數據庫地點和結構的細節,並以此揭示完整的源代碼。

  防范技巧:程序員應該在網頁發布前對它進行徹底的調試;安全專家則需要加固ASP文件以便外部的用戶不能看到它們。首先對.inc文件內容進行加密,其次也可以使用.asp文件代替.inc文件使用戶無法從浏覽器直接觀看文件的源代碼。inc文件的文件名不要使用系統默認的或者有特殊含義容易被用戶猜測到的名稱,盡量使用無規則的英文字母。

  4、自動備份被下載

  攻擊原理:在有些編輯ASP程序的工具中,當創建或者修改一個ASP文件時,編輯器自動創建一個備份文件,比如:UltraEdit就會備份一個.bak文件,如你創建或
copyright © 萬盛學電腦網 all rights reserved