国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SQL注入式攻擊下的數(shù)據(jù)庫安全

2021-04-25 14:05史旭寧姜楠蔣青山
電腦知識與技術(shù) 2021年9期
關(guān)鍵詞:數(shù)據(jù)加密身份認(rèn)證數(shù)據(jù)庫安全

史旭寧 姜楠 蔣青山

摘要:隨著數(shù)據(jù)庫技術(shù)和網(wǎng)絡(luò)技術(shù)的迅速成長,數(shù)據(jù)庫已經(jīng)應(yīng)用到各行各業(yè),同時,數(shù)據(jù)的安全問題也隨之推上浪尖。本文將從應(yīng)用的角度出發(fā),論述了SQL Server安全措施;同時,本文對SQL注入式攻擊的原理、步驟、危害進(jìn)行必要講解,并著重闡述對SQL注入式攻擊的防范措施。

關(guān)鍵詞:數(shù)據(jù)庫安全;SQL注入;身份認(rèn)證;數(shù)據(jù)加密;字符規(guī)范

中圖分類號:TP311? ? ? 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2021)09-0025-02

開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):

1 緒論

隨著數(shù)據(jù)庫和網(wǎng)絡(luò)技術(shù)的迅速成長,數(shù)據(jù)庫已經(jīng)應(yīng)用到各行各業(yè),所謂的“模式”也隨之發(fā)生變化,就當(dāng)下而言,最為主流的模式便是Web前臺加后臺服務(wù)器的模式。后臺服務(wù)器最核心的部分當(dāng)屬后臺數(shù)據(jù)庫,故一個服務(wù)器的Web服務(wù)器是否安全,很大程度上取決于Web端的安全控制,以及數(shù)據(jù)庫的安全檢測與防護(hù)。盡管開發(fā)者早已認(rèn)識到這一點(diǎn),但數(shù)據(jù)庫攻擊的案例卻屢見不鮮:從互聯(lián)網(wǎng)剛興起時雅虎的數(shù)據(jù)泄漏,到2011年CSDN的用戶信息被盜,再到“12306”的數(shù)據(jù)泄漏等等。這一切都在告訴我們:web服務(wù)器的安全還是要不斷提升。

2 數(shù)據(jù)庫的安全機(jī)制

數(shù)據(jù)庫的安全機(jī)制一般需要滿足三方面要求:首先,需要滿足數(shù)據(jù)庫、數(shù)據(jù)語義、操作等方面的完整性;其次,數(shù)據(jù)庫授權(quán)了用戶才能獲得數(shù)據(jù)、并且對用戶的行為進(jìn)行記錄,審計;再次, 數(shù)據(jù)庫授權(quán)用戶對數(shù)據(jù)獲取和各種操作[1]。此安全機(jī)制包含以下6項內(nèi)容:

2.1身份認(rèn)證

身份認(rèn)證是數(shù)據(jù)庫管理系統(tǒng)提供的第一道保護(hù)屏障,這個證明形式不是唯一的,有著多樣性,比如動態(tài)口令鑒別,靜態(tài)口令鑒別,數(shù)字證書鑒別, 生物特征鑒別,智能卡識別等。

2.2訪問控制

訪問控制是數(shù)據(jù)庫安全中的核心技術(shù),主要指訪問主體對訪問客體權(quán)限的定義,并將其登記到數(shù)據(jù)字典中進(jìn)行合法權(quán)限的檢查,主要有登錄權(quán)限、確定訪問權(quán)限以及操作權(quán)限3個部分[2]。

2.3系統(tǒng)文件

作為數(shù)據(jù)庫系統(tǒng)的運(yùn)行平臺,操作系統(tǒng)(OS)為數(shù)據(jù)庫系統(tǒng)提供著安全保護(hù),相反,因?yàn)閿?shù)據(jù)庫以文件的形式存在于操作系統(tǒng)中,而且操作系統(tǒng)自身的安全配置和漏洞也會引發(fā)不安全事件,入侵者也會因?yàn)镺S的原因竊取或篡改數(shù)據(jù)庫文件和數(shù)據(jù),所以,使用安全性高一些的系統(tǒng),對OS進(jìn)行安全配置和系統(tǒng)修補(bǔ),加強(qiáng)OS的安全管理,對其用戶管理和權(quán)限進(jìn)行合理分配,也是數(shù)據(jù)庫管理系統(tǒng)安全機(jī)制管理手段之一[3]。

2.4數(shù)據(jù)庫加密

數(shù)據(jù)庫的加密包含加密保護(hù)存儲的敏感數(shù)據(jù),以及加密保護(hù)傳輸過程來控制非法訪問,從而數(shù)據(jù)庫的加密包含加密保護(hù)存儲的敏感數(shù)據(jù),以及加密保護(hù)傳輸過程來控制非法訪問[4],加密過程首先是將明文數(shù)據(jù)通過使用加密技術(shù)加密成密文數(shù)據(jù),查詢時,進(jìn)行逆向操作,又將密文數(shù)據(jù)去掉解密,還原成明文數(shù)據(jù),這樣即便硬盤丟失也不會擔(dān)心泄密,當(dāng)然成本也隨之提高。

