欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于交互數(shù)據(jù)采集的Web應(yīng)用程序訪問操作提取方法與流程

文檔序號(hào):12064200閱讀:268來源:國知局
一種基于交互數(shù)據(jù)采集的Web應(yīng)用程序訪問操作提取方法與流程

本發(fā)明屬于漏洞檢測(cè)和基于交互數(shù)據(jù)采集的Web應(yīng)用程序訪問操作的提取,具體的說是基于用戶、Web應(yīng)用程序端以及數(shù)據(jù)庫端之間的交互數(shù)據(jù)對(duì)用戶訪問Web應(yīng)用程序的操作的一種提取方法。



背景技術(shù):

如今隨著Web應(yīng)用技術(shù)的發(fā)展,Web應(yīng)用的類型逐漸增多,隨之而來的Web應(yīng)用程序的安全問題越來越嚴(yán)峻。在Web應(yīng)用程序中,用戶與Web應(yīng)用服務(wù)器之間的內(nèi)容均是以動(dòng)態(tài)形式進(jìn)行交互,這些內(nèi)容一般包含了與用戶自身相關(guān)的重要信息,必須對(duì)這些私密數(shù)據(jù)加以保護(hù)。然而Web應(yīng)用程序目前仍然存在大量的漏洞導(dǎo)致用戶數(shù)據(jù)的不安全,其中訪問控制漏洞是Web應(yīng)用程序最普遍的漏洞之一,為非法用戶的惡意操作提供了機(jī)會(huì),使Web應(yīng)用的信息資源被非法使用和訪問。這一類漏洞存在的根本原因是Web應(yīng)用程序無法對(duì)客戶端進(jìn)行控制,所以用戶可以使用任何方式向Web應(yīng)用程序服務(wù)器提交任何輸入或構(gòu)造專門設(shè)計(jì)的輸入實(shí)現(xiàn)惡意訪問,獲取敏感數(shù)據(jù)。

所以Web應(yīng)用程序需要設(shè)置訪問控制機(jī)制,對(duì)于Web應(yīng)用程序的每一個(gè)訪問請(qǐng)求,以及不同時(shí)刻在不同角色下的不同用戶的每一個(gè)訪問操作,訪問控制機(jī)制均需要進(jìn)行其是否合理的判斷,以保證后臺(tái)資源被合法訪問。然而由于對(duì)安全細(xì)節(jié)考慮不周、代碼開發(fā)過程中的疏漏以及安全意識(shí)薄弱等原因?qū)е耊eb應(yīng)用程序訪問控制機(jī)制并不能有效防止客戶端的各種惡意訪問操作行為,從而造成了訪問控制漏洞。Web應(yīng)用程序訪問控制漏洞表現(xiàn)形式多樣且通常和特定的Web應(yīng)用程序有關(guān),并且也和Web應(yīng)用程序采用的后臺(tái)數(shù)據(jù)庫類型相關(guān),如程序采用NoSQL類型數(shù)據(jù)庫,所以很難避免Web應(yīng)用程序訪問控制漏洞的出現(xiàn)。目前針對(duì)Web應(yīng)用程序訪問控制漏洞的研究還處于探索階段。對(duì)Web應(yīng)用程序訪問控制漏洞進(jìn)行檢測(cè)需要獲取Web應(yīng)用程序設(shè)計(jì)時(shí)設(shè)定的訪問控制機(jī)制和實(shí)際程序編碼實(shí)現(xiàn)的訪問控制機(jī)制,然后將二者進(jìn)行對(duì)比,尋找差異,從而檢測(cè)訪問控制漏洞。

對(duì)于程序設(shè)計(jì)時(shí)預(yù)期設(shè)定的訪問控制機(jī)制的獲取一種方法是可以通過人工制定,另一種方法是可以通過自動(dòng)推導(dǎo),并在此基礎(chǔ)上尋找相關(guān)漏洞。人工制定預(yù)期設(shè)定的訪問控制機(jī)制的方法需要保證對(duì)于不同的Web應(yīng)用程序制定對(duì)應(yīng)的預(yù)期訪問控制機(jī)制,這種方法需要人工進(jìn)行制定,并且由人工制定往往會(huì)由于疏漏或不了解程序?qū)е聶z測(cè)結(jié)果會(huì)有漏報(bào)或誤報(bào),因此人工制定預(yù)期訪問控制機(jī)制具有局限性。通過分析自動(dòng)推導(dǎo)預(yù)期設(shè)定的訪問控制機(jī)制不需要程序設(shè)計(jì)者參與,僅需要通過對(duì)Web應(yīng)用程序進(jìn)行特定的分析來提取相應(yīng)的預(yù)期訪問控制機(jī)制。由于每個(gè)特定的Web應(yīng)用程序預(yù)期訪問控制機(jī)制均需要根據(jù)需求而定,所以需要觀察Web應(yīng)用程序正常運(yùn)行的行為。

