999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于模型的Web應用二階SQL注入測試用例集生成①

2020-03-22 07:42:06王維揚
計算機系統(tǒng)應用 2020年8期
關鍵詞:數(shù)據(jù)庫用戶檢測

尤 楓,王維揚,尚 穎

(北京化工大學 信息科學與技術學院,北京 100029)

1 引言

在21 世紀,互聯(lián)網(wǎng)上各種Web 應用隨處可見,它們在為我們提供便利服務的同時也帶來了不同程度的安全隱患.相較于傳統(tǒng)應用,Web 應用因其開發(fā)快捷,部署方便,易于使用等優(yōu)點被眾多企業(yè)所青睞,但也因此具有更多的安全問題.2013年的一篇報導指出在2012年約有22%的網(wǎng)站遭受了安全攻擊[1].SQL 注入漏洞是一種常見Web 安全漏洞,在最近幾年更是成了影響Web 應用安全的主要漏洞之一[2,3].雖然一些腳本語言(如PHP,Java)通過提供參數(shù)化的方法來避免這種漏洞,但是由于一些歷史以及教育上的因素[4],這些漏洞還在持續(xù)的增加.

SQL 注入漏洞可分為兩類,一階SQL 注入漏洞和以二階SQL 注入漏洞為代表的多階SQL 注入漏洞[5].二階SQL 注入漏洞相比于一階SQL 注入漏洞,其注入路徑更加曲折,隱蔽性遠高于一階SQL 注入漏洞,這使得其更加難以檢測,且由于惡意數(shù)據(jù)會被持久性存儲,所以其造成的影響更加惡劣[6].

2004 年二階代碼注入攻擊概念被首次提出[7].在之后的幾年里,盡管對一階代碼注入漏洞的相關研究得到了許多成果,但是對二階代碼注入漏洞的研究卻進展緩慢.2010年,Bau 等對當時主流的黑盒測試工具進行評估,發(fā)現(xiàn)它們并不能檢測出程序中的二階代碼注入漏洞[8].目前針對二階SQL 注入漏洞的檢測主要是采用白盒與灰盒的測試方法,即基于程序的源碼信息來檢測漏洞,如文獻[9–11]中提出的方法.文獻[9]使用對程序源碼進行靜態(tài)分析,獲取污點傳播路徑,將這樣一條數(shù)據(jù)注入點到觸發(fā)點的路徑認定為程序的漏洞.文獻[10]在文獻[9]的基礎上將程序源碼的語義分析與數(shù)據(jù)的存儲狀態(tài)分析相結合,以此來找到二階代碼注入漏洞的污點傳播路徑,并將這種路徑認定為二階代碼注入漏洞.在文獻[11]中,閆璐等針對二階SQL 注入漏洞提出了一種靜態(tài)分析與動態(tài)測試相結合的檢測方法,該方法通過靜態(tài)分析找到源碼中可能存在二階SQL 注入漏洞的SQL 語句和列名,然后通過提交HTTP 請求的方法驗證漏洞.該方法有效地利用了程序內部信息來提高動態(tài)測試的準確性,同時也利用了動態(tài)測試的特性降低了靜態(tài)分析的誤報率.這種基于靜態(tài)分析的漏洞檢測方法,往往依賴于靜態(tài)分析工具設計人員的先驗知識,這就導致在面對具有簡單內部邏輯的應用時,靜態(tài)分析往往能表現(xiàn)出很好的效果,但是在復雜的Web 應用上的表現(xiàn)卻不盡如人意.如今的Web 應用大多使用面向對象的設計思想,大量使用第三方框架以及參數(shù)化的數(shù)據(jù)庫操作,使得現(xiàn)有的白盒與灰盒測試方法很難對這些特性進行分析.