2.5數(shù)據(jù)庫審計

數(shù)據(jù)庫審計包括實(shí)時監(jiān)控數(shù)據(jù)庫,記錄各類操作行為的機(jī)制,數(shù)據(jù)庫審計能夠跟蹤、定位, 及時發(fā)現(xiàn)數(shù)據(jù)庫系統(tǒng)的異常使用,阻斷各類違規(guī)操作,總之,管理人員可以通過數(shù)據(jù)庫審計得到有效的預(yù)警機(jī)制和行為記錄。

2.6.備份和恢復(fù)

任何一個數(shù)據(jù)庫系統(tǒng)總是避免不了會發(fā)生故障,所以,定期對數(shù)據(jù)庫進(jìn)行備份是非常必要的,為了提高數(shù)據(jù)恢復(fù)的概率,可以將數(shù)據(jù)保存在多個存儲設(shè)備中,并將最初的數(shù)據(jù)文件進(jìn)行備份。

3 SQL注入式攻擊

SQL注入式攻擊,簡單地說就是利用程序漏洞,繞過程序的權(quán)限,將SQL命令插入到頁面請求的查詢字符串或者輸入域進(jìn)行攻擊,結(jié)果是輕則獲得敏感信息和數(shù)據(jù),重則控制服務(wù)器。

圖1是典型的SQL注入式攻擊圖:

3.1攻擊原理

SQL注入式攻擊有直接攻擊法和間接攻擊法兩種,前者是直接將代碼插入到用戶輸入變量,該變量與SQL命令串聯(lián)在一起,故稱之為直接攻擊法;后者是將惡意代碼注入字符串中,該字符串存于表中并連接動態(tài)SQL命令來執(zhí)行惡意SQL代碼[5]。

下面將再現(xiàn)一個最簡單的登錄頁面 login.asp ,源代碼如圖2所示:

登錄驗(yàn)證腳本checkuser.asp如圖3所示:

此 Web 網(wǎng)站用戶欄若輸入sysop'and 1=1--,則在 checkuser.asp 中, “--”為注釋語句。SQL 語句中已經(jīng)正確放入輸入的 SQL 條件并執(zhí)行,最終獲取到自己想要的各種信息。

3.2 攻擊步驟

3.2.1 SQL注入漏洞的判斷

首先,定期查看IIS日志中的文件信息,如果IIS中的日志數(shù)量持續(xù)增加,就有SQL注入攻擊的可能;其次,如果數(shù)據(jù)庫出現(xiàn)一些含有大量外來信息的臨時的表格,而且這些表格與我們平時的表格有不同的結(jié)構(gòu),這也是受到SQL注入攻擊的一種現(xiàn)象;最后,可以依據(jù)檢驗(yàn)用戶輸入的數(shù)據(jù)等信息進(jìn)行判斷。

檢測注入漏洞最簡單的方法是在用戶輸入變量的時候,輸用一個單引號" ' ",比如在登錄時,用戶名填為:1',因?yàn)檫@個額外的單引號,有缺陷的代碼就會結(jié)束當(dāng)前的語句,并返回一個提示報錯的頁面或是數(shù)據(jù)庫錯誤的提示,即說明存在SQL注入漏洞。

SQL注入漏洞通常存在于:

(1) Web表單輸入域;

(2) UOL的一部分SQL查詢中;

(3) 存儲在緩存中的參數(shù),并且這些參數(shù)要回傳給服務(wù)器;

(4) 頁面的隱藏字段。

3.2.2收集信息

在SQL進(jìn)一步的攻擊之前,會收集提示的數(shù)據(jù)庫報錯信息、了解目標(biāo)系統(tǒng)的輸出機(jī)制,判斷數(shù)據(jù)庫類型、了解SQL語句、表名、字段名以及查詢方式,用戶的權(quán)限以及數(shù)據(jù)庫和操作系統(tǒng)的交互程度是非常有必要的,然后根據(jù)SQL注入漏洞與數(shù)據(jù)表名、字段名等對數(shù)據(jù)庫進(jìn)行攻擊[6]。

3.2.3提取數(shù)據(jù)

使用“having 1=1”語句枚舉一個表的所有列來獲得數(shù)據(jù)庫的結(jié)構(gòu),獲取了數(shù)據(jù)庫結(jié)構(gòu)便容易讀出表中數(shù)據(jù),如圖4所示:

3.2.4與OS交互的兩種方式

(1)執(zhí)行系統(tǒng)命令;

(2)攻擊者可以通過讀取、配置系統(tǒng)文件來執(zhí)行命令;

3.2.5擴(kuò)大影響

以攻破的主機(jī)作為主陣地,為了擴(kuò)大攻擊范圍,使用“select * from sysservers” 在 MS SQL Server 中可查詢網(wǎng)絡(luò)中的其他主機(jī),然后使用 OPENROWSET 命令入侵其他主機(jī)事輕而易舉的事情。