早期針對(duì)自動(dòng)推導(dǎo)Web應(yīng)用程序預(yù)期訪問控制機(jī)制檢測(cè)訪問控制漏洞的研究,著眼于網(wǎng)頁層次的訪問控制漏洞,這類漏洞主要包括強(qiáng)制訪問漏洞和參數(shù)篡改漏洞。強(qiáng)制訪問漏洞表現(xiàn)在一些需要高權(quán)限才可訪問的網(wǎng)絡(luò)頁面缺少訪問控制機(jī)制,使得攻擊者可在僅被授予低權(quán)限的時(shí)候直接訪問該頁面,從而進(jìn)行惡意操作;參數(shù)篡改漏洞表現(xiàn)在網(wǎng)絡(luò)請(qǐng)求中,一些用于區(qū)分用戶的敏感參數(shù)并未受到合理的訪問控制機(jī)制的保護(hù),使攻擊者可輕易篡改敏感參數(shù),從而偽裝成其它用戶的身份訪問未授權(quán)的網(wǎng)頁進(jìn)行惡意操作;兩種漏洞的表現(xiàn)形式均為較明顯的網(wǎng)頁層。到了后期,有研究者發(fā)現(xiàn)一種重定向后運(yùn)行漏洞,訪問存在這種漏洞的網(wǎng)頁時(shí),從網(wǎng)頁層看,似乎進(jìn)行了合理的訪問控制,但未被授權(quán)的數(shù)據(jù)庫操作仍然在Web應(yīng)用程序后臺(tái)的數(shù)據(jù)庫端得到了運(yùn)行,主要原因是程序開發(fā)者常常會(huì)使用重定向語句通過網(wǎng)頁跳轉(zhuǎn)終止客戶端的請(qǐng)求,但因?yàn)榇a編寫的疏漏,使用的重定向語句僅實(shí)現(xiàn)了網(wǎng)頁層的重定向,并未在重定向語句對(duì)余下功能進(jìn)行終止。

通過自動(dòng)推導(dǎo)Web應(yīng)用程序的預(yù)期訪問控制機(jī)制從而針對(duì)強(qiáng)制訪問漏洞、參數(shù)篡改漏洞以及重定向后運(yùn)行漏洞進(jìn)行檢測(cè)是訪問控制漏洞檢測(cè)的研究重點(diǎn)??梢允褂脛?dòng)態(tài)分析的研究方法觀察Web應(yīng)用程序正常運(yùn)行行為,進(jìn)而推導(dǎo)Web應(yīng)用程序預(yù)期設(shè)定的訪問控制機(jī)制。檢測(cè)Web應(yīng)用程序中的訪問控制漏洞的動(dòng)態(tài)分析方法最早是由NoTamper提出的,通過對(duì)Ajax程序客戶端進(jìn)行分析,提取出程序的預(yù)期行為,但是該方法只能針對(duì)參數(shù)篡改漏洞進(jìn)行檢測(cè),無法檢查隱藏于頁面后的重定向和轉(zhuǎn)發(fā)請(qǐng)求等訪問控制漏洞。BLOCK獲取服務(wù)器端會(huì)話消息構(gòu)造有限狀態(tài)機(jī),進(jìn)而針對(duì)Web應(yīng)用程序訪問控制漏洞的惡意攻擊進(jìn)行防御,但其只針對(duì)網(wǎng)頁層訪問控制漏洞,不適用于與數(shù)據(jù)庫相關(guān)的漏洞,特別是重定向后運(yùn)行漏洞。LogicScope訪問服務(wù)器端的會(huì)話消息以及合法的網(wǎng)絡(luò)請(qǐng)求響應(yīng),進(jìn)行有限狀態(tài)機(jī)的構(gòu)造從而實(shí)現(xiàn)對(duì)網(wǎng)頁層次的訪問控制漏洞的檢測(cè),但不能檢測(cè)重定向后運(yùn)行漏洞。因此對(duì)客戶端與Web應(yīng)用程序端以及數(shù)據(jù)庫端之間交互數(shù)據(jù)的采集,并在此基礎(chǔ)上對(duì)客戶端訪問Web應(yīng)用程序的操作進(jìn)行提取從而自動(dòng)推導(dǎo)預(yù)期訪問控制機(jī)制是檢測(cè)訪問控制漏洞的一種重要手段。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的是使用動(dòng)態(tài)分析的研究方法,提出了一種基于交互數(shù)據(jù)采集的Web應(yīng)用程序訪問操作的提取方法,為后續(xù)自動(dòng)推導(dǎo)Web應(yīng)用程序預(yù)期訪問控制機(jī)制并進(jìn)行漏洞檢測(cè)奠定基礎(chǔ),以彌補(bǔ)Web應(yīng)用程序訪問控制漏洞檢測(cè)方法的不足。該方法通過對(duì)協(xié)議層交互數(shù)據(jù)的抓取實(shí)現(xiàn)對(duì)關(guān)系型數(shù)據(jù)庫與MongoDB數(shù)據(jù)庫的支持,從而對(duì)Web應(yīng)用程序前臺(tái)客戶端請(qǐng)求與后臺(tái)數(shù)據(jù)庫端資源的關(guān)系進(jìn)行提取。

本發(fā)明提出的基于交互數(shù)據(jù)采集的Web應(yīng)用程序訪問操作的提取方法包括以下步驟:

步驟1、根據(jù)Web應(yīng)用程序的基本訪問模式定義Web應(yīng)用程序訪問操作的概念,包括寫訪問操作和讀訪問操作;