黑盒測試是一種在任何Web 應用上都適用的測試方法,其針對大規(guī)模代碼單元的測試效率要遠高于白盒測試,且在某些場景下測試人員只能采用黑盒的測試方法.但由于對其研究的復雜性,目前對該領域的研究成果較少,還沒有一種能夠可靠且高效檢測二階SQL注入漏洞的方法.雖然文獻[12]提出了一種基于頁面爬蟲的二階代碼注入漏洞檢測方法,該方法對被測網(wǎng)站進行兩次爬取,第一次用于獲取頁面URL 并設置不同類型錨點,第二次則只針對具有存儲錨點的頁面進行爬取,來達到觸發(fā)漏洞的目的.但該方法并未有效地利用二階SQL 注入漏洞的特點,作者雖然表明該方法能夠檢測出二階SQL 注入漏洞,但是在漏洞檢測效果方面卻并未給出更多的實驗結果.隨著模型語言(如UML)、模型驅動技術(MDA)和形式化驗證技術的逐步成熟,以及以測試為中心的軟件開發(fā)技術與方法的興起和應用,基于模型的軟件測試在學術界和工業(yè)界得到越來越多的重視,已成為自動化測試的一個重要研究方向.其中基于模型的Web 應用軟件的測試方法,目前在國內外已有一些研究與進展[13],通過Web 應用模型來生成測試用例是十分高效的且有較好的預期.

本文利用Web 應用的前端模型,通過對二階SQL注入漏洞與前端模型之間關系的深入分析,提出了一種基于客戶端行為模型的測試用例集生成方法(CBMTG),該方法能夠高效地生成檢測二階SQL 注入漏洞的測試用例集.

2 相關技術

2.1 基于CBM的測試用例

在Web 2.0 時代,Ajax 技術被大量應用到Web 應用中,而針對Web 應用漏洞的攻擊是可能發(fā)生在這種Ajax 請求之中的.傳統(tǒng)的Web 應用模型無法準確的對這種Web 應用中的動態(tài)行為進行建模,在本課題組之前的相關研究中,以Web 應用的DOM 結構為基準提出了一種Web 應用的客戶端行為模型(CBM),該模型能夠準確的描述Web 應用的客戶端行為[14].

客戶端的行為模型表示為一個4 元組,其中S表示一個有限的狀態(tài)集合,I表示一個輸入變量的有限集合,O表示輸出變量的有限集合,T是一個遷移的有限集合.S中的每一個成員都是一個狀態(tài),用URL 以及其對應的DOM 結構來表示,I和O中的每一個成員都是一個變量,T中的成員則表示從一個狀態(tài)到另一個狀態(tài)的遷移.T中的每一個遷移t都用一個5 元組表示,其中src,trgt∈S,src表示起始狀態(tài),trgt表示目標狀態(tài),event表示用戶在src狀態(tài)所觸發(fā)的事件,cond表示在觸發(fā)事件event時進行當前的狀態(tài)轉移必須要滿足的條件,act則表示觸發(fā)事件之后web 應用所產生的DOM 操作等行為.在遷移具有輸入時,event還可以表示為event(inputlist),表示當前event需要輸入一組變量inputlist.

對Web 應用CBM 模型的建立在文獻[14]中有詳細描述,如圖1所示展示了一個簡單的CBM 模型,其中每一個節(jié)點表示一個S中的狀態(tài),有向邊ti表示T中的一個遷移,為了表述方便圖中隱去了ti的細節(jié).

圖1 CBM 模型

在針對Web 應用的自動化測試領域,測試用例通常是指一系列的用戶操作的集合,而CBM 中的每一個遷移,都對應于一次用戶操作,故如果一個Web 應用的CBM 模型為M=,則針對該Web 應用的測試用例可以表示為有序集合C=[t1,t2,t3,…,tn],其中ti∈T且滿足ti–1是ti的一個直接前驅遷移.

在本文的研究中,為了降低生成測試用例復雜程度,規(guī)定CBM 一定包含兩個狀態(tài)節(jié)點start和exit,分別表示W(wǎng)eb 應用的起始狀態(tài)和終止狀態(tài).Start 狀態(tài)一般是指Web 應用的主頁或者登錄頁面等;exit 狀態(tài)可以表示用戶登出之后的頁面,也可能表示一個虛擬狀態(tài),指用戶已經(jīng)停止操作.故在本文中,測試用例是指一個在CBM 中使得狀態(tài)從start 轉移到exit的一個遷移集合,并將其稱為從start 到exit的一條路徑.例如,在圖1中,t3,t5,t4,t8這4 條遷移構成的從start 到exit的路徑表示一個測試用例.

2.2 Web 應用二階SQL 注入攻擊

