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