本發(fā)明定義了Web應(yīng)用程序訪問操作,包括寫訪問操作和讀訪問操作的概念。Web應(yīng)用程序訪問操作是指當(dāng)用戶從客戶端輸入U(xiǎn)RL網(wǎng)址進(jìn)行訪問請(qǐng)求后,修改或獲取后臺(tái)數(shù)據(jù)庫中數(shù)據(jù)的整個(gè)過程,包括對(duì)應(yīng)的數(shù)據(jù)庫請(qǐng)求以及Web應(yīng)用程序?qū)Ψ祷氐臄?shù)據(jù)庫響應(yīng)的處理操作。其中寫訪問操作為對(duì)應(yīng)的數(shù)據(jù)庫操作,與具有插入、刪除、更新功能的數(shù)據(jù)庫請(qǐng)求相對(duì)應(yīng);讀訪問操作與具有查詢功能的數(shù)據(jù)庫請(qǐng)求相對(duì)應(yīng)的數(shù)據(jù)庫操作,包括Web應(yīng)用程序?qū)Ψ祷氐臄?shù)據(jù)庫響應(yīng)的進(jìn)一步處理過程。

步驟2、對(duì)Web應(yīng)用程序的交互數(shù)據(jù)進(jìn)行捕獲和解析,包括關(guān)系型數(shù)據(jù)庫和MongoDB數(shù)據(jù)庫為后臺(tái)數(shù)據(jù)庫的交互數(shù)據(jù);

本發(fā)明采用動(dòng)態(tài)分析的方法,通過深入?yún)f(xié)議層發(fā)掘Web應(yīng)用程序不同驅(qū)動(dòng)中數(shù)據(jù)庫操作的共性,以關(guān)系型數(shù)據(jù)庫與MongoDB數(shù)據(jù)庫為后臺(tái)數(shù)據(jù)庫,深入?yún)f(xié)議層發(fā)掘Web應(yīng)用程序不同驅(qū)動(dòng)中數(shù)據(jù)庫操作的共性,提取關(guān)系型數(shù)據(jù)庫SQL語句以及MongoDB數(shù)據(jù)庫的請(qǐng)求消息進(jìn)行存儲(chǔ)。通過交互數(shù)據(jù)采集算法充分采集Web應(yīng)用程序訪問過程中客戶端與Web應(yīng)用程序端、Web應(yīng)用程序端與數(shù)據(jù)庫端之間的交互數(shù)據(jù),以捕獲Web應(yīng)用程序中不同角色不同用戶的各種合法運(yùn)行行為。交互數(shù)據(jù)采集算法如下:

Input:Web應(yīng)用程序中所有角色的集合R,Web應(yīng)用程序中所有用戶的集合U

Output:交互數(shù)據(jù)

該算法遍歷Web應(yīng)用程序的每個(gè)角色ri,然后遍歷角色下的每一個(gè)用戶uij,使用Run(<uij,ri,action>)函數(shù)觸發(fā)用戶uij可進(jìn)行的操作action,CollectSample()函數(shù)采集交互數(shù)據(jù),最后輸出采集的交互數(shù)據(jù),通過對(duì)交互數(shù)據(jù)的解析,將數(shù)據(jù)按角色、用戶、會(huì)話、Web交互進(jìn)行整理,解析后的Web應(yīng)用程序的交互數(shù)據(jù)如圖1所示。

步驟3、在步驟2采集的交互數(shù)據(jù)的基礎(chǔ)上對(duì)Web應(yīng)用程序的數(shù)據(jù)庫操作進(jìn)行解析;

Web應(yīng)用程序訪問操作也包括網(wǎng)絡(luò)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)庫請(qǐng)求,動(dòng)態(tài)分析Web應(yīng)用程序的訪問操作需要解析后臺(tái)數(shù)據(jù)庫未加工的數(shù)據(jù)庫請(qǐng)求,以得出對(duì)應(yīng)的數(shù)據(jù)庫操作。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫操作為數(shù)據(jù)庫請(qǐng)求中對(duì)應(yīng)的SQL語句。而非關(guān)系型數(shù)據(jù)庫MongoDB,其數(shù)據(jù)庫操作參數(shù)均位于其請(qǐng)求消息的文檔型變量中,因此本發(fā)明提取MongoDB傳輸協(xié)議請(qǐng)求消息中的操作類型、數(shù)據(jù)集合名、文檔型變量等進(jìn)行封裝,并解析成MongoDB數(shù)據(jù)庫的數(shù)據(jù)庫操作。由于每個(gè)不同的操作其參數(shù)也不同,本發(fā)明采用“模板+參數(shù)”形式對(duì)數(shù)據(jù)庫操作進(jìn)行統(tǒng)一。對(duì)數(shù)據(jù)庫操作、MongoDB請(qǐng)求消息中的文檔型變量或Web應(yīng)用程序訪問操作的模板定義為它們的無參數(shù)形式。

步驟4、對(duì)Web應(yīng)用程序的寫訪問操作進(jìn)行解析;

數(shù)據(jù)庫請(qǐng)求發(fā)送后,Web應(yīng)用程序的后臺(tái)數(shù)據(jù)庫完成用戶請(qǐng)求的數(shù)據(jù)寫入,數(shù)據(jù)庫端返回的數(shù)據(jù)庫響應(yīng)不會(huì)被Web應(yīng)用程序更改而影響寫入結(jié)果,根據(jù)Web應(yīng)用程序?qū)懺L問操作的定義,寫訪問操作與具有插入、刪除、更新功能的數(shù)據(jù)庫請(qǐng)求相對(duì)應(yīng),所以解析后的插入、刪除、更新類型的數(shù)據(jù)庫操作即為Web應(yīng)用程序訪問操作中的寫訪問操作。

