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