邊金良,丁喜綱
(青島酒店管理職業技術學院,青島 266100)
隨著計算機普及以及網絡技術的發展,越來越多的單位都擁有了自己的網站,網站作為一個應用平臺,在產品介紹、電子商務、游戲和社交等方面扮演了重要的角色。網站的各種應用在體現重要作用和重要價值的同時,也日益成為黑客攻擊的目標;與此同時,隨著各種攻擊工具在互聯網的廣泛傳播,黑客技術的門檻越來越低,網站被掛馬和被入侵等現象已屢見不鮮。2010年CNCERT監測發現境內被篡改網站數量為34845個[1]。目前網站面臨的常見威脅主要有。
網站掛馬,簡單地講是在正常網頁代碼中人為增加一段惡意腳本代碼,這段腳本通常是利用iframe或者script標簽嵌入一個指定網站中含有的惡意代碼,這段腳本可以位于正常網頁代碼的任何部分,尤其是頭部或底部。這段惡意代碼的嵌套,是攻擊者在獲取網站的WebShell后,針對訪問率較高(index、login、default等) 或者全部的網頁,利用批量掛馬工具或手工往其中加入。如〈script src=http://q.bz.se/function.js/script〉。
一旦瀏覽者打開被掛馬頁面時,該頁面就會直接訪問潛入標簽所指定的惡意腳本的網站,這樣不僅可以增加該網站的訪問量,實現掛馬利益鏈;更有甚者,直接使瀏覽者下載惡意腳本指定的文件。
SQL作為一種國際標準的數據庫查詢語言,在各種應用程序環境中具有廣泛的應用。而SQL注入的原理,就是攻擊者在客戶端提交特殊符號的代碼,達到欺騙服務器的目的,從而能夠破解網站數據庫的表名、字段名和管理員的用戶名和密碼,最終或者網站后臺管理員的身份,進行惡意的行為。
SQL注入的主要原因是由于網站頁面的腳本程序與數據庫進行交互式審核不嚴,造成供給者有機可乘,通俗的來講就是網站由于編寫者的原因造成的漏洞。
網站是由各種各樣的文件組成,包括動態頁面(jsp、asp、php)和靜態頁面(html、htm、shtml)文件組成,而文件是信息的主要載體,在網站安全方面,應該說對文件的保護顯得至關重要,要保證文件的刪除、增加和修改等操作都有嚴格的監控,通過監控實現文件的保護,提高網站的安全性。
通常,安全監控的對象可分成兩類:操作和信息[2]。其中,操作主要是指用戶人為產生的操作行為,而信息則主要是指系統的文件和文本信息[3]。
由于目前網站的建設幾乎都是由動態網站構成,構成網站的主要文件只有幾個,而網頁內容則全部是從數據庫提取。如http://www.XXX.com/showproduct.aspx?id=10,該網頁顯示某個產品,它實際的操作是從數據庫中取出id=10的產品記錄,然后用showproduct.aspx這個文件顯示。這樣即使該公司有多種產品,也不需要多個文件,只要一個文件即可。而網站掛馬往往就是修改這個文件,在這個文件內容里添加惡意腳本,因此當該文件被修改后,文件的可定會發生變化,通過文件的變化產生通知,從而使得網站管理員能夠及時知道網站正在面臨的風險。由此可見對網站目錄文件的實時監控對于保證網站信息的安全性具有重要意義。
1)對要檢測的網站目錄進行初始化
初始化主要做兩方面的工作:(1)將網站目錄文件備份至另外一個安全目錄中,該備份目錄的作用是當文件實時監控系統監控到文件進行了變動后,就將備份目錄的同名文件還原回來;(2)為網站目錄中的每一個文件進行逐個掃描,生成初始的文件信息表,包括文件名、物理路徑、文件內容、文件的大小等信息,該表是為今后監控文件的大小進行比對,要注意的是該初始化信息不包括增長的目錄,比方說上傳的圖片目錄等。
2)文件的刪除與恢復
文件監控系統實時對網站目錄進行監控,當發現文件的大小、文件內容或者數量發生變化,系統就對發生變化的文件進行恢復,對大小發生變化的文件用備份的文件進行恢復,對多出來的文件進行刪除。這樣可以保證網站在運行過程中始終都保持在初始時的狀態。
1)監控策略與性能的優化
對網站目錄文件進行實時監控的頻率,是決定文件監控實時性與占用服務器資源多少的決定性條件[4]。監控的頻率也就是多長時間運行一次監控程序,監控頻率過高,網站的安全性增加,但是占用的服務器系統資源必然會多;監控的頻率過低,網站的安全性就降低,占用服務器系統資源就少。因此,一個好的監控系統應該能制定靈活的配置策略,以此來調度監控系統的執行。系統的調度可以采用實時監控,即連續不斷地對網站文件進行掃描檢查,也可以設置一定的時間間隔運行。
2)文件內容比較的簽名算法
MD算法的作用是不定長度的信息,經過算法壓縮以后,加密成一個固定長度的信息。這一輸出可以被看作是原輸入的摘要值(Message Digest),如果是兩個不同的信息則加密后的結果(摘要值)必然不同,這也是MD算法得名的原因。由于加密前的信息有時比加密后的信息要長,這種簽名算法可能會出現不同的輸入但輸出相同的可能。MD5是由Ron Rivcst設計的散列函數系列的第5個。然而對于信息摘錄函數而言,給定一個輸出,要求出一個輸入以產生相同的輸出,這種情況是計算不可行的。MD5以一種充分而復雜的方式將各比特弄亂,每個輸出比特都受到每一個輸入比特的影響[5]。
在文件實時監控系統的實現中只需要比較文件的內容是否一致,而不用考慮文件內容的哪一部分發生了變動。
1)選擇的開發語言
系統采用C#語言編寫,以SQL Server為數據庫進行數據的存儲。
2)系統初始化的實現
根據上面的論述,系統初始化,主要是設置系統監控的目錄以及獲取要監控目錄的文件信息,包括文件的大小、創建時間和文件的加密后的內容等,并將信息保存到數據庫中。程序界面如圖1所示。