步驟5、對(duì)Web應(yīng)用程序的讀訪問操作進(jìn)行解析,解析過程包括縱向匹配過程和橫向匹配過程;

Web應(yīng)用程序讀訪問操作在數(shù)據(jù)庫操作的基礎(chǔ)上還需要捕獲Web應(yīng)用程序?qū)?shù)據(jù)庫響應(yīng)返回結(jié)果的進(jìn)一步處理過程。讀訪問操作的解析包括縱向匹配過程和橫向匹配過程,其中縱向匹配抓取數(shù)據(jù)庫響應(yīng)與網(wǎng)絡(luò)響應(yīng)之間的對(duì)應(yīng)關(guān)系,橫向匹配抓取縱向匹配后Web應(yīng)用程序?qū)?shù)據(jù)庫響應(yīng)的進(jìn)一步處理過程。

步驟5.1、讀訪問操作解析過程中的縱向匹配過程

本發(fā)明采用的縱向匹配抓取了數(shù)據(jù)庫響應(yīng)與網(wǎng)絡(luò)響應(yīng)的對(duì)應(yīng)關(guān)系,首先將數(shù)據(jù)庫響應(yīng)以列存儲(chǔ)的方式進(jìn)行表示,其中的每列稱作數(shù)據(jù)庫響應(yīng)列。因?yàn)殛P(guān)系型數(shù)據(jù)庫其數(shù)據(jù)庫響應(yīng)以表的方式存儲(chǔ),將表中的每列單獨(dú)表示即為數(shù)據(jù)庫響應(yīng)列;MongoDB數(shù)據(jù)庫其數(shù)據(jù)模型為嵌入型文檔結(jié)構(gòu),首先將該數(shù)據(jù)庫響應(yīng)中的每個(gè)記錄使用嵌套型表示方法進(jìn)行表示,然后使用一種表示嵌套型文檔深層次域的點(diǎn)記錄方法表示數(shù)據(jù)庫響應(yīng)列的列名,列的鍵表示數(shù)據(jù)在整個(gè)數(shù)據(jù)庫響應(yīng)中的具體位置,值為列名對(duì)應(yīng)的值,數(shù)據(jù)庫響應(yīng)列過程如附圖3所示。本發(fā)明使用一種網(wǎng)絡(luò)響應(yīng)鍵值對(duì)表示方法解決網(wǎng)絡(luò)響應(yīng)結(jié)構(gòu)問題,數(shù)據(jù)庫響應(yīng)消息會(huì)傳遞到網(wǎng)絡(luò)頁面的文本、變量、超鏈接、表單中,將這些元素使用鍵值對(duì)方式表示,由于網(wǎng)絡(luò)頁面為樹形文檔對(duì)象模型,其XPath為唯一值,將其作為每一個(gè)元素的鍵,值為元素對(duì)應(yīng)的值。縱向匹配分析過程如附圖4所示,該過程分為兩步:

(1)數(shù)據(jù)庫/網(wǎng)絡(luò)響應(yīng)值匹配

數(shù)據(jù)庫/網(wǎng)絡(luò)響應(yīng)值匹配過程首先將采集的交互數(shù)據(jù)解析成多個(gè)請(qǐng)求響應(yīng)對(duì),請(qǐng)求響應(yīng)對(duì)定義為Web應(yīng)用程序端與數(shù)據(jù)庫端關(guān)聯(lián)的網(wǎng)絡(luò)請(qǐng)求、數(shù)據(jù)庫請(qǐng)求以及對(duì)應(yīng)的網(wǎng)絡(luò)響應(yīng)、數(shù)據(jù)庫響應(yīng)。然后將請(qǐng)求響應(yīng)對(duì)按照各自模板進(jìn)行分組,本發(fā)明使用Group表示一組請(qǐng)求響應(yīng)對(duì)。請(qǐng)求響應(yīng)對(duì)中的一個(gè)數(shù)據(jù)庫響應(yīng)ResDB與網(wǎng)絡(luò)響應(yīng)ResWEB,使用kW/VkW表示ResWEB中的網(wǎng)絡(luò)響應(yīng)鍵值對(duì),colDB表示ResDB中的數(shù)據(jù)庫響應(yīng)列,VcolDB表示colDB值的集合。由于數(shù)據(jù)庫響應(yīng)中的數(shù)據(jù)傳輸?shù)骄W(wǎng)絡(luò)響應(yīng)的過程中,數(shù)據(jù)格式可能會(huì)發(fā)生變化,所以在匹配過程中采用近似匹配,即如果與colDB,使VcolDB∈VkW對(duì)一個(gè)Group里的所有數(shù)據(jù)庫響應(yīng)與其對(duì)應(yīng)的網(wǎng)絡(luò)響應(yīng)成立,則稱kW(XPath格式)與colDB對(duì)應(yīng)的域路徑存在一個(gè)數(shù)據(jù)庫/網(wǎng)絡(luò)響應(yīng)值匹配,并為其生成一條響應(yīng)傳輸鏈。

(2)響應(yīng)傳輸鏈匯總