4 數(shù)據(jù)庫安全防范措施

4.1服務(wù)器安全配置

服務(wù)器的安全設(shè)置可以參見第一章的內(nèi)容。主要從身份認(rèn)證、訪問控制、數(shù)據(jù)庫加密、數(shù)據(jù)庫審計和備份、恢復(fù)等方面考慮。

4.2數(shù)據(jù)加密

對數(shù)據(jù)的加密主要是防止物理性攻擊。在登錄服務(wù)器時可以使用Windows和SQL身份認(rèn)證混合模式,且將登錄名稱、密碼等數(shù)據(jù)加密保存。鑒于有些存儲過程很容易被利用,將不必要的存儲過程刪除, 也是一個防范的措施。

4.3數(shù)據(jù)過濾和字符規(guī)范

4.3.1對于動態(tài)構(gòu)造SQL查詢的場合,可用以下方法

(1)限制查詢數(shù)據(jù)庫賬戶權(quán)限。使用不同賬戶執(zhí)行Query、INSERT、UPDATE或DELETE命令等操作。

(2)替換單引號,為了防止攻擊者修改 SQL 命令的含義,也就是說,把所有單獨(dú)出現(xiàn)的一個單引號換成兩個單引號。

(3)避免輸入或者直接刪除連字符,原因是此類查詢的后面已被注釋,攻擊者只需要取得合法用戶名,就可以輕松獲得訪問權(quán)限。

4.3.2 使用存儲過程來執(zhí)行所有的查詢,數(shù)據(jù)庫的權(quán)限只容許在一定的存儲過程中執(zhí)行

限制用戶可以輸入的字符長度。那么大于這個長度就不被認(rèn)可,這將極大增加數(shù)據(jù)庫安全系數(shù)。

保障合法數(shù)據(jù)。在服務(wù)器端和客戶端分別進(jìn)行數(shù)據(jù)檢查,保障輸入內(nèi)容只包含合法數(shù)據(jù)。

使用參數(shù)化語句并盡可能使用SQL Server數(shù)據(jù)庫自帶的安全參數(shù),數(shù)據(jù)庫工程師在開發(fā)產(chǎn)品時要盡量采用參數(shù)化語句,通過參數(shù)來傳遞這個變量,因?yàn)檩斎氲淖兞坎皇侵苯忧度氲絊QL語句,這種方法可以提升設(shè)定執(zhí)行計劃能夠使用的固定次數(shù),降低了數(shù)據(jù)庫的工作壓力,提高了運(yùn)行效率,對防范SQL注入攻擊起到了重要作用,同時也保護(hù)了用戶的隱私和安全[7]。

5結(jié)束語

在互聯(lián)網(wǎng)高速發(fā)展的背景下, SQL注入已顯然成為B/S系統(tǒng)一個很嚴(yán)重的安全問題。本文對數(shù)據(jù)庫的安全機(jī)制,SQL注入式攻擊原理、攻擊方式、類型做了詳細(xì)闡述,同時重點(diǎn)分析了如何有效防范SQL注入式攻擊,關(guān)于如何防范還有待進(jìn)一步研究探索。

參考文獻(xiàn):

[1] 袁玫,林志英,劉勁松.網(wǎng)絡(luò)數(shù)據(jù)庫應(yīng)用教程[M].北京:人民郵電出版社,2003:13.

[2] 薛玉芳,李潔瓊,李亞軍.數(shù)據(jù)庫安全與防護(hù)性的技術(shù)研究[J].中國新技術(shù)新產(chǎn)品,2011(3):20.

[3] 劉雪梅.基于SQL Server數(shù)據(jù)庫的安全性對策探究[J].電腦編程技巧與維護(hù),2019(9):96-98.

[4] 劉博.數(shù)據(jù)庫加密技術(shù)在WEB平臺的研究與應(yīng)用[D].西安:西安電子科技大學(xué),2007.

[5] 牛方華,楊大哲,劉瑞芳.電力信息系統(tǒng)結(jié)構(gòu)化查詢語言注入攻擊原理及安全防護(hù)[J].山西電力,2014(4):38-40.

[6] 徐嘉銘.SQL注入攻擊原理及在數(shù)據(jù)庫安全中的應(yīng)用[J].電腦編程技巧與維護(hù),2009(18):104-106.

[7] 于雷.SQL數(shù)據(jù)庫注入攻擊的Java Web防御對策[J].電腦迷,2017(22):27.

【通聯(lián)編輯:光文玲】

猜你喜歡
數(shù)據(jù)加密身份認(rèn)證數(shù)據(jù)庫安全
管理信息系統(tǒng)中數(shù)據(jù)庫安全實(shí)現(xiàn)方法
淺談高速公路數(shù)據(jù)庫安全審計
云數(shù)據(jù)存儲安全關(guān)鍵技術(shù)研究
高校數(shù)據(jù)庫安全技術(shù)教學(xué)實(shí)踐探索