專利名稱:基于數(shù)據(jù)庫的sql注入攻擊防護方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)安全領(lǐng)域,具體涉及一種基于數(shù)據(jù)庫的SQL注入攻擊防護方法。
背景技術(shù):
Web安全紛繁復(fù)雜,危害最嚴重的當屬SQL注入。SQL Injection,中文名稱為“SQL注入”是一種數(shù)據(jù)庫攻擊手段,也是WEB應(yīng)用程序漏洞存 在的一種表現(xiàn)形式,它的實際意義就是利用某些數(shù)據(jù)庫的外部接口把用戶數(shù)據(jù)插入到實際的數(shù)據(jù)庫操作語言當中,從而達到入侵數(shù)據(jù)庫乃至操作系統(tǒng)的目的。SQL Injection的主要形式是,直接將代碼插入與SQL命令串聯(lián)并執(zhí)行的用戶輸入變量中,間接的將惡意代碼注入要在表中存儲或作為元數(shù)據(jù)存儲的字符串,在存儲的字符串隨后串連到一個動態(tài)SQL命令中時,執(zhí)行該惡意代碼?;镜墓羰翘崛缃K止文本字符串,然后追加一個新的命令。由于插入的命令可能在執(zhí)行前追加其他字符串,因此攻擊者將用注釋標記“一”來中止注入的字符串。執(zhí)行時,此后的指令將被忽略.SQL Injection攻擊技術(shù)就其本質(zhì)而言,它利用的工具是SQL的語法,針對的是應(yīng)用程序開發(fā)者編程中的漏洞,當攻擊者能操作數(shù)據(jù),向應(yīng)用程序中插入一些SQL語句時,SQLInjection攻擊就發(fā)生了。實際上,SQL Injection攻擊是存在于常見的多連接的應(yīng)用程序中的一種漏洞,攻擊者通過在應(yīng)用程序預(yù)先定義好的查詢語句結(jié)尾加上額外的SQL語句元素,欺騙數(shù)據(jù)庫服務(wù)器執(zhí)行非授權(quán)的任意查詢。這類應(yīng)用程序一般是Web Application,它允許用戶輸入查詢條件,并將查詢條件嵌入SQL語句中,提交到數(shù)據(jù)庫中執(zhí)行。通過構(gòu)造畸形SQL語句攻擊者能夠獲取額外的信息數(shù)據(jù)。就風險而言,SQL Injection攻擊也是位居前列,和緩沖區(qū)溢出漏洞相比,其優(yōu)勢在于能夠輕易的繞過防火墻直接訪問數(shù)據(jù)庫,甚至能夠獲得數(shù)據(jù)庫所在的服務(wù)器的訪問權(quán)限。在某些環(huán)境下,SQL Injection漏洞的風險要高過其他所有的漏洞。SQL Injection攻擊利用的是SQL語法,這使得這種攻擊具有廣泛性。特點鮮明一、隱蔽性強。利用Web漏洞發(fā)起對WEB應(yīng)用的攻擊紛繁復(fù)雜,包括SQL注入,跨站腳本攻擊等等,一個共同特點是隱蔽性強,不易發(fā)覺,因為一方面普通網(wǎng)絡(luò)防火墻是對HTTP/HTTPS全開放的,另一方面,對Web應(yīng)用攻擊的變化非常多,傳統(tǒng)的基于特征檢測的IDS對此類攻擊幾乎沒有作用。二、攻擊時間短??稍诙潭處酌氲綆追昼妰?nèi)完成一次數(shù)據(jù)竊取、一次木馬種植、完成對整個數(shù)據(jù)庫或Web服務(wù)器的控制,以至于非常困難作出人為反應(yīng)。三、危害性大。目前幾乎所有銀行,證券,電信,移動,政府以及電子商務(wù)企業(yè)都提供在線交易,查詢和交互服務(wù)。用戶的機密信息包括賬戶,個人私密信息(如身份證),交易信息等等,都是通過Web存儲于后臺數(shù)據(jù)庫中,這樣,在線服務(wù)器一旦癱瘓,或雖在正常運行,但后臺數(shù)據(jù)已被篡改或者竊取,都將造成企業(yè)或個人巨大的損失。據(jù)權(quán)威部門統(tǒng)計,目前身份失竊(identity theft)已成為全球最嚴重的問題之一。政府網(wǎng)站被攻擊和篡改造成惡劣的社會影響甚至被外來勢力所利用,已經(jīng)在危害著社會的穩(wěn)定。
四、非常嚴重的有形和無形損失。目前,包括政府以及很多大型企業(yè)尤其是在國內(nèi)外上市的企業(yè),一旦發(fā)生這類安全事件,必將造成人心惶惶,名譽掃地,以致于造成經(jīng)濟和聲譽上的巨大損失,即便不上市,其影響和損失也是不可估量的。對于上述SQL注入的風險,目前行業(yè)內(nèi)絕大多數(shù)的解決方法只是優(yōu)化代碼質(zhì)量或者提高防護水平,并不能從根本上解決SQL注入的問題。申請?zhí)枮?00710099534. 4的中國專利申請公開了一種SQL注入漏洞檢測方法及系統(tǒng),這種方法及系統(tǒng)是基于程序的,其主要功能是在外部數(shù)據(jù)進入SQL數(shù)據(jù)庫之前進行攔截和HTTP包的整合,但這種攔截和整合會對外部訪問產(chǎn)生影響。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于數(shù)據(jù)庫的SQL注入攻擊防護方法,利用硬盤緩存以及底層過濾為整個SQL數(shù)據(jù)庫做一個數(shù)據(jù)安全殼,所有讀取和寫入的SQL代碼必須經(jīng)過數(shù)據(jù)安全殼的過濾,從源頭上解決SQL被注入的風險。 本發(fā)明的技術(shù)方案如下一種基于數(shù)據(jù)庫的SQL注入攻擊防護方法,包括如下步驟(I)為數(shù)據(jù)庫建立數(shù)據(jù)安全殼數(shù)據(jù)安全殼是建立在操作系統(tǒng)層的一個底層驅(qū)動,利用硬盤緩存形成的一個虛擬空間,將數(shù)據(jù)庫加載在這個虛擬空間內(nèi),數(shù)據(jù)安全殼包括端口轉(zhuǎn)向驅(qū)動、過濾驅(qū)動以及管理端;(2)數(shù)據(jù)接管外部數(shù)據(jù)在訪問數(shù)據(jù)庫的時候,首先通過數(shù)據(jù)安全殼,由數(shù)據(jù)安全殼負責外部數(shù)據(jù)與數(shù)據(jù)安全殼內(nèi)部數(shù)據(jù)庫的數(shù)據(jù)交換;(3)數(shù)據(jù)判斷數(shù)據(jù)安全殼的管理端對外部數(shù)據(jù)所來自的地址進行記錄,將首次訪問者的地址記錄在訪問記錄庫中,將訪問者的地址與訪問記錄庫中的地址表進行匹配,對經(jīng)常發(fā)生攻擊行為的地址進行識別;(4)端口接管數(shù)據(jù)安全殼的端口轉(zhuǎn)向驅(qū)動對數(shù)據(jù)庫的端口進行管理,形成到達數(shù)據(jù)庫的過濾通道;(5) SOL指令過濾數(shù)據(jù)安全殼的過濾驅(qū)動對所有訪問數(shù)據(jù)庫的外部數(shù)據(jù)進行過濾,將安全的代碼放行進入數(shù)據(jù)庫,并對惡意的代碼進行過濾和清除。本發(fā)明的有益技術(shù)效果是本發(fā)明通過數(shù)據(jù)安全殼對數(shù)據(jù)庫進行SOL注入防護,利用硬盤緩存的數(shù)據(jù)安全殼類似于一個信息網(wǎng)閘,與HTTP整合和SOL數(shù)據(jù)修正無關(guān),因而本發(fā)明的前提條件是不影響外部訪問。本發(fā)明是基于驅(qū)動過濾的SOL防注入方法,是用底層建立的緩存進行處理和管理,可以有效的做到對SOL注入攻擊行為的合理的管理和對SOL注入風險的規(guī)避。
圖I是本發(fā)明的數(shù)據(jù)安全殼與數(shù)據(jù)庫及操作系統(tǒng)的關(guān)系示意圖。圖2是本發(fā)明的流程圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明的具體實施方式
做進一步說明。如圖I所示,本發(fā)明的數(shù)據(jù)安全殼是一個建立在操作系統(tǒng)層的一個底層驅(qū)動,利用硬盤cache (緩存)做成的一個虛擬空間,將數(shù)據(jù)庫加載在這個空間。外部數(shù)據(jù)在訪問數(shù)據(jù)庫的時候,必須通過該數(shù)據(jù)安全殼,由數(shù)據(jù)安全殼負責數(shù)據(jù)的內(nèi)外交換。如圖2所示,本發(fā)明的基于數(shù)據(jù)庫的SOL注入攻擊防護方法的流程如下( I)為數(shù)據(jù)庫建立數(shù)據(jù)安全殼數(shù)據(jù)安全殼是建立在操作系統(tǒng)層的一個底層驅(qū)動,利用硬盤緩存形成的一個虛擬空間,將數(shù)據(jù)庫加載在這個虛擬空間內(nèi),數(shù)據(jù)安全殼包括端口轉(zhuǎn)向驅(qū)動、過濾驅(qū)動以及管理端;(2)數(shù)據(jù)接管外部數(shù)據(jù)在訪問數(shù)據(jù)庫的時候,首先通過數(shù)據(jù)安全殼,由數(shù)據(jù)安全殼負責外部數(shù)據(jù)與安全殼內(nèi)部數(shù)據(jù)庫的數(shù)據(jù)交換;(3)數(shù)據(jù)判斷
數(shù)據(jù)安全殼的管理端對外部數(shù)據(jù)所來自的地址進行記錄,將首次訪問者的地址記錄在訪問記錄庫中,將訪問者的地址與訪問記錄庫中的地址表進行匹配,對經(jīng)常發(fā)生攻擊行為的地址進行識別;(4)端口接管數(shù)據(jù)安全殼的端口轉(zhuǎn)向驅(qū)動對數(shù)據(jù)庫的端口進行管理,形成到達數(shù)據(jù)庫的過濾通道;(5) SOL指令過濾數(shù)據(jù)安全殼的過濾驅(qū)動對所有訪問數(shù)據(jù)庫的外部數(shù)據(jù)進行過濾,將安全的代碼放行進入數(shù)據(jù)庫,并對惡意的代碼進行過濾和清除。上述的數(shù)據(jù)安全殼的管理端可以對數(shù)據(jù)安全殼的端口轉(zhuǎn)向驅(qū)動和過濾驅(qū)動進行管理,控制過濾驅(qū)動的過濾模式和讀寫行為,并對于數(shù)據(jù)庫經(jīng)常發(fā)生的攻擊行為進行查看。綜上所述,本發(fā)明在裝有數(shù)據(jù)庫的服務(wù)器實施后,所有端口的數(shù)據(jù)都可以按照自己的意圖發(fā)送和接受,并可以對惡意的代碼進行過濾和清除,并帶有訪問記錄庫用于記錄訪問者的地址,有效地預(yù)防SOL注入攻擊造成ddos癱瘓的問題。以上所述的僅是本發(fā)明的優(yōu)選實施方式,本發(fā)明不限于以上實施例??梢岳斫?,本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的基本構(gòu)思的前提下直接導(dǎo)出或聯(lián)想到的其他改進和變化,均應(yīng)認為包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種基于數(shù)據(jù)庫的SOL注入攻擊防護方法,其特征在于包括如下步驟 (1)為數(shù)據(jù)庫建立數(shù)據(jù)安全殼 數(shù)據(jù)安全殼是建立在操作系統(tǒng)層的一個底層驅(qū)動,利用硬盤緩存形成的一個虛擬空間,將數(shù)據(jù)庫加載在這個虛擬空間內(nèi),數(shù)據(jù)安全殼包括端口轉(zhuǎn)向驅(qū)動、過濾驅(qū)動以及管理端; (2)數(shù)據(jù)接管 外部數(shù)據(jù)在訪問數(shù)據(jù)庫的時候,首先通過數(shù)據(jù)安全殼,由數(shù)據(jù)安全殼負責外部數(shù)據(jù)與數(shù)據(jù)安全殼內(nèi)部數(shù)據(jù)庫的數(shù)據(jù)交換; (3)數(shù)據(jù)判斷 數(shù)據(jù)安全殼的管理端對外部數(shù)據(jù)所來自的地址進行記錄,將首次訪問者的地址記錄在訪問記錄庫中,將訪問者的地址與訪問記錄庫中的地址表進行匹配,對經(jīng)常發(fā)生攻擊行為的地址進行識別; (4)端口接管 數(shù)據(jù)安全殼的端口轉(zhuǎn)向驅(qū)動對數(shù)據(jù)庫的端口進行管理,形成到達數(shù)據(jù)庫的過濾通道; (5)SOL指令過濾 數(shù)據(jù)安全殼的過濾驅(qū)動對所有訪問數(shù)據(jù)庫的外部數(shù)據(jù)進行過濾,將安全的代碼放行進入數(shù)據(jù)庫,并對惡意的代碼進行過濾和清除。
2.根據(jù)權(quán)利要求I所述基于數(shù)據(jù)庫的SOL注入攻擊防護方法,其特征在于所述數(shù)據(jù)安全殼的管理端對數(shù)據(jù)安全殼的端口轉(zhuǎn)向驅(qū)動和過濾驅(qū)動進行管理,控制過濾驅(qū)動的過濾模式和讀寫行為,并對于數(shù)據(jù)庫經(jīng)常發(fā)生的攻擊行為進行查看。
全文摘要
本發(fā)明提供一種基于數(shù)據(jù)庫的SOL注入攻擊防護方法,在操作系統(tǒng)層建立一個底層驅(qū)動數(shù)據(jù)安全殼,利用硬盤緩存形成一個虛擬空間,將數(shù)據(jù)庫加載在這個虛擬空間內(nèi),外部數(shù)據(jù)在訪問數(shù)據(jù)庫的時候,首先通過數(shù)據(jù)安全殼,由數(shù)據(jù)安全殼負責外部數(shù)據(jù)與數(shù)據(jù)安全殼內(nèi)部數(shù)據(jù)庫的數(shù)據(jù)交換;數(shù)據(jù)安全殼的管理端對外部數(shù)據(jù)所來自的地址進行記錄,數(shù)據(jù)安全殼的端口轉(zhuǎn)向驅(qū)動形成到達數(shù)據(jù)庫的過濾通道,數(shù)據(jù)安全殼的過濾驅(qū)動對所有訪問數(shù)據(jù)庫的外部數(shù)據(jù)進行過濾,將安全的代碼放行進入數(shù)據(jù)庫,并對惡意的代碼進行過濾和清除。本發(fā)明可以從源頭上解決SOL注入的風險。
文檔編號G06F21/00GK102750483SQ201210210140
公開日2012年10月24日 申請日期2012年6月21日 優(yōu)先權(quán)日2012年6月21日
發(fā)明者王衍江, 耿振民 申請人:無錫華御信息技術(shù)有限公司