響應(yīng)傳輸鏈匯總過程指對(duì)于一個(gè)Group內(nèi)數(shù)據(jù)庫響應(yīng)列colDB相同的所有響應(yīng)傳輸鏈,如果它們kW(XPath格式)的XPath結(jié)構(gòu)相同,即Xpath上不同的節(jié)點(diǎn)只有一個(gè),且該節(jié)點(diǎn)名、該節(jié)點(diǎn)對(duì)應(yīng)的父節(jié)點(diǎn)、該節(jié)點(diǎn)對(duì)應(yīng)的子節(jié)點(diǎn)均相同,則表示這個(gè)XPath結(jié)構(gòu)對(duì)應(yīng)的網(wǎng)絡(luò)響應(yīng)值由數(shù)據(jù)庫響應(yīng)列colDB內(nèi)的數(shù)值產(chǎn)生,將所有響應(yīng)傳輸鏈按照kW的XPath結(jié)構(gòu)進(jìn)行匯總。匯總后的XPath結(jié)構(gòu)與colDB的組合稱為縱向匹配鏈,并將縱向匹配鏈添加到Web應(yīng)用程序的讀訪問操作中。

步驟5.2、讀訪問操作解析過程中的橫向匹配過程

橫向匹配過程獲取縱向匹配后Web應(yīng)用程序?qū)?shù)據(jù)庫響應(yīng)的進(jìn)一步處理過程。對(duì)每條縱向匹配鏈中的數(shù)據(jù)庫響應(yīng)列c,用Vc表示c中真正傳輸?shù)骄W(wǎng)絡(luò)響應(yīng)的數(shù)據(jù)的集合,Rc表示其余傳輸?shù)骄W(wǎng)絡(luò)響應(yīng)的數(shù)據(jù)的集合,如果表示數(shù)據(jù)庫響應(yīng)列中的數(shù)據(jù)均傳輸?shù)骄W(wǎng)絡(luò)響應(yīng)中,數(shù)據(jù)列不符合橫向匹配的前提條件。如果表明數(shù)據(jù)庫響應(yīng)列中有部分?jǐn)?shù)據(jù)傳輸?shù)骄W(wǎng)絡(luò)響應(yīng)中,需要進(jìn)行橫向匹配。因?yàn)殛P(guān)系型數(shù)據(jù)庫的扁平型數(shù)據(jù)模型與MongoDB嵌套型數(shù)據(jù)模型不同,因此橫向匹配解析過程也不同。

(1)關(guān)系型數(shù)據(jù)庫橫向解析過程

關(guān)系型數(shù)據(jù)庫橫向解析過程如附圖5所示,對(duì)Vc中的每一個(gè)值,返回到數(shù)據(jù)庫響應(yīng)表中,提取出每個(gè)值對(duì)應(yīng)的行,并組合成一個(gè)子表TV,同理對(duì)于Rc,可獲得子表TR。針對(duì)TV,觀察是否存在一列colV,該列的值均相同,令相同值為vTV;同理對(duì)于TR,可得vTR。如果vTV≠vTR,表明Web應(yīng)用程序?qū)olV的值是否為vTV作為數(shù)據(jù)庫響應(yīng)列colDB的值傳輸?shù)骄W(wǎng)絡(luò)響應(yīng)的判定條件,所以此時(shí)“colV:vTV”稱作數(shù)據(jù)庫響應(yīng)列colDB的橫向匹配鏈。該橫向匹配鏈被添加到Web應(yīng)用程序的讀訪問操作中。

(2)MongoDB數(shù)據(jù)庫橫向解析過程

MongoDB數(shù)據(jù)庫橫向解析過程如附圖6所示,MongoDB數(shù)據(jù)庫的橫向匹配過程涉及多層域,對(duì)數(shù)據(jù)庫響應(yīng)列中Vc內(nèi)的每一個(gè)值v∈Vc,假設(shè)v對(duì)應(yīng)的域路徑為“F=f1·f2....fn-1·fn”,v在數(shù)據(jù)庫響應(yīng)列中的鍵為(k0,k1,k2,...,kn-1,kn)。對(duì)v所在的記錄r,抓取r中擁有不同于F域路徑的值v′,假設(shè)v′的域路徑為“F′=f1′·f2′....fm-1′.fm′”,v′在數(shù)據(jù)庫響應(yīng)列中的鍵為(k0′,k1′,k2′,...,km-1′,km′)。因?yàn)関和v′都在同一條記錄內(nèi),顯然k0=k0′。尋找域路徑滿足如下條件之一的v′:

1)f1≠f1′,表示v與v′的域路徑?jīng)]有共同的節(jié)點(diǎn),在記錄里的域路徑完全不同;

2)fi=fi′∧ki=ki′,表示v與v′處于同一個(gè)節(jié)點(diǎn)分支,但v′的層數(shù)較少;

3)fi=fi′∧ki=ki′,表示v與v′處于同一個(gè)節(jié)點(diǎn)分支,但v的層數(shù)較少;

定義Vc′為所有符合上述條件之一的v′的集合。同理,獲取Rc對(duì)應(yīng)的集合Rc′。對(duì)Vc′擁有相同域路徑的值,如果這些值均相等為v0,且與v0對(duì)應(yīng)的域路徑Fv0并未在Rc′出現(xiàn),則認(rèn)定“Fv0:v0”為數(shù)據(jù)庫響應(yīng)列colDB的橫向匹配鏈。該橫向匹配鏈被添加到Web應(yīng)用程序的讀訪問操作中。