在一階SQL 注入的情景下,用戶輸入的惡意變量被直接拼接到SQL 查詢語句中并更改正常的SQL 語句邏輯.而在二階SQL 注入情形下,注入過程被分為兩個階段,首先用戶輸入的惡意變量會先被存入數(shù)據(jù)庫中,然后在用戶進行第二次請求時,之前存入數(shù)據(jù)庫或文件系統(tǒng)的惡意變量被取出,并被用于構造另一條SQL 語句,此時該SQL 語句的正常邏輯被更改.如代碼1和代碼2 展示了一個Web 應用中添加與更新用戶信息的代碼段中所包含的二階SQL 注入漏洞.

代碼1.addUser.php 1.$link=new mysqli("localhost","root","root");2.$query="INSERT INTO Users VALUES(‘?’,‘?’,‘?’)";3.cmd=cmd=1ink->prepare($qurey);4.cmd?>bindparam("sss",cmd?>bindparam("sss",usemame,$password,$email);5.$cmd->execute();代碼2.updateUser.php 6.$query="SELECT * FROM Users WHERE username=‘?’ AND password=‘?’ ";7.result=mysqlquery(result=mysqlquery(query);8.row=mysqlfetcharray(row=mysqlfetcharray(result);9.usemame=usemame=row["username"];10.email=email=row["email"];11.password=password=_POST["newpwd"];12.$query="UPDATE Users SET username=‘$username’,password=‘$password’,email=‘$emal’ WHERE usemame=‘$username’";13.rs=mysqlquery(rs=mysqlquery(query);

在addUser.php 文件中采用的是預編譯語句來將用戶信息插入數(shù)據(jù)庫中,而非動態(tài)構造SQL 語句.由于DBMS 會通過占位符來編譯SQL 語句,在接受用戶輸入時編譯已經(jīng)完成,惡意數(shù)據(jù)無法改變SQL 語句的執(zhí)行邏輯,所以這種參數(shù)化方法能夠有效的防御一階SQL 注入攻擊.如果將email 輸入為“123’ WHERE 1=(updatexml (1,concat (0x5e24,(select password from admin limit 1),0x5e24),1));-- ”,該惡意數(shù)據(jù)則會被存入數(shù)據(jù)庫的“users”表中.在updateUser.php 文件中,6-8行執(zhí)行數(shù)據(jù)庫查詢語句從users 表中取出用戶信息并保存到內存中,在第12 行利用內存中的用戶信息動態(tài)構建更新用戶信息的SQL 語句,由于之前在數(shù)據(jù)庫中email存入的是惡意數(shù)據(jù),此時構建的SQL 語句為“UPDATE Users SET username=‘XXX’,password=‘XXX’,email=‘123’ WHERE l=(updatexml(1,concat (0x5e24,(select password from admin limit 1),0x5e24),1));--‘WHERE username=‘XXX’”,該條語句會通過錯誤信息暴露admin的密碼,而非更新用戶信息.

3 方法框架

二階SQL 注入漏洞的觸發(fā)至少需要3 條SQL 語句的執(zhí)行,分別對應“存儲”、“取出”、“使用”這3 個過程,在2.2 節(jié)的示例中,2,6和12 行分別對應了這3 條SQL 語句.事實上這個過程也是用戶輸入的數(shù)據(jù)到達程序注入點過程,從“存儲”到“取出”,數(shù)據(jù)在數(shù)據(jù)庫中;而從“取出”到“使用”,數(shù)據(jù)則是在程序的運行內存中.在黑盒條件下,內存中的數(shù)據(jù)流向是未知的,故本文只要求最終的SQL 語句執(zhí)行滿足“存儲”然后“取出”的順序,該執(zhí)行順序也是觸發(fā)二階SQL 注入漏洞的必要條件.為生成具有特定遷移執(zhí)行順序的測試用例集,使得SQL 語句的執(zhí)行順序滿足觸發(fā)漏洞的必要條件,本文提出基于客戶端行為模型的Web 應用二階SQL 注入測試用例集生成方法(CBMTG),該方法的框架如圖2所示.CBMTG 主要由3 部分組成,分別為初始測試用例集生成,拓撲關系圖(Topo 圖)構建和最終的測試用例集生成.

圖2 CBMTG 框架

CBMTG 首先通過對一個初始測試用例集的執(zhí)行來建立遷移與SQL 語句之間的映射關系,然后對遷移對應的SQL 語句進行字段分析以確定遷移之間的依賴關系,并以此為依據(jù)建立遷移之間的Topo 圖,最終以Topo 圖為指導生成最終的測試用例集.

4 二階SQL 注入測試用例集生成

4.1 初始測試用例集

在Web 應用中,用戶進行的每一次操作都能對應到一個后臺DBMS 所執(zhí)行的一個SQL 語句集合.對CBM 中的每一個遷移同樣與SQL 語句之間存在對應關系.本文對這種關系給出如下定義.

定義1.對CBM 中T的每一個遷移t,存在一個單射函數(shù)f,使得f(t)=SQLs.其中SQLs表示執(zhí)行遷移t時DBMS 所有可能執(zhí)行的不同結構的SQL 語句集合.

CBMTG 通過動態(tài)執(zhí)行遷移t來確定其對應的SQLs.為了保證CBM 上的每一個遷移都能建立映射關系f,CBMTG 以CBM的遷移全覆蓋為目標來生成初始的測試用例集.并且,為了獲取到具有正常邏輯的SQL 語句以及保證程序的正常運行,初始測試用例中的輸入采用隨機輸入.

單個測試用例的生成過程是一個遷移選擇的過程,即從CBM的start 節(jié)點開始選擇遷移直到達到exit 節(jié)點.遷移選擇采用貪心算法,即對一個節(jié)點的射出遷移集合,從中優(yōu)先選擇之前被選擇次數(shù)最少的遷移,如果生成的測試用例中所有遷移都在之前生成的測試用例中出現(xiàn)過,則舍棄該測試用例重新生成,直到CBM 中所有遷移都被選擇.

貪心算法是一種求可行解的搜索算法,只要求達到近似最優(yōu)解,相較于其他求全局最優(yōu)解的啟發(fā)式搜索算法,如遺傳算法、粒子群算法等,其更加簡單高效.生成初始測試用例集用以覆蓋到CBM 中所有遷移的問題有多個可行解,本文僅需找到其中之一即可,所以該問題可以通過貪心算法求解.在求解過程中,將問題分解為針對當前節(jié)點的射出遷移選擇問題,使得每一次局部遷移選擇都能夠更加接近遷移的全覆蓋.

算法1是初始測試用例集的生成算法,該算法輸入為CBM 模型,并根據(jù)遷移條件以及遷移的覆蓋情況選擇遷移,輸出為初始測試用例集.

算法1.初始測試用例生成輸入:CBM輸出:測試用例集C 1.Array outgoTran[][]//store all outgoing for each state 2.Array outgoState[]//store all outgoing for each trans 3.Array C=φ;4.while not allcovered(T)do 5.Array transList=φ;6.nextNode=‘start’;7.while nextNode!=‘exit’do 8.nextTrans=selectByTimes(outgoTran[nextNode]);9.transList.push(nextTrans);10.T[nextTrans].coveredTimes+=1;11.nextNode=outgoState[nextTrans];12.end while 13.C.push(transList);14.end while 15.return C.

4.2 遷移依賴關系

在獲取到遷移對應的SQL 語句集合后,由于同一個遷移可能被多次執(zhí)行,所以該集合中可能存在大量冗余的SQL 語句,而通過SQL 語句的解析樹可以判斷這些冗余的SQL 語句.SQL 作為一種結構化的語言,對其解析樹進行分析是一種常見的研究手段,如文獻[15]利用解析樹來檢測SQL 注入攻擊.本文采用文獻[15]對SQL 解析樹的表示方式,將具有相同解析樹結構的SQL 語句判定為相同的SQL 語句,并以此來去除冗余,即對所有具有相同解析樹結構的SQL 語句只保留其中之一,最終得到遷移對應的SQLs.所以SQLs中每一個SQL 語句都不相同.圖3展示了一個SQL 解析樹的例子.在不考慮literal 節(jié)點的子節(jié)點情況下,只要其他節(jié)點相同,則兩個SQL 解析樹結構相同.

圖3 SQL 解析樹

在本文中,SQL 語句為觸發(fā)二階SQL 注入漏洞而需滿足的執(zhí)行順序表示為SQL 語句之間的依賴關系,該依賴關系可通過對其進行字段分析得到.SQL 語句之間的依賴關系定義如下.

定義2.設sql1為操作字段包含a的select 類型SQL語句,如果a為長字符串類型,且存在另一個insert 或update 類型SQL 語句sql2以a作為操作字段,則稱sql1依賴于sql2.

在測試用例集中,遷移是對Web 應用進行操作的最小單位,因為遷移與SQLs之間存在單射關系,即一個遷移對應多個SQL 語句,本文在此基礎上建立遷移之間的依賴關系,使得當所有遷移之間的依賴關系被滿足時,所有SQL 語句之間的依賴關系被滿足,本文定義遷移之間的依賴關系如下.

定義3.設遷移f(t1)中存在SQL 語句sql1,f(t2)中存在SQL 語句sql2,使得sql1依賴于sql2,則稱t1依賴于t2.

例如,遷移t1對應SQLs為{select name from user where id=‘userInput’,update schoolinfo set info=‘userInput’},遷移t2對應SQLs為{insert into user(name)values(‘userInput’),select info from schoolinfo},在該例中遷移t1依賴于t2,同時t2依賴于t1.

在定義2 中,由于數(shù)據(jù)庫中非字符串類型以及短字符串字段無法存儲惡意數(shù)據(jù),所以無需考慮這些類型的數(shù)據(jù)庫字段,字段信息通過查詢information_schema.columns 來獲取.

4.3 Topo 圖生成

CBM 中遷移之間的依賴關系以Topo 圖的形式來表示,Topo 圖定義如下.

定義4.Topo 圖表示為一個二元組,其中N?T,E遷移之間依賴關系的集合,E中每一個元素用二元組表示,thead,ttail∈N.

其中的二元組表示ttail依賴于thead.如圖4所示是圖1的CBM 所相對應的Topo 圖,圖中的節(jié)點表示遷移,邊表示依賴關系.可以看出CBM 中的t2,t5,t6,t7,t8都不在Topo 圖中,這是因為這些遷移都未與其他遷移產生依賴關系.事實上Topo 圖中的每一對依賴關系都表示為了觸發(fā)二階SQL 注入漏洞遷移之間應滿足的執(zhí)行順序.

圖4 Topo 圖

算法2是Topo 圖生成算法的偽代碼.在第5 行,使用開源工具SQL-parser[16]來進行SQL 語句的解析,獲取其屬性字段以及操作類型等(該工具同樣被用于4.2節(jié)的SQL 語句去冗余操作中).因為一個遷移可能對應多個不同類型的SQL 語句,故本文通過storageAttr 來記錄insert和update 操作的字段,usageAttr 來記錄select 操作的字段,然后通過求兩者的交集來求得遷移之間的依賴關系,其對應算法中的16 行.在12 行中先將所有的遷移都放入Topo 圖中,在14–20 行判斷它們的依賴關系,最終在21 行從Topo 圖中刪除不存在任何依賴關系的遷移.

?

4.4 測試用例集生成

為滿足觸發(fā)二階SQL 注入漏洞的必要條件,即使得遷移滿足Topo 圖中的依賴關系,最終的測試用例集需滿足:對Topo 圖中的任意一對依賴關系,在測試用例集中總能找到這兩個遷移使得t1在t2之前執(zhí)行.最終的測試用例集需要遷移之間滿足依賴關系,本文同樣采用貪心算法來選擇遷移,同時為了保證在最壞的情況,即兩個全覆蓋遷移的測試用例集僅能滿足一對遷移依賴關系下有解,在4.1 節(jié)算法的基礎上增加了遷移依賴關系的判斷,在遷移選擇時優(yōu)先選擇被依賴的遷移,以此來找到最終的測試用例集,算法流程如圖5所示.最終的測試用例集是一個測試用例的有序集合,因為數(shù)據(jù)庫中的數(shù)據(jù)是持久存儲的,即各個測試用例的執(zhí)行情況通過數(shù)據(jù)庫相互影響,所以遷移之間只需要在測試用例集上滿足執(zhí)行順序即可.

為了觸發(fā)漏洞,將測試用例上的所有輸入都替換為攻擊向量.一般情況下,Web 應用通常會對用戶輸入進行過濾、進化等操作,這使得輸入的惡意數(shù)據(jù)被應用識別出來而根本不會被執(zhí)行,或者被破壞以致于達不到攻擊的目的,所以需要使用更加隱蔽的攻擊向量.目前對SQL 注入攻擊的攻擊向量進行偽裝的方法一般分為如下幾種:大小寫混合、關鍵詞替換、更改編碼形式、使用注釋、等價函數(shù)與命令、特殊符號、HTTP參數(shù)控制,以及這幾種方式的組合[17,18].在本文的研究中,為了便于攻擊向量的自動生成,攻擊向量的生成規(guī)則以巴科斯范式(BNF)的形式進行表示.

圖5 遷移選擇流程圖

5 實驗評估

為了全方位評估CBMTG 在檢測二階SQL 注入漏洞的能力,本文提出如下兩個研究問題:

(1)CBMTG是否能夠有效地檢測出Web 應用中的二階SQL 注入漏洞,其與當前現(xiàn)有的方法相比效果如何?

(2)CBMTG 使用的Topo 圖是否能有效地指導針對二階SQL 注入漏洞的測試用例集生成?

5.1 實驗對象與環(huán)境配置

本文對如表1所示的4 個開源Web 應用進行了實驗,這些Web 應用均使用PHP 作為后端腳本,并且以MySQL 作為數(shù)據(jù)庫.這些應用都可以從Sourceforge上獲取得到.

表1 被測程序

實驗環(huán)境如下:CPU:Intel(R)Core(TM)i5-3470@3.20Ghz;內存:8 GB DDR3;操作系統(tǒng):Windows10;瀏覽器:Chromever.78;測試用例執(zhí)行工具:Python3.6.4+selenium3.0.1.

5.2 實驗結果

5.2.1 漏洞檢測能力

為了評估文中方法的漏洞檢測能力,本文將CBMTG與文獻[11]中的灰盒方法以及RIPS 工具進行了對比,這兩種方法是目前檢測二階SQL 注入漏洞的主流方法.RIPS是目前僅有的能檢測二階SQL 注入漏洞的代碼審計工具,它來自于文獻[9,10]中的白盒方法.實驗結果如表2所示.

表2 漏洞檢測結果

從表2中可以看出,CBMTG 能比RIPS 以及文獻[11]的方法檢測出更多的二階SQL 注入漏洞.RIPS 使用靜態(tài)分析的方法來檢測漏洞,可以看出其報告的漏洞要遠遠多于真實存在的漏洞.經(jīng)過對程序源碼的分析發(fā)現(xiàn),RIPS 將大量的主鍵數(shù)據(jù)的存取視為二階注入漏洞.同樣從結果中可以看出RIPS 在phpaaCMS和addressbook上檢測效果并不理想,這是因為相比于另外兩個應用,phpaaCMS和addressbook的源碼具有更加復雜結構,嚴重干擾了RIPS的靜態(tài)分析能力.而文獻[11]的方法同樣涉及源碼的靜態(tài)分析過程,由于文獻中并未說明針對復雜源碼結構(比如“類”、“命名空間”)的分析方法,所以本文沒有得到對phpaaCMS 以及addressbook的檢測結果.本文的CBMTG是一種黑盒的檢測方法,所以復雜的程序結構并不會影響方法的檢測結果.我們發(fā)現(xiàn)CBMTG 并未從phpaaCMS 檢測出二階SQL 注入漏洞,這是由于從數(shù)據(jù)庫中查詢出的惡意數(shù)據(jù)并未被用于構建另一個SQL 語句,雖然存在數(shù)據(jù)的“存儲”到“取出”的過程,但是事實上該應用中并不存在二階注入漏洞.

5.2.2 CBMTG 有效性

為了評估遷移Topo 圖對測試用例生成的指導作用,本文在Schoolmate、Webchess、addressbook 等3 個應用上將CBMTG 生成的測試用例集與隨機生成的測試用例集進行對比試驗.其中隨機生成的測試用例集保持與CBMTG 生成測試用例集同樣的大小,且每組隨機試驗都進行了20 次,取平均值作為最終檢測出漏洞個數(shù).

實驗結果如圖6所示.橫軸上括號中的數(shù)字表示單個測試用例集中的測試用例數(shù)量.從圖6中可以看出CBMTG 優(yōu)于隨機的測試用例生成方法,說明CBMTG中使用的Topo 圖確實能夠有效地指導測試用例的生成.同時結合測試用例數(shù)量后發(fā)現(xiàn),由于針對Schoolmate的測試用例集更加龐大,導致隨機測試用例集在該應用上的表現(xiàn)與CBMTG的測試用例集更加接近,因為龐大的測試用例集能夠使得遷移之間進行更多的組合,這就導致了二階SQL 注入漏洞檢測概率的提高.

圖6 CBMTG與隨機測試用例集對比

6 結論與展望

在Web 應用中,二階SQL 注入漏洞比一階SQL注入漏洞更加難以檢測,在黑盒情況下,目前還沒有一種有效的方法來針對該漏洞生成測試用例.本文利用基于模型的測試用例生成思想,提出一種基于客戶端行為模型(CBM)的測試用例集生成方法,利用客戶端行為模型(CBM)先建立遷移與SQL 語句之間的映射關系,然后獲取遷移之間的拓撲關系,以此來指導測試用例集生成.實驗結果表明,本文提出方法所生成的測試用例集能夠有效地檢測出Web 應用中的二階SQL 注入漏洞.在后續(xù)進一步的研究中,作者將考慮在現(xiàn)有測試用例集的基礎上去除不相關遷移以達到提高漏洞檢測效率的目的,同時探索將本文方法拓展到其他類型的二階注入漏洞檢測領域.

猜你喜歡
數(shù)據(jù)庫用戶檢測
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
小波變換在PCB缺陷檢測中的應用
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 97青青青国产在线播放| 午夜限制老子影院888| 欧美一级高清片久久99| 日韩一级二级三级| 日本亚洲欧美在线| 国产精品亚洲αv天堂无码| 久久96热在精品国产高清| 国产精品人莉莉成在线播放| 亚洲AV成人一区二区三区AV| 亚洲色图另类| 欧美日本中文| 国产亚洲精品无码专| 国产成人91精品免费网址在线| 人妻丰满熟妇AV无码区| 美美女高清毛片视频免费观看| 亚洲成人精品| 一边摸一边做爽的视频17国产| 国产欧美精品一区二区| 国产又黄又硬又粗| 囯产av无码片毛片一级| 在线人成精品免费视频| 欧美黑人欧美精品刺激| 国产成人久久综合一区| 欧美日本一区二区三区免费| 国产激情无码一区二区三区免费| 国产av剧情无码精品色午夜| 久久综合激情网| 日韩不卡免费视频| 欧美亚洲香蕉| 国产精品视频系列专区| 69国产精品视频免费| 久热中文字幕在线观看| 欧美日韩国产系列在线观看| 美女内射视频WWW网站午夜| 欧美成人免费午夜全| 国产乱人伦AV在线A| 美女高潮全身流白浆福利区| 欧美福利在线| 日韩中文精品亚洲第三区| 福利在线不卡| 久久精品无码一区二区国产区| 国产高清不卡视频| 国产日韩欧美在线视频免费观看 | 亚洲综合久久一本伊一区| 亚洲中文字幕无码mv| 72种姿势欧美久久久大黄蕉| 色婷婷亚洲综合五月| 国产一级毛片高清完整视频版| 99ri国产在线| 亚洲最大福利网站| 色播五月婷婷| 国产精品福利导航| 日本国产在线| 国产成人精品一区二区秒拍1o| 欧洲成人免费视频| 毛片手机在线看| 欧美在线国产| 国产成人91精品| 午夜精品福利影院| 亚洲天堂区| 久久精品国产亚洲AV忘忧草18| 免费人成黄页在线观看国产| 超级碰免费视频91| 99色亚洲国产精品11p| 久久久久无码国产精品不卡 | 26uuu国产精品视频| 精品福利视频网| 久久久久久高潮白浆| 亚洲成肉网| 国产成人三级在线观看视频| 日韩精品无码免费一区二区三区| 日韩无码精品人妻| 中文字幕亚洲综久久2021| 亚洲成人高清无码| 美女高潮全身流白浆福利区| 秘书高跟黑色丝袜国产91在线| 第九色区aⅴ天堂久久香| 激情综合婷婷丁香五月尤物| 国产一区二区三区精品久久呦| 爆乳熟妇一区二区三区| 不卡网亚洲无码| 在线看片中文字幕|