Sql注入攻擊安全防護(hù)方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種SQL注入攻擊安全防護(hù)方法和系統(tǒng)。
【背景技術(shù)】
[0002]SQL注入攻擊會(huì)嚴(yán)重影響Web的安全和正常運(yùn)行,SQL注入攻擊是一種數(shù)據(jù)庫(kù)攻擊手段,攻擊者通過(guò)SQL注入攻擊,可以達(dá)到諸如網(wǎng)站掛馬、網(wǎng)頁(yè)篡改、信息盜取和滲透內(nèi)網(wǎng)等非法目的。
[0003]針對(duì)SQL注入攻擊,存在專用的SQL注入攻擊防火墻(Web Applicat1nFirewalI,簡(jiǎn)稱WAF),可以在SQL語(yǔ)句查詢請(qǐng)求到達(dá)真正的數(shù)據(jù)庫(kù)系統(tǒng)之前對(duì)其進(jìn)行分析、檢測(cè)和過(guò)濾,以達(dá)到保護(hù)數(shù)據(jù)庫(kù)中的用戶數(shù)據(jù)不被竊取的目的。相比在前端應(yīng)用中加入對(duì)用戶的輸入字符進(jìn)行靜態(tài)檢測(cè)的方法,專用的SQL注入攻擊防火墻不僅減輕了前端應(yīng)用開(kāi)發(fā)人員的工作負(fù)擔(dān),也可以提供過(guò)濾規(guī)則統(tǒng)一管理和升級(jí),形成一套專業(yè)及可維護(hù)的SQL注入攻擊安全防范策略,例如:自動(dòng)SQL語(yǔ)句學(xué)習(xí)等。
[0004]傳統(tǒng)的SQL注入攻擊安全防護(hù)方法中,通常是將數(shù)據(jù)庫(kù)系統(tǒng)和WAF獨(dú)立安裝在兩個(gè)計(jì)算節(jié)點(diǎn)上,這樣具有較好的安全性,但是由于網(wǎng)絡(luò)傳輸速率的限制,該方案不能給前端應(yīng)用提供足夠的數(shù)據(jù)庫(kù)性能支持,而且對(duì)硬件的開(kāi)銷很大。另一方面,若把數(shù)據(jù)庫(kù)系統(tǒng)和WAF安裝在同一個(gè)計(jì)算節(jié)點(diǎn)中,理論上WAF和數(shù)據(jù)庫(kù)之間的交換性能可以達(dá)到進(jìn)程通信級(jí)另IJ,但是該方案不能保障數(shù)據(jù)庫(kù)的安全性,一旦WAF被攻破,數(shù)據(jù)庫(kù)則被完全暴露給黑客。
【發(fā)明內(nèi)容】
[0005]基于此,有必要針對(duì)上述技術(shù)問(wèn)題,提供一種既能保證安全性又能提高WAF和數(shù)據(jù)庫(kù)之間的通信效率的SQL注入攻擊安全防護(hù)方法和系統(tǒng)。
[0006]一種SQL注入攻擊安全防護(hù)方法,所述方法包括:
[0007]通過(guò)WAF虛擬機(jī)對(duì)接收到的SQL語(yǔ)句查詢請(qǐng)求進(jìn)行安全檢測(cè);
[0008]將通過(guò)安全檢測(cè)的SQL語(yǔ)句查詢請(qǐng)求傳輸?shù)綌?shù)據(jù)庫(kù)虛擬機(jī),并根據(jù)所述SQL語(yǔ)句查詢請(qǐng)求對(duì)所述數(shù)據(jù)庫(kù)虛擬機(jī)上運(yùn)行的數(shù)據(jù)庫(kù)進(jìn)行操作;
[0009]其中,所述WAF虛擬機(jī)上運(yùn)行WAF,和所述數(shù)據(jù)庫(kù)虛擬機(jī)是同一計(jì)算節(jié)點(diǎn)上的不同虛擬機(jī)。
[0010]一種SQL注入攻擊安全防護(hù)系統(tǒng),所述系統(tǒng)包括:
[0011 ] WAF虛擬機(jī),用于通過(guò)WAF對(duì)接收到的SQL語(yǔ)句查詢請(qǐng)求進(jìn)行安全檢測(cè);
[0012]數(shù)據(jù)庫(kù)虛擬機(jī),用于運(yùn)行數(shù)據(jù)庫(kù);
[0013]所述WAF虛擬機(jī)還用于將通過(guò)安全檢測(cè)的SQL語(yǔ)句查詢請(qǐng)求傳輸?shù)剿鰯?shù)據(jù)庫(kù)虛擬機(jī),并根據(jù)所述SQL語(yǔ)句查詢請(qǐng)求對(duì)所述數(shù)據(jù)庫(kù)虛擬機(jī)上運(yùn)行的數(shù)據(jù)庫(kù)進(jìn)行操作;
[0014]其中,所述WAF虛擬機(jī)和所述數(shù)據(jù)庫(kù)虛擬機(jī)是同一計(jì)算節(jié)點(diǎn)上的不同虛擬機(jī)。
[0015]上述SQL注入攻擊安全防護(hù)方法和系統(tǒng),通過(guò)WAF對(duì)接收到的SQL語(yǔ)句查詢請(qǐng)求進(jìn)行安全檢測(cè),將通過(guò)安全檢測(cè)的SQL語(yǔ)句查詢請(qǐng)求傳輸?shù)綌?shù)據(jù)庫(kù),并根據(jù)該查詢請(qǐng)求對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,雖然WAF和數(shù)據(jù)庫(kù)位于同一個(gè)計(jì)算機(jī)節(jié)點(diǎn)上,但由于WAF和數(shù)據(jù)庫(kù)運(yùn)行在不同虛擬機(jī)中,虛擬機(jī)之間的隔離性能保證較好的安全性,而虛擬機(jī)之間的通信相對(duì)于兩個(gè)計(jì)算機(jī)節(jié)點(diǎn)之間的通信也快很多。因此,該方法和系統(tǒng)既能保證安全性又能提高WAF和數(shù)據(jù)庫(kù)之間的通信效率。
【附圖說(shuō)明】
[0016]圖1為一個(gè)實(shí)施例中SQL注入攻擊安全防護(hù)方法的流程圖;
[0017]圖2為一個(gè)實(shí)施例中WAF虛擬機(jī)與數(shù)據(jù)庫(kù)虛擬機(jī)進(jìn)行通信的流程圖;
[0018]圖3為一個(gè)實(shí)施例中WAF虛擬機(jī)和數(shù)據(jù)庫(kù)虛擬機(jī)進(jìn)行通信的架構(gòu)圖;
[0019]圖4為一個(gè)實(shí)施例中為數(shù)據(jù)庫(kù)虛擬機(jī)分配磁盤(pán)空間的流程圖;
[0020]圖5為一個(gè)實(shí)施例中針對(duì)數(shù)據(jù)庫(kù)虛擬機(jī)進(jìn)行磁盤(pán)優(yōu)化的架構(gòu)圖;
[0021]圖6為一個(gè)實(shí)施例中SQL注入攻擊安全防護(hù)系統(tǒng)的結(jié)構(gòu)框圖;
[0022]圖7為另一個(gè)實(shí)施例中SQL注入攻擊安裝防護(hù)系統(tǒng)的結(jié)構(gòu)框圖;
[0023]圖8為一個(gè)實(shí)施例中針對(duì)數(shù)據(jù)庫(kù)虛擬機(jī)進(jìn)行磁盤(pán)優(yōu)化的架構(gòu)圖;
[0024]圖9為一個(gè)實(shí)施例中計(jì)算節(jié)點(diǎn)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0025]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0026]如圖1所示,在一個(gè)實(shí)施例中,提供了一種SQL注入攻擊安全防護(hù)方法,該方法包括:
[0027]步驟102,通過(guò)WAF虛擬機(jī)對(duì)接收到的SQL語(yǔ)句查詢請(qǐng)求進(jìn)行安全檢測(cè)。
[0028]WAF虛擬機(jī)是指運(yùn)行WAF的虛擬機(jī),預(yù)先在計(jì)算節(jié)點(diǎn)上部署多個(gè)虛擬機(jī),其中一個(gè)虛擬機(jī)用來(lái)運(yùn)行WAF。所謂虛擬機(jī),是指通過(guò)軟件模擬的具有完整硬件系統(tǒng)功能,運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng)。
[0029]本實(shí)施例中,WAF虛擬機(jī)可采用傳統(tǒng)的過(guò)濾算法對(duì)SQL語(yǔ)句查詢請(qǐng)求進(jìn)行過(guò)濾,通過(guò)安全檢測(cè)的SQL語(yǔ)句查詢請(qǐng)求認(rèn)為是安全的,可用來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。
[0030]步驟104,將通過(guò)安全檢測(cè)的SQL語(yǔ)句查詢請(qǐng)求傳輸?shù)綌?shù)據(jù)庫(kù)虛擬機(jī),并根據(jù)該SQL語(yǔ)句查詢請(qǐng)求對(duì)數(shù)據(jù)庫(kù)虛擬機(jī)上運(yùn)行的數(shù)據(jù)庫(kù)進(jìn)行操作。
[0031]數(shù)據(jù)庫(kù)虛擬機(jī)是運(yùn)行數(shù)據(jù)庫(kù)的虛擬機(jī),在一個(gè)計(jì)算節(jié)點(diǎn)上可部署多個(gè)數(shù)據(jù)庫(kù)虛擬機(jī)。WAF虛擬機(jī)可通過(guò)虛擬機(jī)之間的通信和數(shù)據(jù)傳輸方法將SQL語(yǔ)句查詢請(qǐng)求傳輸?shù)綌?shù)據(jù)庫(kù)虛擬機(jī)。比如,可采用傳統(tǒng)的虛擬機(jī)網(wǎng)絡(luò)的方式。在一個(gè)優(yōu)選的實(shí)施例中,還可采用基于QEMU虛擬設(shè)備的域間數(shù)據(jù)傳輸系統(tǒng)來(lái)實(shí)現(xiàn)WAF虛擬機(jī)和數(shù)據(jù)庫(kù)虛擬機(jī)之間的通信,該系統(tǒng)采用域間共享內(nèi)存的方法進(jìn)行,支持域間雙向數(shù)據(jù)傳輸。進(jìn)一步的,根據(jù)SQL語(yǔ)句查詢請(qǐng)求對(duì)數(shù)據(jù)庫(kù)虛擬機(jī)上運(yùn)行的數(shù)據(jù)庫(kù)進(jìn)行的操作,包括讀操作和寫(xiě)操作等。
[0032]本實(shí)施例中,WAF虛擬機(jī)和數(shù)據(jù)庫(kù)虛擬機(jī)是同一計(jì)算節(jié)點(diǎn)上的不同虛擬機(jī)。本實(shí)施例中,在同一個(gè)計(jì)算節(jié)點(diǎn)上配置至少兩個(gè)虛擬機(jī),其中一個(gè)虛擬機(jī)運(yùn)行WAF,另至少一個(gè)虛擬機(jī)運(yùn)行數(shù)據(jù)庫(kù)。運(yùn)行WAF的虛擬機(jī)稱之為WAF虛擬機(jī),運(yùn)行數(shù)據(jù)庫(kù)的虛擬機(jī)稱之為數(shù)據(jù)庫(kù)虛擬機(jī),計(jì)算節(jié)點(diǎn)接收到SQL語(yǔ)句查詢請(qǐng)求時(shí),通過(guò)WAF虛擬機(jī)上運(yùn)行的WAF對(duì)接收到的SQL語(yǔ)句查詢請(qǐng)求進(jìn)行安全檢測(cè),過(guò)濾掉不安全的請(qǐng)求,將通過(guò)安全檢測(cè)的SQL語(yǔ)句查詢請(qǐng)求傳輸?shù)綌?shù)據(jù)庫(kù)虛擬機(jī),根據(jù)SQL語(yǔ)句查詢請(qǐng)求對(duì)數(shù)據(jù)庫(kù)虛擬機(jī)上運(yùn)行的數(shù)據(jù)庫(kù)進(jìn)行操作,例如讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù)或者向數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)等。由于WAF和數(shù)據(jù)庫(kù)分別運(yùn)行在同一個(gè)計(jì)算節(jié)點(diǎn)中的不同虛擬機(jī)上,虛擬機(jī)之間的隔離性保證了較好的安全性,而虛擬機(jī)之間的通信相對(duì)于不同計(jì)算節(jié)點(diǎn)之間的通信更快,因此該方法既能保證安全性又能提高WAF和數(shù)據(jù)庫(kù)之間的通信效率。
[0033]在一個(gè)實(shí)施例中,WAF虛擬機(jī)與數(shù)據(jù)庫(kù)虛擬機(jī)之間通過(guò)QEMU虛擬設(shè)備提供的通信通道進(jìn)行數(shù)據(jù)通信。
[0034]本實(shí)施例中,基于QEMU ( 一套以GPL許可證分發(fā)源碼的模擬處理器)虛擬設(shè)備可建立一個(gè)域間數(shù)據(jù)傳輸系統(tǒng),采用域間共享內(nèi)存的方式,支持域間雙向數(shù)據(jù)傳輸。QEMU虛擬設(shè)備可掛載在虛擬PCI (Peripheral Component Interconnect,外設(shè)部件互聯(lián)標(biāo)準(zhǔn))總線上,為WAF虛擬機(jī)和數(shù)據(jù)庫(kù)虛擬機(jī)提供一套設(shè)備抽象接口用于數(shù)據(jù)通信,這些設(shè)備抽象接口提供WAF虛擬機(jī)和數(shù)據(jù)庫(kù)虛擬機(jī)之間的通信通道,包括控制通道和數(shù)據(jù)通道,其中控制通道用來(lái)進(jìn)行控制信號(hào)的傳輸,數(shù)據(jù)通道用來(lái)進(jìn)行數(shù)據(jù)的傳輸。
[0035]具體的,在一個(gè)實(shí)施例中,WAF虛擬機(jī)與數(shù)據(jù)庫(kù)虛擬機(jī)之間通過(guò)QEMU虛擬機(jī)提供的通信通道進(jìn)行數(shù)據(jù)通信的步驟包括:WAF虛擬機(jī)或數(shù)據(jù)庫(kù)虛擬機(jī)作為發(fā)送端虛擬機(jī)通過(guò)通信通道向主機(jī)傳遞數(shù)據(jù)請(qǐng)求,其中數(shù)據(jù)請(qǐng)求中攜帶接收數(shù)據(jù)請(qǐng)求的接收端虛擬機(jī)的標(biāo)識(shí);主機(jī)通過(guò)通信通道,根據(jù)接收端虛擬機(jī)的標(biāo)識(shí)將數(shù)據(jù)請(qǐng)求傳遞到接收端虛擬機(jī)。其中,接收端虛擬機(jī)是WAF虛擬機(jī)或數(shù)據(jù)庫(kù)虛擬機(jī)中作為接收端的虛擬機(jī)。
[0036]主機(jī)相對(duì)于虛擬機(jī)而言,可以是host (主機(jī)或宿主,在多機(jī)系統(tǒng)中起主要作用和控制作用的計(jì)算機(jī)系統(tǒng))或VMM(Virtual Machine Monitor,虛擬機(jī)管理器)。在主機(jī)中設(shè)置虛擬機(jī)管理程序