本發(fā)明的優(yōu)點(diǎn)和積極效果:

本發(fā)明提出一種基于交互數(shù)據(jù)采集的Web應(yīng)用程序訪問操作的提取方法,該方法以動(dòng)態(tài)分析研究方法為基礎(chǔ),深入?yún)f(xié)議層采集Web應(yīng)用程序交互數(shù)據(jù),在此基礎(chǔ)上,對(duì)Web應(yīng)用程序數(shù)據(jù)庫操作進(jìn)行解析,同時(shí)得到寫訪問操作解析方法。對(duì)讀訪問操作的解析,從縱向匹配和橫向匹配兩個(gè)步驟進(jìn)行描述,針對(duì)不同數(shù)據(jù)庫的特性,提出與特性相符的解析方法,進(jìn)而得到完整的讀訪問操作解析方案??梢酝ㄟ^本發(fā)明提取的Web應(yīng)用程序訪問操作自動(dòng)推導(dǎo)Web應(yīng)用程序預(yù)期訪問控制機(jī)制以及訪問控制策略從而針對(duì)強(qiáng)制訪問漏洞、參數(shù)篡改漏洞以及重定向后運(yùn)行漏洞進(jìn)行訪問控制漏洞的檢測(cè),并且本發(fā)明適用面較廣,對(duì)于以不同類型數(shù)據(jù)庫為后臺(tái)數(shù)據(jù)庫的Web應(yīng)用程序訪問操作的提取均可以使用。

附圖說明

圖1為解析后的交互數(shù)據(jù)。

圖2為文檔嵌套型表示示例。

圖3為數(shù)據(jù)庫響應(yīng)列。

圖4為MongoDB數(shù)據(jù)庫縱向匹配鏈的推導(dǎo)過程。

圖5為以關(guān)系型數(shù)據(jù)庫為后臺(tái)數(shù)據(jù)庫的Web應(yīng)用程序的橫向匹配過程。

圖6為以MongoDB數(shù)據(jù)庫為后臺(tái)數(shù)據(jù)庫的Web應(yīng)用程序的橫向匹配過程。

圖7為Web應(yīng)用程序客戶端發(fā)送請(qǐng)求的過程。

圖8為Web應(yīng)用程序客戶端接收響應(yīng)的過程。

圖9為MongoDB更新消息結(jié)構(gòu)。

圖10為MongoDB形式的數(shù)據(jù)庫響應(yīng)。

具體實(shí)施方式

下面結(jié)合附圖示例以MongoDB數(shù)據(jù)庫為例對(duì)Web應(yīng)用程序訪問操作提取方法做進(jìn)一步說明,關(guān)系型數(shù)據(jù)庫為后臺(tái)數(shù)據(jù)庫的Web應(yīng)用程序訪問操作提取方法類似:

一、本發(fā)明方法第一部分為定義Web應(yīng)用程序訪問操作的概念,以及Web應(yīng)用程序交互數(shù)據(jù)捕獲與解析。根據(jù)Web應(yīng)用程序基本訪問模式,用戶從客戶端輸入U(xiǎn)RL網(wǎng)址向Web應(yīng)用程序發(fā)送網(wǎng)絡(luò)請(qǐng)求,Web應(yīng)用接收到網(wǎng)絡(luò)請(qǐng)求后首先對(duì)用戶身份進(jìn)行驗(yàn)證,然后根據(jù)用戶的角色權(quán)限生成對(duì)應(yīng)的數(shù)據(jù)庫請(qǐng)求相關(guān)代碼并發(fā)送到數(shù)據(jù)庫端。Web應(yīng)用程序客戶端發(fā)送網(wǎng)絡(luò)請(qǐng)求的過程如圖7所示。

當(dāng)數(shù)據(jù)庫端接收到數(shù)據(jù)庫請(qǐng)求并進(jìn)行一定的處理之后,數(shù)據(jù)庫端返回?cái)?shù)據(jù)庫響應(yīng)至Web應(yīng)用程序端,如果用戶請(qǐng)求為讀取后臺(tái)數(shù)據(jù)庫的操作,Web應(yīng)用程序?qū)Ψ祷氐臄?shù)據(jù)庫響應(yīng)進(jìn)行可能的數(shù)據(jù)處理之后生成網(wǎng)絡(luò)響應(yīng)并返回給客戶端,用戶從客戶端通過網(wǎng)絡(luò)頁面的形式對(duì)其發(fā)送的網(wǎng)絡(luò)請(qǐng)求對(duì)應(yīng)的網(wǎng)絡(luò)響應(yīng)進(jìn)行瀏覽。Web應(yīng)用程序客戶端接收響應(yīng)的過程如圖8所示。圖中斜體字表示W(wǎng)eb應(yīng)用程序端對(duì)數(shù)據(jù)庫響應(yīng)進(jìn)行處理,僅為當(dāng)前訪問的用戶所對(duì)應(yīng)的評(píng)論(Comments)生成刪除鏈接。

