陳天文
(濰坊市圖書館,山東 濰坊 261041)
隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的日益發(fā)展,網(wǎng)絡(luò)化、數(shù)字化成為圖書館發(fā)展的重要方向,圖書館網(wǎng)站建設(shè)成為其中不可缺少的重要組成部分。圖書館網(wǎng)站不但是圖書館實(shí)現(xiàn)對(duì)外交流的窗口,也是圖書館革新檢索和服務(wù)方式、更好地為讀者提供信息服務(wù)的橋梁和紐帶。目前,圖書館網(wǎng)站已從早期提供簡(jiǎn)單信息服務(wù)轉(zhuǎn)化為能根據(jù)用戶需要提供動(dòng)態(tài)的、具有交互功能的特定服務(wù),如聯(lián)合編目、網(wǎng)上流通、網(wǎng)上參考咨詢、電子資源的管理與發(fā)布、視頻點(diǎn)播等。在網(wǎng)站建設(shè)過程中,由于開發(fā)水平及管理經(jīng)驗(yàn)參差不齊,部分網(wǎng)站開發(fā)人員在編寫代碼的時(shí)候,沒有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患,網(wǎng)站容易遭受不同程度的SQL注入攻擊。SQL注入攻擊由于其廣泛性、易學(xué)性、難捕獲性已經(jīng)逐漸成為互聯(lián)網(wǎng)上主流的黑客攻擊方式,因此有必要結(jié)合圖書館網(wǎng)站自身特點(diǎn),了解SQL注入攻擊的原理,盡可能多地采取防范措施,并在遭受攻擊后能采取行之有效的恢復(fù)措施,以保證網(wǎng)站的正常運(yùn)行。
目前圖書館網(wǎng)絡(luò)安全系統(tǒng)主要采用的是以防火墻為主的被動(dòng)管理,即根據(jù)設(shè)定的規(guī)則,對(duì)流入網(wǎng)絡(luò)中的流量進(jìn)行過濾,從而防止非法行為的入侵。防火墻的作用只是對(duì)訪問對(duì)象進(jìn)行認(rèn)證,而對(duì)于網(wǎng)站本身存在的軟件問題,入侵者依然可以在遵守防火墻訪問規(guī)則的前提下實(shí)施攻擊,所以防火墻并不能解決所有的安全問題。
所謂SQL注入,就是在客戶端通過把SQL命令插入到Web表單遞交或頁面請(qǐng)求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,即通過遞交參數(shù)構(gòu)造巧妙的SQL語句,從而成功獲取想要的數(shù)據(jù)。
SQL注入目的是獲取管理員的賬號(hào)和密碼,后果輕則導(dǎo)致敏感信息的泄漏,重則整個(gè)服務(wù)器受他人控制。一旦網(wǎng)站服務(wù)器被注入成功,網(wǎng)站會(huì)出現(xiàn)以下幾種后果:①重要信息被人竊?。虎跀?shù)據(jù)記錄被篡改;③網(wǎng)站文件被插入“尾巴”,登錄網(wǎng)站時(shí)轉(zhuǎn)向其他網(wǎng)站或傳播病毒;④網(wǎng)站服務(wù)器被掛“木馬”程序;⑤網(wǎng)站服務(wù)器全面癱瘓。
目前圖書館網(wǎng)站主要分為4類:①網(wǎng)站全部由靜態(tài)頁面組成,此類網(wǎng)站在功能上起到展示的作用,更新比較復(fù)雜,功能比較單一。②通過中間件產(chǎn)品,如TRS、清華同方WCCM等內(nèi)容管理系統(tǒng)進(jìn)行二次開發(fā)或通過自主開發(fā)的中間件產(chǎn)品,在服務(wù)器端發(fā)布數(shù)據(jù)時(shí)自動(dòng)生成靜態(tài)網(wǎng)頁,用戶在客戶端訪問的全部是靜態(tài)網(wǎng)頁。③通過下載網(wǎng)站模板源代碼進(jìn)行修改建站。④通過ASP、PHP等技術(shù)自主開發(fā)動(dòng)態(tài)網(wǎng)站。
目前全國(guó)省級(jí)以上公共圖書館采用第一種、第三種方式建站的很少;采用第二種方式建站的有國(guó)家圖書館、首都圖書館、遼寧、福建、山西、湖北、河北、陜西、黑龍江、吉林、河南、青海、香港共13家;采用第四種方式建站的有甘肅、江西、云南、四川、海南、上海、內(nèi)蒙古、新疆、西藏、廣東、青島、臺(tái)灣、浙江、貴州、澳門共15家;其余圖書館采用JSP等其他技術(shù)。第二種方式是近年來比較流行的建站方式,安全性較高,該方式與ASP、PHP技術(shù)的區(qū)別在于所有數(shù)據(jù)在服務(wù)器發(fā)布處理完畢后生成靜態(tài)網(wǎng)頁,客戶端訪問時(shí)沒有對(duì)數(shù)據(jù)庫的操作,不像ASP等技術(shù)根據(jù)用戶請(qǐng)求需要對(duì)數(shù)據(jù)庫進(jìn)行相應(yīng)的操作,從而最大可能地減少了對(duì)數(shù)據(jù)庫的攻擊。目前,國(guó)內(nèi)大型門戶網(wǎng)站全部采用這種方式建站。ASP技術(shù)由于靈活性、易用性,在圖書館網(wǎng)站的應(yīng)用也比較廣泛。ASP技術(shù)是構(gòu)建網(wǎng)站的主流技術(shù),特別是asp.net技術(shù)的推出提供了更為廣闊的空間,第二種建站方式的網(wǎng)站后臺(tái)管理系統(tǒng)也較多采用asp.net等技術(shù)。
對(duì)于全部由靜態(tài)網(wǎng)頁組成的網(wǎng)站,主要用來發(fā)布圖書館簡(jiǎn)單信息,通過FTP實(shí)現(xiàn)更新操作,所以保管和設(shè)置好FTP密碼即可。第二類網(wǎng)站,由于這類商品軟件經(jīng)過嚴(yán)格測(cè)試,技術(shù)比較成熟。其次,在前臺(tái)呈現(xiàn)的大多是靜態(tài)頁面,遭受攻擊的可能性較小,這類網(wǎng)站管理好后臺(tái)登錄系統(tǒng)的入口及密碼是關(guān)鍵。第三四類網(wǎng)站是SQL注入的主要對(duì)象。
SQL注入操作比較簡(jiǎn)單,特別是網(wǎng)上流行的啊D注入工具、HDSI等能夠自動(dòng)分析網(wǎng)頁是否存在注入漏洞及其數(shù)據(jù)庫類型。在實(shí)際操作中,如果是針對(duì)Access數(shù)據(jù)庫,可以對(duì)表名、字段名、字段值進(jìn)行逐個(gè)猜測(cè),接著用函數(shù)來計(jì)算數(shù)據(jù)并將它們還原;如果是MSSQL數(shù)據(jù)庫,由于所有的列表都保存在特定的位置,可以直接通過暴庫的方法來獲取。圖1、圖2分別為唐山圖書館ACCESS注入檢測(cè)(圖1)和荊門圖書館MYSQL注入檢測(cè)(圖2)界面及其結(jié)果。
圖1 ACCESS注入檢測(cè)
圖2 M YSQL注入檢測(cè)
面向?qū)ο蟮某绦蛟O(shè)計(jì)思想在一定程序上包含對(duì)輸入的數(shù)據(jù)進(jìn)行有效性檢驗(yàn)及上下文的對(duì)比分析,并且能夠重復(fù)調(diào)用,所以提高了代碼效率,減少了由于多次重寫代碼而存在危險(xiǎn)性的機(jī)率。
入侵者根據(jù)錯(cuò)誤提示很容易得到有關(guān)數(shù)據(jù)庫的相關(guān)信息。如以下錯(cuò)誤信息:
MicrosoftOLEDBProviderforODBCDrivers(0x80040E07)
[Microsoft][ODBC SQL Server Driver]
[SQL Server]將nvarchar值'sonybb'轉(zhuǎn)換為數(shù)據(jù)類型為int的列時(shí)發(fā)生語法錯(cuò)誤。
/lawjia/show.asp,第 47行
根據(jù)這個(gè)出錯(cuò)信息,可以獲得以下信息:該站使用MS_SQL數(shù)據(jù)庫,用ODBC連接,連接賬號(hào)名為sonybb。獲得這些信息對(duì)下一步的SQL注入提供了重要數(shù)據(jù),故始終通過測(cè)試類型、長(zhǎng)度、格式和范圍來驗(yàn)證用戶輸入,過濾用戶輸入的內(nèi)容,防止出現(xiàn)系統(tǒng)錯(cuò)誤提示,這是防止SQL注入式攻擊的常見并且行之有效的措施,同時(shí)在客戶端和服務(wù)器端都執(zhí)行驗(yàn)證,之所以要執(zhí)行服務(wù)器端驗(yàn)證,是為了彌補(bǔ)客戶端驗(yàn)證機(jī)制脆弱的安全性。
如網(wǎng)上流行的SQL通用防注入系統(tǒng),能夠自動(dòng)封殺注入者IP,使注入者不能再訪問本站。同時(shí)可以查看入侵者提交數(shù)據(jù)記錄,解除對(duì)注入者IP等。
該系統(tǒng)代碼使用方法很簡(jiǎn)單,只要在需要防注入的頁面頭部插入