摘要:本文論述了各種Web服務(wù)器和客戶端容易遭受的攻擊,并就此給出了一些解決安全問題的措施。
關(guān)鍵詞:Web數(shù)據(jù)庫 威脅 攻擊 安全防范
1、前言
基于B/S架構(gòu)的Web數(shù)據(jù)庫管理系統(tǒng)的安全性問題不僅與數(shù)據(jù)庫的自身安全有著緊密聯(lián)系,也與互聯(lián)網(wǎng)的開放型網(wǎng)絡(luò)有著密切的聯(lián)系。互聯(lián)網(wǎng)本身就是一個不可信網(wǎng)絡(luò),在互聯(lián)網(wǎng)上充斥著各種安全威脅。而數(shù)據(jù)庫安全也是一個復(fù)雜的應(yīng)用問題,數(shù)據(jù)庫管理員需要采用多種策略保證數(shù)據(jù)庫的安全。Web數(shù)據(jù)庫管理系統(tǒng)作為數(shù)據(jù)庫管理系統(tǒng)的一種實(shí)際應(yīng)用,安全問題是關(guān)系到整個管理系統(tǒng)的完整性和保密性以及可用性的關(guān)鍵因素。
2、常見的安全威脅和攻擊
計(jì)算機(jī)網(wǎng)絡(luò)發(fā)展到今天,已經(jīng)發(fā)生了翻天覆地的變化。黑客攻擊的方式從開始的單一式攻擊已經(jīng)發(fā)展到幾乎覆蓋所有的操作系統(tǒng)和信息系統(tǒng),黑客在網(wǎng)絡(luò)上活動的頻率也在增加。他們既可以利用信息系統(tǒng)自身的漏洞來發(fā)動攻擊,也可以利用強(qiáng)行的進(jìn)攻方式發(fā)動攻擊,導(dǎo)致服務(wù)癱瘓,文件損壞等。
從黑客的攻擊方式上可以把網(wǎng)絡(luò)安全威脅分為如下幾種:竊取機(jī)密攻擊、非法訪問、惡意攻擊、計(jì)算機(jī)病毒、不良信息資源和信息戰(zhàn)等。常見的攻擊方式分為緩沖區(qū)溢出攻擊、硬件設(shè)備破壞、網(wǎng)頁篡改等。通過向程序的緩沖區(qū)寫入超過長度的內(nèi)容造成溢出,從而破壞程序的堆棧,使程序轉(zhuǎn)入其他的位置執(zhí)行未知指令,達(dá)到攻擊的目的。這種攻擊大多可以使程序運(yùn)行失敗或者系統(tǒng)崩潰重啟,嚴(yán)重的話可以通過執(zhí)行非授權(quán)指令取得系統(tǒng)特權(quán)執(zhí)行非法操作。
3、Web數(shù)據(jù)庫安全技術(shù)分析
3.1JavaScript的安全防范
JavaScript是Netscape公司設(shè)計(jì)的一系列HTML語言擴(kuò)展,它增強(qiáng)了HTML語言的動態(tài)交互能力,利用自身優(yōu)勢把一些處理操作轉(zhuǎn)移在客戶瀏覽器中,減輕了服務(wù)器的負(fù)擔(dān)。它基于對象和事件驅(qū)動。通過嵌入或者調(diào)入到HTML實(shí)現(xiàn)對瀏覽器的控制,如打開和關(guān)閉窗口、操作表格元素、調(diào)整瀏覽器設(shè)置等等。它具有以下幾個特點(diǎn):
(1)基于對象:JavaScript是一種基于對象的語言,帶有面向?qū)ο蟮奶匦浴1M管與C++、Java、C#這樣成熟的面向?qū)ο笳Z言相比,JavaScript的功能要弱一些,但對于它的預(yù)期用途而言,JavaScript的功能已經(jīng)足夠大了。自身可以運(yùn)用自帶的對象操作瀏覽器,從而實(shí)現(xiàn)與HTML語言的動態(tài)交互,讓網(wǎng)頁更生動多變。
(2)簡單性:JavaScript是解釋性腳本語言,它的開發(fā)工具多種多樣,采用小程序段實(shí)現(xiàn)編程。它的基本結(jié)構(gòu)與C、C++、Java等主流語言類似,學(xué)習(xí)容易,而且不需要編譯。程序運(yùn)行時逐行解釋,因此調(diào)試JavaScript不是很容易。它的數(shù)據(jù)類型定義是弱類型,并未使用嚴(yán)格的數(shù)據(jù)定義方式,由運(yùn)行時決定數(shù)據(jù)類型。
(3)動態(tài)性:JavaScript是動態(tài)的,是因?yàn)樗梢灾苯訉τ脩糇龀龅膭幼鬟M(jìn)行反應(yīng),而不需要經(jīng)過服務(wù)程序。用戶對頁面或者窗口做出某些操作(鼠標(biāo)點(diǎn)擊按鈕,拖動標(biāo)題欄等)之后,就會觸發(fā)一個“事件響應(yīng)”,通過它調(diào)用預(yù)先定義的腳本函數(shù),從而達(dá)到操作的目的。
(4)相對安全性:JavaScript是一種相對安全的語言,它不允許修改本地的硬盤,不允許對網(wǎng)絡(luò)文檔進(jìn)行修改和刪除,只能通過瀏覽器實(shí)現(xiàn)信息瀏覽或動態(tài)交互,從而有效地防止數(shù)據(jù)的丟失。
(5)跨平臺性:JavaScript依賴于瀏覽器,目前主流的瀏覽器都會對它進(jìn)行支持,盡管有些對象在各個瀏覽器上稍有不同。JavaScript只需要一個文本編輯器就可以進(jìn)行開發(fā),無需Web服務(wù)器,可以利用自己的電腦進(jìn)行處理。
同時JavaScript又是一門有爭議的語言。雖然它是很簡潔的腳本語言,可是安全問題不容小覷。JavaScript能夠獲得用戶本地磁盤和網(wǎng)絡(luò)盤上的目錄列表。這既代表了信息泄露和隱私侵犯,又代表了安全風(fēng)險,可以通過取得機(jī)器的相關(guān)組織信息從而設(shè)計(jì)針對機(jī)器的入侵方法并進(jìn)行攻擊破壞。它又能監(jiān)視用戶在某個時間段內(nèi)訪問的網(wǎng)頁,捕捉URL并將它們上傳到Internet上的指定地點(diǎn),雖然這個過程需要用戶的交互,不過欺騙可以偽裝成合法的方式進(jìn)行。用戶也可以被這種手段欺騙,從而把本地重要的數(shù)據(jù)文件上傳到指定主機(jī)。如果系統(tǒng)主要是依賴口令文件進(jìn)行訪問的話,這將會面臨很大的安全風(fēng)險。
3.2Cookies的安全防范
Cookies是Netscape公司開發(fā)的一種機(jī)制,用來改善HTTP的無狀態(tài)性。它是一種能夠讓網(wǎng)站服務(wù)器把少量數(shù)據(jù)儲存到客戶端的硬盤或內(nèi)存,或者從客戶端的硬盤讀取數(shù)據(jù)的一種技術(shù)。Cookies是一段很小的信息,通常只有一個短短的章節(jié)標(biāo)記那么大。它是在第一次瀏覽網(wǎng)站時Web服務(wù)器送到用戶瀏覽器,然后保存在客戶端的硬盤里。它可以記錄用戶在網(wǎng)站上輸入的ID、密碼及其訪問歷史、停留時間等信息。當(dāng)你再次來到該網(wǎng)站時,網(wǎng)站通過讀取Cookies,自動完成個人驗(yàn)證身份的輸入操作,達(dá)到方便訪問的效果。從本質(zhì)上講,它可以看作是你的身份證。
Cookies不能執(zhí)行代碼,也不會傳送病毒,更不能竊取計(jì)算機(jī)里面的信息,它只能由提供它的服務(wù)器來讀取。保存的信息片斷以“名-值”對的形式儲存,一個“名-值”對僅僅是一條命名的數(shù)據(jù)。Cookies中的內(nèi)容涉及眾多敏感信息,所以大多數(shù)Web服務(wù)器都會對Cookies的內(nèi)容進(jìn)行加密之后發(fā)送給用戶,之后讀取時Web服務(wù)器也有相應(yīng)的解密程序。因此一般用戶看來只是一些毫無意義的字母數(shù)字組合,只有服務(wù)器才知道它們真正的含義。
3.3數(shù)據(jù)庫安全及其防范
當(dāng)今數(shù)據(jù)庫管理系統(tǒng)大多都是關(guān)系型數(shù)據(jù)庫管理系統(tǒng),如SQLServer、Oracle、IBMDB2、Sybase等。雖然他們的命令和操作等具體細(xì)節(jié)上存在某些差異,可是大概的原理與實(shí)現(xiàn)其安全性的技術(shù)存在共同的特性。
數(shù)據(jù)庫安全控制是指為保證數(shù)據(jù)庫安全而采取的數(shù)據(jù)庫安全防護(hù)措施。數(shù)據(jù)庫的安全策略是涉及信息的高級指導(dǎo),這些策略根據(jù)用戶需要、安裝環(huán)境、建立規(guī)則和法律等方面的限制來制定。
數(shù)據(jù)庫系統(tǒng)的安全需求分為三個方面,數(shù)據(jù)庫的完整性、保密性和可用性。數(shù)據(jù)庫的完整性又分為物理完整性和邏輯完整性。物理完整性是指數(shù)據(jù)庫不受到物理故障的影響,并在災(zāi)難性毀壞時可能進(jìn)行重建和恢復(fù)原有的數(shù)據(jù)庫。而邏輯完整性是保證數(shù)據(jù)庫在語義與操作完整性,即要保證數(shù)據(jù)存取時和并發(fā)操作時滿足完整性約束;保密性是指數(shù)據(jù)庫中的數(shù)據(jù)不允許未經(jīng)授權(quán)的用戶存取數(shù)據(jù),訪問數(shù)據(jù)庫的數(shù)據(jù)要進(jìn)行身份認(rèn)證,并只能訪問所允許訪問的數(shù)據(jù),同時,還要對用戶的訪問進(jìn)行跟蹤和審計(jì),還要防止認(rèn)證后的用戶通過訪問低密級的數(shù)據(jù)推理得到高密級的數(shù)據(jù);數(shù)據(jù)庫的可用性是指既要保證授權(quán)用戶可以正常對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行各種授權(quán)操作,又要保證效率上不受太大的影響。這三個方面用通俗的語言來描述就是數(shù)據(jù)要正確,用戶只能存取應(yīng)該存取的數(shù)據(jù)。
數(shù)據(jù)庫安全還經(jīng)常受到其它威脅,比如推理通道和隱秘通道的威脅。推理通道就是從已知的信息推出新的信息,當(dāng)用戶能夠在低安全級別下進(jìn)行數(shù)據(jù)拼湊從而推導(dǎo)出在高安全級別保護(hù)下的數(shù)據(jù)時,推理功能便構(gòu)成了對數(shù)據(jù)庫的嚴(yán)重威脅。隱秘通道是指在實(shí)施強(qiáng)制訪問控制的多級安全系統(tǒng)中,保密信息被一些高安全級別用戶通過非常規(guī)手段泄露給無權(quán)訪問的,較低安全級別的用戶。推理通道和隱蔽通道是數(shù)據(jù)庫中兩種威脅非常大的信息泄露途徑。
數(shù)據(jù)庫的訪問方式也會產(chǎn)生一些安全威脅。Web數(shù)據(jù)庫的安全還與Web、HTTP協(xié)議安全、應(yīng)用程序安全、代碼安全等有關(guān)。Web數(shù)據(jù)庫由于代碼不規(guī)范或者程序設(shè)計(jì)得不嚴(yán)格而經(jīng)常遭致SQL注入攻擊等。
4、結(jié)語
由于Web數(shù)據(jù)庫安全涉及的技術(shù)范圍包括網(wǎng)絡(luò)安全和數(shù)據(jù)庫安全等技術(shù),本文特針對幾個Web數(shù)據(jù)庫客戶端與服務(wù)器端的常用技術(shù)進(jìn)行探討,指出存在的危險以及缺陷,并且給出了這些安全問題的一些解決方法,使得Web數(shù)據(jù)庫搭載平臺更安全,這些細(xì)微之處如果處理不當(dāng)有時會使整個系統(tǒng)遭受攻擊。
作者簡介
袁圣 男 1981.8 浙江龍游 助工 2003.6月畢業(yè)于浙江大學(xué) 本科 浙江省氣象局 浙江杭州 310002 從事氣象行業(yè)相關(guān)的計(jì)算機(jī)通信及網(wǎng)絡(luò)安全管理