圖1 系統初始化界面
初始化后,數據庫中數據的信息如圖2所示。

圖2 初始化后的數據信息
3)文件的實時監控
文件的實時監控是要在特定的時間間隔內,依次掃描監控目錄的文件,界面如圖3所示。

圖3 設置監控的頻率
監控的頻率通過Timer設置完成,系統主要完成以下的操作:
(1)如果該文件在數據庫中不存在,則直接刪除;
(2)如果該文件的大小、修改時間和文件內容中的任何一樣與數據庫該文件初始化信息中不符,則將備份的文件還原;
(3)如果網站目錄的文件被攻擊者或者系統的還原部分直接刪除了,可在數據庫中對掃描到的文件做一個標記,最后遍歷數據庫,如果有沒有做過標記的記錄,則直接從備份的文件中還原。
4)部分代碼


文件實時監控系統的實現,能夠實時監控網站目錄文件免受攻擊者的改變,這只是從一方面提高了網站的安全性。為了進一步加強網站的安全性,筆者從多年的經驗出發,提出以下的建議:
1)盡量采用ODBC數據源,不要使用連接字符串
設計網站時一般是將連接數據庫的字符串保存到網站的配置文件中,連接字符串都長包括服務器的名稱、數據庫的名稱、用戶名和密碼。但是如果該配置文件的內容被竊取,那么數據庫都將會處于危險的狀態中。因此,配置ODBC數據源方法,即可實現數據庫與網站的分離,達到安全的進一步提高。
2)為防止SQL注入,盡量采用存儲過程
動態網站往往都要對數據庫進行填、刪、改、查的操作,而往往SQL注入是發生在查詢語句中。因此,在數據庫中建立存儲過程,通過存儲過程來完成對數據的操作。使用存儲過程,不僅可以將用戶和數據分開的方法,而且維護調試方便,也就比較了在網頁文件中直接使用SQL語句,從而保證SQL注入的發生。
系統通過對網站文件進行實施監控,通過實踐調度、加密技術保證了網站文件被篡改時能即使恢復,使用靈活方便,在預防網頁掛馬方面以及網站安全性的提高起到很大的作用。
[1] CERNET/CC.2010年中國互聯網網絡安全報告[R/OL].2011-04-22.http://www.cert.org.cn/articles/docs/common/2011042225342.shtml.
[2] 王云維.基于文件管理的網站安全動態監控的研究[D].北京: 北京工業大學, 2010.
[3] 于揚, 楊澤紅, 賈培發.計算機安全監控系統的關鍵技術研究 [J].計算機工程, 2007, 33(24): 146-152.
[4] 趙君輝, 徐琨.網頁監控與恢復系統的設計與實現 [J].北方交通大學學報, 2002, 26(1): 36-37.
[5] 曾鳴,趙榮彩,姚京松,王小芹.基于特征提取的二進制代碼比較技術 [J].計算機工程與應用, 2006(22): 8-11.