陳石禹
【摘 要】隨著互聯(lián)網(wǎng)飛速發(fā)展,網(wǎng)絡(luò)環(huán)境日益開(kāi)放,因此,網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的安全問(wèn)題顯得越來(lái)越重要。本文論述了網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的安全設(shè)計(jì),從三個(gè)方面闡述了網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全的實(shí)現(xiàn),為網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全建設(shè)提供參考。
【關(guān)鍵詞】網(wǎng)絡(luò)數(shù)據(jù)庫(kù);設(shè)計(jì);實(shí)現(xiàn);加密;權(quán)限
1.引言
近年來(lái),隨著計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展與普及,Internet得到了飛速發(fā)展,使得網(wǎng)絡(luò)不再是單純的信使,而是一個(gè)開(kāi)放性很強(qiáng)交互的平臺(tái),因此網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的安全越來(lái)越重要。多用戶、高可靠性、頻繁的更新和大文件是數(shù)據(jù)庫(kù)的特性,這必然使得數(shù)據(jù)庫(kù)的建設(shè)和維護(hù)顯得非常困難和繁瑣,同時(shí)這也使攻擊者有機(jī)可乘,利用數(shù)據(jù)庫(kù)的一些不易覺(jué)察的漏洞,進(jìn)行非法操作。為此,本文主要探討了網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的安全設(shè)計(jì)及實(shí)現(xiàn),為網(wǎng)絡(luò)數(shù)據(jù)庫(kù)使用客戶提供技術(shù)保障。
2.相關(guān)技術(shù)
2.1 基于角色的訪問(wèn)控制RBAC
RBAC的原理描述如下:用戶對(duì)應(yīng)的訪問(wèn)權(quán)限是經(jīng)過(guò)授權(quán)而獲得的,權(quán)限只能與角色相對(duì)應(yīng),角色與權(quán)限之間的關(guān)系是相互映射的。這樣的訪問(wèn)控制方法可以有效簡(jiǎn)化授權(quán),同時(shí)又使指定和執(zhí)行個(gè)性化保護(hù)策略的過(guò)程更加靈活。用戶可以根據(jù)實(shí)際情況定義角色,也可根據(jù)需要重新改變角色。
2.2 .NET Framework
.NET Framework是一個(gè)綜合性的環(huán)境,涉及到用戶創(chuàng)建、配置、運(yùn)行網(wǎng)絡(luò)服務(wù)及其它應(yīng)用程序。它主要由通用語(yǔ)言運(yùn)行庫(kù)、Framework共享對(duì)象類別庫(kù)以及ASP.NET三個(gè)部分所構(gòu)成:.NET Framework類庫(kù)的特色為:提供可繼承的基類;包涵基于Web的應(yīng)用模型;提供Web服務(wù)框架的組件以及相關(guān)服務(wù)等。
3.網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全的設(shè)計(jì)
3.1 系統(tǒng)的架構(gòu)設(shè)計(jì)
本文研究的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全訪問(wèn)系統(tǒng)主要分成三大部分,分別是:表示層、數(shù)據(jù)訪問(wèn)層以及數(shù)據(jù)層,架構(gòu)設(shè)計(jì)如圖1所示。
由上圖可知,整個(gè)系統(tǒng)都是基于認(rèn)證服務(wù)器器。系統(tǒng)架構(gòu)中的幾個(gè)層次分別承擔(dān)不同的功能,而面向角色的數(shù)據(jù)庫(kù)訪問(wèn)控制在每個(gè)層次中都有實(shí)現(xiàn),并結(jié)合對(duì)應(yīng)的安全策略及組件來(lái)滿足數(shù)據(jù)庫(kù)訪問(wèn)機(jī)制的控制需求。其中,表示層是用戶與系統(tǒng)之間的交互接口;數(shù)據(jù)訪問(wèn)層則是用戶與數(shù)據(jù)庫(kù)之間的核心層,主要負(fù)責(zé)邏輯方面的功能控制,涉及到:認(rèn)證以及數(shù)據(jù)加密等;數(shù)據(jù)層則是指數(shù)據(jù)存儲(chǔ)、封裝以及調(diào)用的功能層次。
圖1 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全訪問(wèn)系統(tǒng)的架構(gòu)設(shè)計(jì)示意圖
3.2 系統(tǒng)的訪問(wèn)策略設(shè)計(jì)
首先,針對(duì)用戶端,系統(tǒng)必須提供友好的交互界面。本文研究的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全訪問(wèn)系統(tǒng)是基于Windows環(huán)境的,借助于.NET實(shí)現(xiàn)用戶端的認(rèn)證,并提供規(guī)范化的用戶輸入驗(yàn)證。系統(tǒng)的服務(wù)器端會(huì)實(shí)時(shí)接受用戶端的請(qǐng)求,并做出響應(yīng)。此外,系統(tǒng)還對(duì)用戶輸入信息進(jìn)行有效過(guò)濾,可以避免網(wǎng)絡(luò)上的一些惡意代碼進(jìn)行SQL形式的注入。
其次,系統(tǒng)數(shù)據(jù)流不僅包括數(shù)據(jù)本身,還包含密碼及連接字符串等信息,如果不進(jìn)行相關(guān)處理而直接在網(wǎng)絡(luò)上進(jìn)行傳輸?shù)脑挘菀自斐尚畔⒌男孤?,可?jiàn),對(duì)系統(tǒng)數(shù)據(jù)流進(jìn)行加密還是非常有必要的。
另外,面向角色的安全訪問(wèn)機(jī)制也是系統(tǒng)安全策略的重要組成部分,可以借助于認(rèn)證服務(wù)器完成。該認(rèn)證服務(wù)器涉及到業(yè)務(wù)邏輯以及數(shù)據(jù)庫(kù)認(rèn)證授權(quán)等。只有被認(rèn)證服務(wù)器認(rèn)證通過(guò),并授權(quán)的用戶才可以進(jìn)行數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)等操作。
4.網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全的實(shí)現(xiàn)
4.1 系統(tǒng)表示層
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全訪問(wèn)系統(tǒng)的表示層是系統(tǒng)的第一屏障,負(fù)責(zé)用戶信息的接收、過(guò)濾以及提交等。表示層主要是借助于窗體進(jìn)行呈現(xiàn),以樹狀列表顯示用戶名及其對(duì)應(yīng)的角色,涉及到:用戶登陸ID、用戶名、登錄時(shí)間以及相關(guān)權(quán)限等。系統(tǒng)表示層中窗體認(rèn)證的設(shè)計(jì)如下描述:
(1)用戶發(fā)出一個(gè)數(shù)據(jù)庫(kù)連接請(qǐng)求,Internet信息服務(wù)允許該數(shù)據(jù)庫(kù)連接請(qǐng)求,并由.NET對(duì)
(2)系統(tǒng)針對(duì)用戶提供的用戶名及密碼,根據(jù)數(shù)據(jù)庫(kù)中相關(guān)信息進(jìn)行匹配驗(yàn)證,如驗(yàn)證通過(guò)即分配對(duì)應(yīng)角色。同時(shí),創(chuàng)建Cookie并反饋給用戶端。這個(gè)時(shí)候,可以先將角色暫存在對(duì)應(yīng)的數(shù)據(jù)字段中,可以防止該用戶后續(xù)發(fā)出的數(shù)據(jù)庫(kù)連接請(qǐng)求時(shí),重復(fù)獲取該角色。
(3)當(dāng)用戶被重定向到最初界面的時(shí)候,事件處理程序就會(huì)創(chuàng)建對(duì)象Iprinicipal,并將該對(duì)象保存在Http Context中。最終,用戶就根據(jù)角色分配登錄不同的界面進(jìn)行數(shù)據(jù)庫(kù)的相關(guān)操作。
另外,系統(tǒng)表示層中涉及到了SQL注入式攻擊的防范設(shè)計(jì)。本系統(tǒng)在進(jìn)行SQL語(yǔ)句以及存儲(chǔ)過(guò)程調(diào)用的時(shí)候,直接使用Parameters集合,這樣可以有效實(shí)現(xiàn)不管用戶輸入何字符,都可以視為文本進(jìn)行處理,且能夠?qū)ψ址M(jìn)行類型以及長(zhǎng)度方面的檢查,有不合格字符值時(shí)還可以觸發(fā)異常。但需要注意的是,當(dāng)SQL代碼有異常出現(xiàn)時(shí),不是直接將SQL錯(cuò)誤呈現(xiàn)給用戶表示層,而是應(yīng)該由系統(tǒng)記錄下錯(cuò)誤信息,并給用戶一些友好的提示信息即可,這樣可以避免系統(tǒng)一些細(xì)節(jié)信息的暴露,給攻擊者提供途徑。
4.2 系統(tǒng)數(shù)據(jù)訪問(wèn)層
數(shù)據(jù)訪問(wèn)主要是加密解密以及認(rèn)證授權(quán)。其中,需要進(jìn)行加密解密處理的數(shù)據(jù)有三種:連接數(shù)據(jù)庫(kù)的字符串、用戶密碼、需驗(yàn)證的用戶輸入信息。本系統(tǒng)通過(guò)Secret類中的Encrypt對(duì)相關(guān)數(shù)據(jù)信息進(jìn)行加密,并將密文傳遞到后端認(rèn)證服務(wù)器。認(rèn)證服務(wù)器對(duì)于信息的加密是根據(jù)哈希算法實(shí)現(xiàn)的,直接調(diào)用Compute Hash方法對(duì)信息參數(shù)進(jìn)行哈希計(jì)算,并結(jié)合隨機(jī)數(shù)填充數(shù)組后進(jìn)行返回。算法流程如圖2所示:
這個(gè)權(quán)限撤銷的存儲(chǔ)過(guò)程也是只能由管理員權(quán)限的用戶才能直接調(diào)用,主要實(shí)現(xiàn)角色對(duì)應(yīng)權(quán)限的刪除。用戶先調(diào)用系統(tǒng)自身的存儲(chǔ)過(guò)程,其次撤銷角色對(duì)應(yīng)的操作權(quán)限,然后再將認(rèn)證數(shù)據(jù)庫(kù)上的Role-Right表上刪除相關(guān)記錄即可。
5.總結(jié)
總之,網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的安全是一個(gè)系統(tǒng)性很強(qiáng)的問(wèn)題,網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的安全策略涉及到:用戶安全訪問(wèn)控制、網(wǎng)絡(luò)安全傳輸、數(shù)據(jù)加密及審計(jì)等。因此,在進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的安全設(shè)計(jì)時(shí),要運(yùn)用立體式的設(shè)計(jì)理念,綜合考慮各方面,不斷地改進(jìn)和完善安全手段,才能提高網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的安全性和可靠性。
參考文獻(xiàn):
[1] 于翔;閻宏印;劉泳.網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全初探[J].科技情報(bào)開(kāi)發(fā)與經(jīng)濟(jì),2007年10期.
[2] 候鵬.試論計(jì)算機(jī)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)安全策略分析[J].硅谷,2009年第18期.