對(duì)以上客戶端、Web應(yīng)用程序端及數(shù)據(jù)庫端之間的交互數(shù)據(jù)的采集首先需要手動(dòng)識(shí)別Web應(yīng)用程序的角色種類、用戶及其對(duì)應(yīng)的可進(jìn)行的網(wǎng)頁行為(超鏈接點(diǎn)擊、表單填寫及提交等),然后使用交互數(shù)據(jù)采集算法驅(qū)動(dòng)各角色下的不同用戶進(jìn)行該角色授權(quán)的行為,從而得到每個(gè)角色被授權(quán)的合法行為全集,當(dāng)遍歷Web應(yīng)用程序并采集了充足的交互數(shù)據(jù)之后,對(duì)交互數(shù)據(jù)進(jìn)行解析,并按角色、用戶、會(huì)話、Web交互等對(duì)數(shù)據(jù)進(jìn)行整理如附圖1所示形式,每個(gè)用戶的交互數(shù)據(jù)由多組網(wǎng)頁行為(Web交互)組成,每組網(wǎng)頁行為內(nèi)均包含若干對(duì)網(wǎng)絡(luò)請(qǐng)求響應(yīng)及數(shù)據(jù)庫請(qǐng)求響應(yīng)。有關(guān)Web應(yīng)用程序的基本訪問模式,Web應(yīng)用程序的訪問操作概念(包括寫訪問操作和讀訪問操作)以及交互數(shù)據(jù)采集算法見發(fā)明內(nèi)容部分。

二、本發(fā)明第二部分為對(duì)Web應(yīng)用程序數(shù)據(jù)庫操作的解析。

在本發(fā)明第一部分采集的交互數(shù)據(jù)基礎(chǔ)上,對(duì)后臺(tái)數(shù)據(jù)庫未加工的數(shù)據(jù)請(qǐng)求進(jìn)行解析,得出對(duì)應(yīng)的數(shù)據(jù)庫操作,從而動(dòng)態(tài)分析Web應(yīng)用程序訪問操作。針對(duì)MongoDB數(shù)據(jù)庫,該數(shù)據(jù)庫操作需要從MongoDB傳輸協(xié)議消息中提取,圖9所示為MongoDB更新消息結(jié)構(gòu),可以看出MongoDB傳輸協(xié)議消息是一個(gè)嵌入型BSON數(shù)據(jù),消息中插入、更新、查詢等消息內(nèi)容均為文檔型變量,文檔型變量通過保留“$”字符使許多復(fù)雜的命令格式(如選擇范圍、或操作、非操作等)能被MongoDB數(shù)據(jù)庫文檔結(jié)構(gòu)處理,如一個(gè)簡單的嵌入型文檔結(jié)構(gòu)“{size:{$lt:10}}”,表示選擇size鍵小于10的記錄,“$lt”代表“小于”的含義。然后提取MongoDB傳輸協(xié)議中請(qǐng)求消息的核心部分(即操作類型、數(shù)據(jù)集合名、請(qǐng)求變量等)進(jìn)行封裝,解析成以MongoDB為后臺(tái)數(shù)據(jù)庫的Web應(yīng)用程序的數(shù)據(jù)庫操作。由于每個(gè)數(shù)據(jù)庫操作均具有不同的參數(shù)值,所以統(tǒng)一使用“模板+參數(shù)”的形式表示數(shù)據(jù)庫操作,如MongoDB請(qǐng)求消息中的文檔型變量“{size:{$lt:10}}”,其模板為“{size:{$lt:[para1]}}”,“para1”代表參數(shù)值。

三、本發(fā)明的第三部分為Web應(yīng)用程序?qū)懺L問操作的解析,寫訪問操作與具有插入、刪除、更新功能的數(shù)據(jù)庫請(qǐng)求相對(duì)應(yīng),所以解析后的插入、刪除、更新類型的數(shù)據(jù)庫操作即為Web應(yīng)用程序訪問操作中的寫訪問操作,如本實(shí)施例中向MongoDB數(shù)據(jù)庫插入文檔操作為:db.MongoBlog.insert({“index”:“0”,“name”:“user01”,“comment”:“nice”,“age”:30})。

四、本發(fā)明第四部分為對(duì)Web應(yīng)用程序的讀訪問操作的解析。

MongoDB數(shù)據(jù)庫響應(yīng)為嵌入式文檔型變量,圖10所示為圖9中數(shù)據(jù)庫端返回的MongoDB形式的數(shù)據(jù)庫響應(yīng)。

本發(fā)明使用數(shù)據(jù)庫響應(yīng)列解決數(shù)據(jù)庫響應(yīng)的結(jié)構(gòu)問題,首先使用嵌套型結(jié)構(gòu)表示上述嵌入式文檔型變量,如附圖2所示,按照附圖2右邊定義的模式(Schema)將嵌入式文檔型變量表示為附圖2左邊所示的嵌套型結(jié)構(gòu)。MongoDB數(shù)據(jù)庫響應(yīng)模型表示為嵌套型結(jié)構(gòu)之后,以列存儲(chǔ)方式表示數(shù)據(jù)庫響應(yīng),附圖3所示為關(guān)系型數(shù)據(jù)庫與MongoDB數(shù)據(jù)庫的數(shù)據(jù)庫響應(yīng)列轉(zhuǎn)換過程。使用嵌套型文檔深層次域表示列路徑,如“comments”域中的“name”的域路徑,使用“comments.name”表示,然后MongoDB數(shù)據(jù)庫響應(yīng)列的列名為列路徑,如“comments.name”,數(shù)據(jù)庫響應(yīng)列的鍵key為數(shù)據(jù)在整個(gè)數(shù)據(jù)庫響應(yīng)中的具體位置,如圖中“title”列,其鍵key為(0,0)對(duì)應(yīng)(recordID,titleID),表示“title”域位于MongoDB數(shù)據(jù)庫響應(yīng)的第一個(gè)文檔的第一個(gè)title域,其中recordID表示數(shù)據(jù)位于數(shù)據(jù)庫響應(yīng)中的哪個(gè)記錄或文檔,titleID表示數(shù)據(jù)位于文檔的哪個(gè)title域,其余字段表示方法類似。

