■ 河南 郭建偉
編者按:暴庫是黑客最常用的手段之一,是黑客通過各種刺探手段窺探數據庫文件,并利用其中的敏感數據對網站進行攻擊。Access數據庫在網站中使用廣泛,如不采取安全措施,網站管理員密碼等敏感信息可被輕易獲取。只有有效保護網站數據庫安全,才能讓黑客無功而返。
為防止黑客隨意下載Access數據庫,最簡單的方法是在數據庫名稱前添加“#23%”前綴(如“#23%test.mdb”)或“23%23%”前綴(如“23%23%test.mdb”),這 樣當下載數據庫時,就會顯示“Directoty Listing Denied”的錯誤提示。如果將其名稱更改為“23%#test.mdb”或“##test.mdb”,就會出現“無法找到該頁”提示,這同樣會攔截數據庫下載操作。實際上,也可以直接在數據庫名稱前加“%”符號,同樣可以起到防下載的作用。
當然,為了保護數據庫文件,可以在其名稱前添加更多特殊字符。例如將其更改為“##%%23#test#$$%.mdb”等,如此復雜的名稱格式可讓常用的下載工具視其為非法的URL,這樣即可保護數據庫文件安全了。
為防止黑客使用URL加密方式避開上述限制,可以在數據庫文件名中間夾雜空格符號。在IIS中可以采用更簡單的更名方式來防御非法下載。例如將“test.mdb”更名為“test.ini”文件,并對“conn.asp”等連接文件中的數據庫名稱做同樣修改,當黑客試圖下載這樣的文件時,就會出現無法找到該頁的提示。
對于IIS來說,如果瀏覽器請求了一個服務器不知道的MIME文件類型。那么瀏覽器就無法將其傳輸給客戶端,并返回404錯誤信息。因此,將“.mdb”的MIME類型刪除就可防止數據庫被非法下載。如果您使用的是虛擬空間,無權更改服務器MIME類型,可以將數據庫更名為任意一個IIS中沒有預設的MIME類型,就可以起到防止下載的作用。
很多網站采用的是公開的整站程序,數據庫路徑是公開的,如果不修改默認路徑,攻擊者可以毫不費力地下載數據庫文件。
例如通過在數據庫名稱中添加“#”符號或對數據庫進行加密,可防止非法下載。在數據庫連接文件“conn.asp”中添加“on error resume next”語句,防止黑客暴庫。當數據庫路徑被黑客發現后,為避免其下載數據庫,可以將數據庫文件存放到Web目錄之外的地方。例如,可以在網站目錄外建立一個文件夾,假設為“f:data”,將原數據庫文件移動到該目錄,再將“conn.asp”等連接文件進行修改,其中的數據庫路徑更改為新的數據庫路徑,如“DataSource= "&Server.mappath("../data/db.mdb")"”等。
因為數據庫文件在域網站目錄之外,攻擊者自然無法下載,但該方法對使用虛擬空間網站用戶不適合。為此可以變通解決,例如原數據庫文件為“pctest.mdb”,可以更名為“pc%23test.mdb”,之后在“conn.asp”連接文件中修改數據庫名稱。這樣就無法下載該數據庫。
還可以在數據庫目錄下創建名為“pc#test.mdb”的虛假數據庫文件,在其中寫入警告信息。當攻擊者利用“http://xxx.xxx.xxx.xxx/shu juku/ pc%23test.mdb”之類網址試圖下載“pc%23test.mdb”文件時,下載的是“pc#test.mdb”這個虛假文件,顯示的是該文件中的警告信息。
為抵御黑客暴庫,可以打開IIS服務管理器,在IIS屬性窗口中的“主目錄”面板中點擊“配置”按鈕,在應用程序配置窗口中點擊“添加”按鈕,在彈出窗口中點擊“添加”按鈕,在“可執行文件”欄中輸入“C:Windowssystem32inetsvrasp.dll”,在“擴展名”欄中輸入“.mdb”,選擇“限制為”項,輸入“禁止”。點擊“確定”按鈕保存。當黑客試圖下載數據庫時,因為映射解析的作用,服務器會返回禁止訪問的提示。
此外,還可以采用重定向技術保護數據庫安全。例如在IIS管理器中打開目標網站,選擇其中的數據庫文件,右擊“屬性”項,在彈出窗口中選擇“重定向到URL”項,在“重定向到”欄中輸入當前網站的網址(或任意網址)。這樣當訪問該數據庫時會自動跳轉到重定向地址。
為防止網站數據庫以及其他敏感信息不被搜索引擎收錄,可以為“robots.txt”文件建立安全規則。例如將“robots.txt”中的原有內容清空,在其中寫入“Useragent:*”和“Allow:/cgibin/*.htm”兩行內容,這樣就實現了只允許訪問“cgibin”目錄下的所有“.htm”類型文件的連接及相關的子目錄連接,將數據庫目錄等敏感內容隱藏起來。
利用特殊字符對網站數據庫進行探測,是黑客經常使用的招數,最簡單有效的方法對“conn.asp”連接文件進行修改。例如,在其中逐行加入“<%”,“Option Explicit”、“Dim”、“Dim db”、“Dim Connstr”、“Db= "data/數據庫實際名稱.mdb"”、“ConnStr=”Provider= Microsoft.Jet.OLEDB.4.0;Data Source=”&Server.MapPath(db)”、“On Error Resume Next”、“Set conn = Server.CreateObject(“ADODB.Connection”)”、“conn.open ConnStr”、“If Ree Then”,“err.Clear”、“Ser Conn =Nothing”、“Response.Write =Nothing”、“Response.Write "數據庫連接出現異常,請查看提交的數據!"”、“Reponse.End”、“End If”、“%>”等語句。這樣就實現了數據庫防暴庫功能。當黑客使用上述方法試圖探測網站的數據庫真實路徑時,服務器就會返回“"數據庫連接出現異常,請查看提交的數據!”的警告信息。
為防止黑客非法下載數據庫,最根本的方法還需要從Access數據庫本身著手,為其設置更多的安全措施。
例如,使用Access打開網站數據庫,切換到表顯示界面,點擊工具欄上的“新建”按鈕,在彈出窗口中選擇“設計視圖”項,在表設計窗口中的第一行中的“字段名稱”列中輸入“nodown”,在“數據類型”列中選擇“OLE對象”項,點擊“Ctrl+S”鍵,保存該表,將其名稱設置為“nodown”。使用記事本創建名為“aaa.txt”的文件,并輸入“<%”。
在數據庫中打開上述“nodown”表,在對應記錄行中右擊“插入對象”項,在彈出窗口中選擇“由文件創建”項,點擊“瀏覽”按鈕,選擇上述“aaa.txt”文件,得到一個新的名為“包”的記錄。這樣可有效防止數據被隨意下載。
對于數據庫中的重要表,最好將其隱藏起來,以防止被別人隨意窺視。打開網站數據庫,選擇其中需要隱藏的表,在屬性窗口中選擇“隱藏”項即可隱藏。按照同樣方法可以隱藏其他的表。之后點擊菜單“工具”→“選項”項,在選項窗口中的“視圖”面板中取消“隱藏對象”項的選擇狀態,就可以將表徹底隱藏起來了。
為了防止黑客窺視數據庫內容,可以對數據庫進行加密。在Access中點擊菜單“工具”→“安全”→“編碼/解碼數據庫”項,在彈出的窗口中選擇網站數據庫,之后將其保存為合適的名稱。通過對數據庫文件進行編碼操作,可以防止別人使用專用MDB數據庫查看器來顯示數據庫內容。
接下來對數據庫進行加密,點擊菜單“文件”→“打開”項,選擇網站數據庫,在“打開”按鈕右側點擊下拉標記,在彈出菜單中選擇“以獨占方式打開”項,打開數據庫后,點擊菜單“工具”→“安全”→“設置數據庫密碼”項,輸入復雜的密碼(注意,密碼區分大小寫),對數據庫進行加密處理。
對數據庫進行加密后,需要對“conn.asp”等數據庫連接文件進行修改,添加和密碼相關的語句(如“uid=;password-=密 碼”等)。為防止黑客下載數據庫,可以對網站目錄中的數據庫存放文件夾進行改名,最好將名稱修改的比較復雜(如“database_lemon2015@#$”等)。進入該文件夾,將數據庫名稱進行必要的修改,例如在其前面添加“#”符號,將后綴改為“.asp”、“.asa”等,并將其和在數據庫中插入“nodown”表的方法配合使用,可以有效提高數據庫抗下載的能力。之后對數據庫連接文件進行對應的修改,將數據庫路徑設置為與上述信息相符即可。
在設計ASP等網站時,如果有可能,盡量使用ODBC數據源,不要將數據庫連接密碼顯示在ASP源程序中,不然黑客如果通過各種手段查看了數據庫連接文件的話,再復雜的名稱和路徑都會被識破。如果使用ODBC數據源,就可以化解上市問題,因為類似于“conn.open "ODBCDSN名"”的連接語句會讓黑客無所適從。