然后將網(wǎng)絡(luò)響應(yīng)采用鍵值對(duì)方式表示以統(tǒng)一結(jié)構(gòu),鍵為網(wǎng)絡(luò)頁面元素對(duì)應(yīng)的唯一路徑XPath,值為對(duì)應(yīng)的元素值,如附圖4所示,XPath路徑“/html/body/h2”對(duì)應(yīng)的值為“firstblog”,然后將網(wǎng)絡(luò)響應(yīng)與數(shù)據(jù)庫響應(yīng)列進(jìn)行匹配,該值與數(shù)據(jù)庫響應(yīng)列“title”域值相同,于是為網(wǎng)絡(luò)響應(yīng)與數(shù)據(jù)庫響應(yīng)生成一條響應(yīng)傳輸鏈“XPath:fieldpath”,“title”域生成“/html/body/h2:title”,由于Web應(yīng)用程序會(huì)對(duì)返回的數(shù)據(jù)庫響應(yīng)數(shù)據(jù)的格式會(huì)做一定變更,所以數(shù)據(jù)庫響應(yīng)和網(wǎng)絡(luò)響應(yīng)值匹配過程采用近似匹配,如“/html/body/tr[1]”對(duì)應(yīng)值為“user01says:”,和數(shù)據(jù)庫響應(yīng)匹配時(shí),匹配“comments.name”域值“user01”,于是生成響應(yīng)傳輸鏈“/html/body/tr[1]:comments.name”。由于存在響應(yīng)傳輸鏈相同的情況,需要對(duì)響應(yīng)傳輸鏈按照其XPath結(jié)構(gòu)進(jìn)行匯總,如“/html/body/tr[1]”和“/html/body/tr[2]”對(duì)應(yīng)的域均為“comments.name”對(duì)其XPath結(jié)構(gòu)匯總為“/html/body/tr”,匯總后的XPath結(jié)構(gòu)與域名的組合“XPath:column”為縱向匹配鏈。

橫向匹配在縱向匹配鏈的基礎(chǔ)上捕獲Web應(yīng)用程序?qū)Ψ祷氐臄?shù)據(jù)庫響應(yīng)的進(jìn)一步處理過程。附圖6為MongoDB數(shù)據(jù)庫的橫向匹配過程,“index”列表示“index”列只有部分?jǐn)?shù)據(jù)傳輸?shù)骄W(wǎng)絡(luò)響應(yīng)中,需要進(jìn)行橫向匹配,而其余列表示數(shù)據(jù)均全部傳輸?shù)骄W(wǎng)絡(luò)響應(yīng)中,因此對(duì)“index”列進(jìn)行橫向匹配。圖中“index”列Rc={0,1},因此從數(shù)據(jù)庫響應(yīng)列中取出對(duì)應(yīng)列組成表Vc’,對(duì)“index”列Vc={2,3}的記錄同樣取出對(duì)應(yīng)的數(shù)據(jù)庫響應(yīng)列組成表Rc’,根據(jù)MongoDB數(shù)據(jù)庫的橫向匹配過程,該過程見發(fā)明內(nèi)容部分,Vc’中“id”、“comments.name”、“content”、“author”、“title”、“saved_at”、“comments.age”列中value值均相同,Rc’中“id”、“content”、“author”、“title”、“saved_at”、“comments.age”列中value值均相同,其中Vc’中value值相同的列“comments.name”未出現(xiàn)在Rc’中value值相同的列中,所以將“comments.name”列與其對(duì)應(yīng)的值作為橫向匹配鏈并添加到Web應(yīng)用程序讀訪問操作中,即“comments.name:user03”,對(duì)應(yīng)的縱向匹配鏈的數(shù)據(jù)庫響應(yīng)列為“comments.index”,以上過程完成則Web應(yīng)用程序的讀訪問操作解析完成。

上述步驟操作均完成后,對(duì)Web應(yīng)用程序的訪問操作的提取工作完成,在提取的Web應(yīng)用程序訪問操作基礎(chǔ)上可自動(dòng)推導(dǎo)Web應(yīng)用程序預(yù)期訪問控制和訪問控制策略,從而檢測(cè)訪問控制漏洞。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
邹城市| 东港市| 扎赉特旗| 淮安市| 新安县| 阿克陶县| 屯门区| 咸丰县| 罗平县| 黑河市| 西乌| 宕昌县| 体育| 芒康县| 武汉市| 景洪市| 博客| 南和县| 衡阳市| 花莲县| 清徐县| 南平市| 湖州市| 兰西县| 那曲县| 玛沁县| 尉犁县| 葵青区| 内江市| 即墨市| 板桥市| 潜山县| 黄陵县| 德江县| 丁青县| 建阳市| 曲麻莱县| 明溪县| 合阳县| 岚皋县| 黔东|