本發(fā)明實(shí)施例涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法及裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)和應(yīng)用系統(tǒng)的飛速發(fā)展,信息安全正面臨著前所未有的挑戰(zhàn)。信息系統(tǒng)與互聯(lián)網(wǎng)或其他網(wǎng)絡(luò)的互連,使信息系統(tǒng)遭受攻擊的概率增加。
近年來(lái),重大安全事件的頻頻發(fā)生揭示了當(dāng)前信息系統(tǒng)安全形式的嚴(yán)峻性。軟件的源代碼是構(gòu)建信息的基礎(chǔ)組件,軟件源代碼中安全漏洞的存在是安全事件頻繁發(fā)生的根源。因此多種軟件源代碼的安全檢測(cè)軟件應(yīng)運(yùn)而生。
目前主流的源代碼檢測(cè)的開源軟件包括:its4,rats,boon等。商業(yè)軟件包括:foritify,checkmarx和codesecure等。its4代碼檢測(cè)是基于函數(shù)匹配的,其不關(guān)心上下文,只是搜索與漏洞數(shù)據(jù)庫(kù)相匹配的函數(shù)或api接口,如果漏洞函數(shù)存在則發(fā)出警告。rats結(jié)合了its4的靜態(tài)檢查技術(shù)和mops的深度語(yǔ)義分析技術(shù)檢測(cè)緩沖區(qū)是否存在溢出漏洞,其能夠?qū)φ麄€(gè)工程代碼進(jìn)行檢測(cè)。boon使用深度語(yǔ)義分析技術(shù)自動(dòng)掃描源代碼中存在的緩沖區(qū)溢出漏洞,可以對(duì)整數(shù)范圍進(jìn)行分析從而確定程序中的數(shù)組是否越界。fortify是提供應(yīng)用軟件安全開發(fā)工具和管理方案的廠商,為應(yīng)用軟件開發(fā)組織、安全審計(jì)人員和應(yīng)用安全管理人員提供工具并確立最佳的應(yīng)用軟件安全實(shí)踐和策略。checkmarx是以色列的一家高科技軟件公司,其產(chǎn)品checkmarxcxsuite可識(shí)別、跟蹤和修復(fù)軟件源代碼上的技術(shù)和邏輯方面的安全風(fēng)險(xiǎn),以查詢語(yǔ)言定位代碼安全問題,其采用獨(dú)特的詞匯分析技術(shù)和cxql專利查詢技術(shù)來(lái)掃描和分析源代碼中的安全漏洞和弱點(diǎn)。codesecure內(nèi)建語(yǔ)法剖析功能無(wú)需依賴編譯環(huán)境,任何人員均可利用web操作與集成開發(fā)環(huán)境雙接口,找出存在信息安全問題的源代碼,并提供修補(bǔ)建議進(jìn)行調(diào)整。
但目前主流的源代碼檢測(cè)的開源軟件和商業(yè)軟件,并沒有嚴(yán)格的信息流機(jī)制,會(huì)產(chǎn)生極高的誤報(bào)率,并且均主要關(guān)注常規(guī)的代碼缺陷,只能檢測(cè)如跨站腳本(簡(jiǎn)稱:xss),結(jié)構(gòu)化查詢語(yǔ)言(簡(jiǎn)稱:sql),密碼管理,危險(xiǎn)api接口等缺陷,對(duì)于應(yīng)用系統(tǒng)源代碼中的業(yè)務(wù)邏輯并不了解,不能檢測(cè)基于業(yè)務(wù)邏輯而產(chǎn)生的越權(quán)的漏洞,使應(yīng)用系統(tǒng)的源代碼在銀行等業(yè)務(wù)場(chǎng)景廣泛的行業(yè)不能被安全使用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法及裝置,該方法解決了現(xiàn)有技術(shù)中對(duì)源代碼檢測(cè)的開源軟件和商業(yè)軟件不能檢測(cè)基于業(yè)務(wù)邏輯而產(chǎn)生的越權(quán)的漏洞,使應(yīng)用系統(tǒng)的源代碼在銀行等業(yè)務(wù)場(chǎng)景廣泛的行業(yè)不能被安全使用的技術(shù)問題。
本發(fā)明實(shí)施例提供一種基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法,包括:
對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行解析,并將解析到的源代碼信息采用語(yǔ)法樹表示;
對(duì)所述語(yǔ)法樹進(jìn)行信息流分析,以獲得信息流信息;
根據(jù)預(yù)設(shè)的越權(quán)檢測(cè)策略和所述信息流信息,對(duì)所述應(yīng)用系統(tǒng)源代碼進(jìn)行越權(quán)檢測(cè);
輸出越權(quán)高風(fēng)險(xiǎn)的參數(shù)及相關(guān)信息。
本發(fā)明實(shí)施例提供一種基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)裝置,包括:
源代碼解析模塊,用于對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行解析,并將解析到的源代碼信息采用語(yǔ)法樹表示;
信息流分析模塊,用于對(duì)所述語(yǔ)法樹進(jìn)行信息流分析,以獲得信息流信息;
越權(quán)檢測(cè)模塊,用于根據(jù)預(yù)設(shè)的越權(quán)檢測(cè)策略和所述信息流信息,對(duì)所述應(yīng)用系統(tǒng)源代碼進(jìn)行越權(quán)檢測(cè);
越權(quán)參數(shù)輸出模塊,用于輸出越權(quán)高風(fēng)險(xiǎn)的參數(shù)及相關(guān)信息。
本發(fā)明實(shí)施例提供一種基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法及裝置,通過(guò)對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行解析,并將解析到的源代碼信息采用語(yǔ)法樹表示;對(duì)語(yǔ)法樹進(jìn)行信息流分析,以獲得信息流信息;根據(jù)預(yù)設(shè)的越權(quán)檢測(cè)策略和信息流信息,對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行越權(quán)檢測(cè);輸出越權(quán)高風(fēng)險(xiǎn)的參數(shù)及相關(guān)信息。由于采用信息流對(duì)參數(shù)進(jìn)行越權(quán)檢測(cè),與應(yīng)用系統(tǒng)業(yè)務(wù)邏輯緊密相關(guān),能夠?qū)υ创a的邏輯進(jìn)行深入分析,所以能夠減少誤報(bào)率,提高檢測(cè)的準(zhǔn)確率,并且實(shí)現(xiàn)了基于業(yè)務(wù)邏輯的越權(quán)漏洞的檢測(cè),使應(yīng)用系統(tǒng)的源代碼在銀行等業(yè)務(wù)場(chǎng)景廣泛的行業(yè)能被安全使用。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖做一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法實(shí)施例一的流程圖;
圖2為本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法實(shí)施例二的流程圖;
圖3為本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法實(shí)施例二中步驟204的流程圖;
圖4為本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法實(shí)施例二中步驟205的流程圖;
圖5為本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法實(shí)施例二中步驟205中各參數(shù)關(guān)系的示意圖;
圖6為本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)裝置實(shí)施例一的結(jié)構(gòu)示意圖;
圖7為本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)裝置實(shí)施例二的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
應(yīng)當(dāng)理解,本文中使用的術(shù)語(yǔ)“和/或”僅僅是一種描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,a和/或b,可以表示:?jiǎn)为?dú)存在a,同時(shí)存在a和b,單獨(dú)存在b這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對(duì)象是一種“或”的關(guān)系。
取決于語(yǔ)境,如在此所使用的詞語(yǔ)“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”或“響應(yīng)于檢測(cè)”。類似地,取決于語(yǔ)境,短語(yǔ)“如果確定”或“如果檢測(cè)(陳述的條件或事件)”可以被解釋成為“當(dāng)確定時(shí)”或“響應(yīng)于確定”或“當(dāng)檢測(cè)(陳述的條件或事件)時(shí)”或“響應(yīng)于檢測(cè)(陳述的條件或事件)”。
圖1為本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法實(shí)施例一的流程圖,本實(shí)施例的執(zhí)行主體為基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)裝置,該基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)裝置可以安裝或集成在計(jì)算機(jī)或服務(wù)器上,如圖1所示,則本實(shí)施例提供的基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法包括以下幾個(gè)步驟。
步驟101,對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行解析,并將解析到的源代碼信息采用語(yǔ)法樹表示。
其中,應(yīng)用系統(tǒng)可以為科藍(lán)平臺(tái)或其他應(yīng)用系統(tǒng),本實(shí)施例中對(duì)此不做限定。
具體地,本實(shí)施例中,對(duì)應(yīng)用系統(tǒng)的源代碼進(jìn)行詞法、語(yǔ)法、語(yǔ)義解析,將得到的源代碼信息用語(yǔ)法樹表示,該語(yǔ)法樹可以為抽象語(yǔ)法樹或其他語(yǔ)法樹,本實(shí)施例中對(duì)此不做限定。解析到的語(yǔ)法樹中包括:包信息、類信息、方法信息、定義信息、表達(dá)式信息等。
步驟102,對(duì)語(yǔ)法樹進(jìn)行信息流分析,以獲得信息流信息。
具體地,本實(shí)施例中,對(duì)語(yǔ)法樹進(jìn)行信息流分析包括對(duì)語(yǔ)法樹進(jìn)行控制流分析和信息流分析,信息流信息包括:控制流信息和數(shù)據(jù)流信息。
其中,控制流信息包括:類間關(guān)系信息、方法間關(guān)系信息以及其他控制流信息。數(shù)據(jù)流信息包括:類信息、方法信息、參數(shù)信息、常量信息、表達(dá)式信息以及其他數(shù)據(jù)流信息。
步驟103,根據(jù)預(yù)設(shè)的越權(quán)檢測(cè)策略和信息流信息,對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行越權(quán)檢測(cè)。
本實(shí)施例中,在應(yīng)用系統(tǒng)的源代碼的配置文件中關(guān)聯(lián)存儲(chǔ)有參數(shù)及與參數(shù)相關(guān)的信息,與參數(shù)相關(guān)的信息可以包括:參數(shù)的樣式、參數(shù)對(duì)應(yīng)的交易標(biāo)識(shí)碼、參數(shù)對(duì)應(yīng)的java處理類、參數(shù)對(duì)應(yīng)的前端頁(yè)面等。
具體地,本實(shí)施例中,對(duì)預(yù)設(shè)的越權(quán)檢測(cè)策略不做限定。如預(yù)設(shè)的越權(quán)檢測(cè)策略可以為:獲取易發(fā)生越權(quán)參數(shù),對(duì)易發(fā)生越權(quán)參數(shù)進(jìn)行樣式檢測(cè),根據(jù)易發(fā)生越權(quán)參數(shù)的樣式與應(yīng)用系統(tǒng)已配置越權(quán)處理的參數(shù)樣式表中存儲(chǔ)的參數(shù)樣式進(jìn)行比對(duì),若易發(fā)生越權(quán)參數(shù)的樣式存在于應(yīng)用系統(tǒng)已配置越權(quán)處理的參數(shù)樣式表中,則說(shuō)明該應(yīng)用系統(tǒng)會(huì)對(duì)該易發(fā)生越權(quán)參數(shù)進(jìn)行越權(quán)檢測(cè),該易發(fā)生越權(quán)參數(shù)是安全參數(shù),否則該易發(fā)生越權(quán)參數(shù)具有越權(quán)高風(fēng)險(xiǎn)。
本實(shí)施例中,預(yù)設(shè)的越權(quán)檢測(cè)策略還可以為:獲取易發(fā)生越權(quán)參數(shù)對(duì)應(yīng)的交易標(biāo)識(shí)碼,判斷易發(fā)生越權(quán)參數(shù)及對(duì)應(yīng)的交易標(biāo)識(shí)碼是否關(guān)聯(lián)存在于越權(quán)處理表中。在越權(quán)處理表中存儲(chǔ)有應(yīng)用系統(tǒng)的每個(gè)交易及在該交易中會(huì)進(jìn)行越權(quán)檢測(cè)的參數(shù),該越權(quán)處理表是根據(jù)實(shí)際應(yīng)用預(yù)先配置的。若易發(fā)生越權(quán)參數(shù)及對(duì)應(yīng)的交易標(biāo)識(shí)碼關(guān)聯(lián)存在于越權(quán)處理表中,則說(shuō)明該應(yīng)用系統(tǒng)會(huì)對(duì)該參數(shù)進(jìn)行越權(quán)檢測(cè),該易發(fā)生越權(quán)參數(shù)是安全參數(shù),否則該易發(fā)生越權(quán)參數(shù)具有越權(quán)高風(fēng)險(xiǎn)。
本實(shí)施例中,預(yù)設(shè)的越權(quán)檢測(cè)策略還可以為:獲取易發(fā)生越權(quán)參數(shù)及對(duì)應(yīng)的java處理類的信息流信息,并對(duì)java處理類的信息流信息進(jìn)行分析,判斷是否對(duì)易發(fā)生越權(quán)參數(shù)進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作,在科藍(lán)平臺(tái)即是判斷易發(fā)生越權(quán)參數(shù)是否調(diào)用了searchaccountbyid函數(shù),若進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作,則說(shuō)明應(yīng)用系統(tǒng)會(huì)該易發(fā)生越權(quán)參數(shù)進(jìn)行越權(quán)檢測(cè),該易發(fā)生越權(quán)參數(shù)是安全參數(shù),否則該易發(fā)生越權(quán)參數(shù)具有越權(quán)高風(fēng)險(xiǎn)。
本實(shí)施例中,預(yù)設(shè)的越權(quán)檢測(cè)策略還可以為:獲取易發(fā)生越權(quán)參數(shù)及對(duì)應(yīng)的java處理類的信息流信息,并對(duì)java處理類的信息流信息進(jìn)行分析,判斷該易發(fā)生越權(quán)參數(shù)是否和會(huì)話相關(guān),即是否被會(huì)話對(duì)應(yīng)的內(nèi)容覆蓋或是否與會(huì)話中對(duì)應(yīng)的內(nèi)容進(jìn)行比較,若該易發(fā)生越權(quán)參數(shù)被會(huì)話對(duì)應(yīng)的內(nèi)容覆蓋或與會(huì)話中對(duì)應(yīng)的內(nèi)容進(jìn)行了比較,則該易發(fā)生越權(quán)參數(shù)和會(huì)話相關(guān),則說(shuō)明該應(yīng)用系統(tǒng)會(huì)該易發(fā)生越權(quán)參數(shù)進(jìn)行越權(quán)檢測(cè),該易發(fā)生越權(quán)參數(shù)是安全參數(shù),否則該參數(shù)具有越權(quán)高風(fēng)險(xiǎn)。
本實(shí)施例中,預(yù)設(shè)的越權(quán)檢測(cè)策略還可以為:獲取易發(fā)生越權(quán)參數(shù)及對(duì)應(yīng)的前端頁(yè)面,根據(jù)前端頁(yè)面判斷該易發(fā)生越權(quán)參數(shù)是否通過(guò)用戶輸入,若該易發(fā)生越權(quán)參數(shù)為用戶輸入的,則是安全參數(shù),否則該參數(shù)有越權(quán)高風(fēng)險(xiǎn)。
綜上可知,本實(shí)施例中,預(yù)設(shè)的越權(quán)檢測(cè)策略還可以為:根據(jù)上述列舉的預(yù)設(shè)的越權(quán)檢測(cè)策略依次對(duì)易發(fā)生越權(quán)參數(shù)進(jìn)行篩選,每一步中去除安全參數(shù),篩選出有越權(quán)風(fēng)險(xiǎn)的參數(shù),再將有越權(quán)風(fēng)險(xiǎn)的參數(shù)輸入到下一步越權(quán)檢測(cè)中,以對(duì)參數(shù)進(jìn)行越權(quán)檢測(cè)。其中的篩選順序本實(shí)施例中不做限定。可以理解的是,本實(shí)施例中,預(yù)設(shè)的越權(quán)檢測(cè)策略還可以為:對(duì)上述列舉的預(yù)設(shè)的越權(quán)檢測(cè)策略進(jìn)行挑選,選出至少兩個(gè)上述列舉的預(yù)設(shè)的越權(quán)檢測(cè)策略,并依次對(duì)易發(fā)生越權(quán)參數(shù)進(jìn)行篩選,去除安全參數(shù),篩選出有越權(quán)高風(fēng)險(xiǎn)的參數(shù),以對(duì)易發(fā)生越權(quán)參數(shù)進(jìn)行越權(quán)檢測(cè)。
本實(shí)施例中,易發(fā)生越權(quán)參數(shù)是對(duì)應(yīng)用系統(tǒng)的源代碼進(jìn)行解析,獲取到信息流信息,并獲取信息系流信息中所有的參數(shù),利用越權(quán)發(fā)生原理對(duì)參數(shù)進(jìn)行篩選得到的,可將易發(fā)生越權(quán)參數(shù)寫入列表中,形成易發(fā)生越權(quán)參數(shù)列表。
步驟104,輸出越權(quán)高風(fēng)險(xiǎn)的參數(shù)及相關(guān)信息。
本實(shí)施例中,經(jīng)過(guò)對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行越權(quán)檢測(cè)后,去除安全參數(shù),輸出具有越權(quán)高風(fēng)險(xiǎn)的參數(shù)及相關(guān)信息,其中,相關(guān)信息可以包括:的配置文件的xml文本的行號(hào)、交易標(biāo)識(shí)碼、java處理類、前端頁(yè)面等,還可以包括其他信息,本實(shí)施例中對(duì)此不做限定。
本實(shí)施例提供的基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法,通過(guò)對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行解析,并將解析到的源代碼信息采用語(yǔ)法樹表示;對(duì)語(yǔ)法樹進(jìn)行信息流分析,以獲得信息流信息;根據(jù)預(yù)設(shè)的越權(quán)檢測(cè)策略和信息流信息,對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行越權(quán)檢測(cè);輸出越權(quán)高風(fēng)險(xiǎn)的參數(shù)及相關(guān)信息。由于采用信息流對(duì)參數(shù)進(jìn)行越權(quán)檢測(cè),與應(yīng)用系統(tǒng)業(yè)務(wù)邏輯緊密相關(guān),能夠?qū)υ创a的邏輯進(jìn)行深入分析,所以能夠減少誤報(bào)率,提高檢測(cè)的準(zhǔn)確率,并且實(shí)現(xiàn)了基于業(yè)務(wù)邏輯的越權(quán)漏洞的檢測(cè),使應(yīng)用系統(tǒng)的源代碼在銀行等業(yè)務(wù)場(chǎng)景廣泛的行業(yè)能被安全使用。
圖2為本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法實(shí)施例二的流程圖,如圖2所示,本實(shí)施例提供的基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法,是在本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法實(shí)施例一的基礎(chǔ)上,對(duì)步驟102-步驟104的進(jìn)一步細(xì)化,并且包括了對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行預(yù)處理的步驟,則本實(shí)施例提供的基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法包括以下步驟。
步驟201,獲取應(yīng)用系統(tǒng)源代碼。
進(jìn)一步地,本實(shí)施例中,可采用用戶通過(guò)上傳設(shè)備上傳的方式獲取待檢測(cè)的應(yīng)用系統(tǒng)源代碼,也可從預(yù)設(shè)存儲(chǔ)區(qū)域獲取待檢測(cè)的應(yīng)用系統(tǒng)源代碼,本實(shí)施例中對(duì)獲取應(yīng)用系統(tǒng)源代碼的方式不做限定。
步驟202,對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行預(yù)處理。
進(jìn)一步地,本實(shí)施例中,解析應(yīng)用系統(tǒng)的源代碼中引入的外部文件、宏信息,將外部文件、宏信息替換到源代碼中相應(yīng)的位置。
步驟203,對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行解析,并將解析到的源代碼信息采用語(yǔ)法樹表示。
本實(shí)施例中,步驟203的實(shí)現(xiàn)方式與本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法實(shí)施例一中的步驟101的實(shí)現(xiàn)方式相同,在此不再一一贅述。
步驟204,對(duì)語(yǔ)法樹進(jìn)行信息流分析,以獲得信息流信息。
進(jìn)一步地,本實(shí)施例中,步驟204,對(duì)語(yǔ)法樹進(jìn)行信息流分析,以獲得信息流信息具體包括以下步驟:
步驟204a,對(duì)語(yǔ)法樹進(jìn)行控制流分析,以獲得控制流信息。
其中,控制流信息至少包括:類間關(guān)系信息、方法間關(guān)系信息。
步驟204b,對(duì)語(yǔ)法樹進(jìn)行數(shù)據(jù)流分析,以獲得數(shù)據(jù)流信息。
其中,數(shù)據(jù)流信息至少包括:類信息、方法信息、參數(shù)信息、常量信息、表達(dá)式信息。
可以理解的是,信息流信息包括:控制流信息和數(shù)據(jù)流信息。
步驟205,根據(jù)預(yù)設(shè)的越權(quán)檢測(cè)策略和信息流信息,對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行越權(quán)檢測(cè)。
進(jìn)一步地,本實(shí)施例中,步驟205,根據(jù)預(yù)設(shè)的越權(quán)檢測(cè)策略和信息流信息,對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行越權(quán)檢測(cè)具體包括以下步驟。
步驟205a,根據(jù)配置文件,查看易發(fā)生越權(quán)參數(shù)列表中第一參數(shù)的樣式,判斷第一參數(shù)的樣式是否存在于已配置越權(quán)處理的參數(shù)樣式表中,若是,則結(jié)束,否則,執(zhí)行步驟205b。
本實(shí)施例中,應(yīng)用系統(tǒng)的配置文件中關(guān)聯(lián)存儲(chǔ)有源代碼中所有參數(shù)的參數(shù)名、參數(shù)樣式、參數(shù)所屬交易標(biāo)識(shí)碼、參數(shù)對(duì)應(yīng)的java處理類、參數(shù)對(duì)應(yīng)的前端頁(yè)面等信息。
進(jìn)一步地,本實(shí)施例中,在易發(fā)生越權(quán)參數(shù)表中存儲(chǔ)有應(yīng)用系統(tǒng)易發(fā)生越權(quán)的所有參數(shù)名,在已配置越權(quán)處理的參數(shù)樣式表中存儲(chǔ)有應(yīng)用系統(tǒng)在源代碼中已經(jīng)配置的會(huì)進(jìn)行越權(quán)處理的參數(shù)的所有樣式。如在科藍(lán)平臺(tái)中,在已配置越權(quán)處理的參數(shù)樣式表中存儲(chǔ)的會(huì)進(jìn)行越權(quán)處理的參數(shù)樣式為以“acacnostylewithbean”開頭的參數(shù)樣式。查看配置文件中所有的易發(fā)生越權(quán)的參數(shù)對(duì)應(yīng)的參數(shù)樣式,判斷每個(gè)易發(fā)生越權(quán)的參數(shù)樣式是否存在于已配置越權(quán)處理的參數(shù)樣式表中,若存在于已配置越權(quán)處理的參數(shù)樣式表中,則說(shuō)明應(yīng)用系統(tǒng)會(huì)對(duì)該易發(fā)生越權(quán)參數(shù)進(jìn)行越權(quán)檢測(cè),該易發(fā)生越權(quán)參數(shù)為安全參數(shù),否則該易發(fā)生越權(quán)參數(shù)具有越權(quán)風(fēng)險(xiǎn),需要進(jìn)一步進(jìn)行越權(quán)檢測(cè)。
其中,圖5為本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法實(shí)施例二中步驟205中各參數(shù)關(guān)系的示意圖,如圖5所示,易發(fā)生越權(quán)參數(shù)列表中的所有參數(shù)稱為第一參數(shù)。
步驟205b,獲取第一參數(shù)中第一參數(shù)的樣式不存在于已配置越權(quán)處理的參數(shù)樣式表中的第二參數(shù)及第二參數(shù)對(duì)應(yīng)的交易標(biāo)識(shí)碼。
步驟205c,判斷第二參數(shù)及對(duì)應(yīng)的交易標(biāo)識(shí)碼是否關(guān)聯(lián)存在于越權(quán)處理表中,若是,則結(jié)束,否則,執(zhí)行步驟205d。
其中,如圖5所示,第二參數(shù)為第一參數(shù)中第一參數(shù)的樣式不存在于已配置越權(quán)處理的參數(shù)樣式表中的參數(shù),第一參數(shù)中第一參數(shù)的樣式存在于已配置越權(quán)處理的參數(shù)樣式表中的參數(shù)為安全參數(shù)。
本實(shí)施例中,越權(quán)處理表中關(guān)聯(lián)存儲(chǔ)有應(yīng)用系統(tǒng)的每個(gè)交易及在該交易中會(huì)進(jìn)行越權(quán)檢測(cè)的參數(shù),該越權(quán)處理表是根據(jù)實(shí)際應(yīng)用預(yù)先配置的。關(guān)聯(lián)存儲(chǔ)的方式如可以為“a1.a”,其中“.”之前的文字為交易標(biāo)識(shí)碼,“.”之后的文字為會(huì)進(jìn)行越權(quán)檢測(cè)的參數(shù)。還可以為其他關(guān)聯(lián)存儲(chǔ)方式,本實(shí)施例中對(duì)此不做限定。
具體地,本實(shí)施例中,從第一參數(shù)中獲取具有越權(quán)風(fēng)險(xiǎn)的第二參數(shù)進(jìn)一步進(jìn)行越權(quán)檢測(cè),由于配置文件中關(guān)聯(lián)存儲(chǔ)有每個(gè)參數(shù)及對(duì)應(yīng)交易標(biāo)識(shí)碼,所以通過(guò)配置文件,獲取每個(gè)第二參數(shù)及對(duì)應(yīng)的交易標(biāo)識(shí)碼,判斷第二參數(shù)及對(duì)應(yīng)的交易標(biāo)識(shí)碼是否關(guān)聯(lián)存在于越權(quán)處理表中,若是,則說(shuō)明應(yīng)用系統(tǒng)會(huì)對(duì)該參數(shù)進(jìn)行越權(quán)檢測(cè),該第二參數(shù)是安全參數(shù),否則,說(shuō)明該第二參數(shù)具有越權(quán)風(fēng)險(xiǎn),需要進(jìn)一步進(jìn)行越權(quán)檢測(cè)。
步驟205d,獲取第二參數(shù)中第二參數(shù)及對(duì)應(yīng)的交易標(biāo)識(shí)碼不關(guān)聯(lián)存在于越權(quán)處理表中的第三參數(shù)及第三參數(shù)對(duì)應(yīng)的java處理類的信息流信息。
其中,如圖5所示,第三參數(shù)為第二參數(shù)中不與對(duì)應(yīng)的交易標(biāo)識(shí)碼關(guān)聯(lián)存在于越權(quán)處理表中的參數(shù),第二參數(shù)中與對(duì)應(yīng)的交易標(biāo)識(shí)碼關(guān)聯(lián)存在于越權(quán)處理表中的參數(shù)為安全參數(shù)。
步驟205e,對(duì)第三參數(shù)對(duì)應(yīng)的java處理類的信息流信息進(jìn)行分析,判斷是否對(duì)第三參數(shù)進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作,若是,則結(jié)束,否則執(zhí)行步驟205f。
具體地,本實(shí)施例中,由于配置文件中關(guān)聯(lián)存儲(chǔ)有每個(gè)參數(shù)及對(duì)應(yīng)的java處理類,所以通過(guò)配置文件,獲取第三參數(shù)及第三參數(shù)對(duì)應(yīng)的java處理類的信息流信息。對(duì)每個(gè)第三參數(shù)的java處理類的信息流信息進(jìn)行分析,分析每個(gè)第三參數(shù)是否進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作,其可通過(guò)是否調(diào)取了對(duì)應(yīng)的函數(shù)進(jìn)行判斷,如在科藍(lán)平臺(tái)中,通過(guò)判斷第三參數(shù)是否調(diào)用了searchaccountbyid函數(shù)來(lái)判斷第三參數(shù)是否進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作。若第三參數(shù)進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作,說(shuō)明該第三參數(shù)會(huì)進(jìn)行越權(quán)檢測(cè),為安全參數(shù),否則,說(shuō)明該第三參數(shù)具有越權(quán)風(fēng)險(xiǎn),需要進(jìn)一步進(jìn)行越權(quán)檢測(cè)。
步驟205f,獲取第三參數(shù)中不進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作的第四參數(shù)及第四參數(shù)對(duì)應(yīng)的java處理類的信息流信息。
其中,如圖5所示,第四參數(shù)為第三參數(shù)中不進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作的參數(shù)。第三參數(shù)中進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作的參數(shù)為安全參數(shù)。
步驟205g,對(duì)第四參數(shù)對(duì)應(yīng)的java處理類的信息流信息進(jìn)行分析,判斷第四參數(shù)是否和會(huì)話相關(guān),若是,則結(jié)束,否則,執(zhí)行步驟205h。
進(jìn)一步地,本實(shí)施例中,對(duì)第四參數(shù)對(duì)應(yīng)的java處理類的信息流信息進(jìn)一步進(jìn)行分析,此次判斷第四參數(shù)是否和會(huì)話相關(guān)。若第四參數(shù)來(lái)自于會(huì)話中對(duì)應(yīng)內(nèi)容的覆蓋或者第四參數(shù)與會(huì)話中對(duì)應(yīng)的內(nèi)容進(jìn)行比較,則說(shuō)明第四參數(shù)與會(huì)話相關(guān),與會(huì)話相關(guān)的第四參數(shù)為進(jìn)行越權(quán)檢測(cè)的參數(shù),為安全參數(shù),否則,該第四參數(shù)具有越權(quán)風(fēng)險(xiǎn),需要進(jìn)一步進(jìn)行越權(quán)檢測(cè)。
步驟205h,獲取第四參數(shù)中不與會(huì)話相關(guān)的第五參數(shù)及對(duì)應(yīng)的前端頁(yè)面。
其中,如圖5所示,第五參數(shù)為第四參數(shù)中不與會(huì)話相關(guān)的參數(shù),第四參數(shù)中與會(huì)話相關(guān)的參數(shù)為安全參數(shù)。
可以理解的是,根據(jù)配置文件獲取第五參數(shù)對(duì)應(yīng)的前端頁(yè)面。前端頁(yè)面可為jsp/html頁(yè)面。
步驟205i,根據(jù)前端頁(yè)面判斷第五參數(shù)是否通過(guò)用戶輸入,若是,則結(jié)束,否則,執(zhí)行步驟205j。
步驟205j,將第五參數(shù)中不通過(guò)用戶輸入的參數(shù)作為第六參數(shù)。
其中,如圖5所示,第六參數(shù)為第五參數(shù)中不通過(guò)用戶輸入的參數(shù),第五參數(shù)中通過(guò)用戶輸入的參數(shù)為安全參數(shù)。
進(jìn)一步地,本實(shí)施例中,根據(jù)前端頁(yè)面中參數(shù)的輸入格式判斷第五參數(shù)是否通過(guò)用戶輸入,若輸入格式為.txt格式,則說(shuō)明第五參數(shù)是通過(guò)用戶輸入,否則不是通過(guò)用戶輸入。通過(guò)用戶輸入的第五參數(shù)為安全參數(shù),否則,將第五參數(shù)中不通過(guò)用戶輸入的參數(shù)作為第六參數(shù),經(jīng)過(guò)上述的一步步的越權(quán)檢測(cè)后,第六參數(shù)對(duì)于每一步的越權(quán)檢測(cè)均未通過(guò),則將第六參數(shù)作為發(fā)生越權(quán)的參數(shù)。
步驟206,輸出越權(quán)高風(fēng)險(xiǎn)的參數(shù)及相關(guān)信息。
進(jìn)一步地,本實(shí)施例中,步驟206中輸出越權(quán)高風(fēng)險(xiǎn)的參數(shù)及相關(guān)信息,具體包括:
輸出越權(quán)高風(fēng)險(xiǎn)的參數(shù)名及越權(quán)高風(fēng)險(xiǎn)的參數(shù)對(duì)應(yīng)的配置文件的xml文本的行號(hào)、交易標(biāo)識(shí)碼、java處理類、前端頁(yè)面;
其中,越權(quán)高風(fēng)險(xiǎn)的參數(shù)為第六參數(shù)。
本實(shí)施例提供的基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)方法,根據(jù)預(yù)設(shè)的越權(quán)檢測(cè)策略和信息流信息,對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行越權(quán)檢測(cè)具體包括:根據(jù)配置文件,查看易發(fā)生越權(quán)參數(shù)列表中每個(gè)第一參數(shù)的樣式,判斷每個(gè)第一參數(shù)的樣式是否存在于已配置越權(quán)處理的參數(shù)樣式表中;獲取第一參數(shù)中第一參數(shù)的樣式不存在于已配置越權(quán)處理的參數(shù)樣式表中的第二參數(shù)及第二參數(shù)對(duì)應(yīng)的交易標(biāo)識(shí)碼,判斷第二參數(shù)及對(duì)應(yīng)的交易標(biāo)識(shí)碼是否關(guān)聯(lián)存在于越權(quán)處理表中;獲取第二參數(shù)中第二參數(shù)及對(duì)應(yīng)的交易標(biāo)識(shí)碼不關(guān)聯(lián)存在于越權(quán)處理表中的第三參數(shù)及第三參數(shù)對(duì)應(yīng)的java處理類的信息流信息;對(duì)第三參數(shù)對(duì)應(yīng)的java處理類的信息流信息進(jìn)行分析,判斷是否對(duì)第三參數(shù)進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作;獲取第三參數(shù)中不進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作的第四參數(shù)及第四參數(shù)對(duì)應(yīng)的java處理類的信息流信息;對(duì)第四參數(shù)對(duì)應(yīng)的java處理類的信息流信息進(jìn)行分析,判斷第四參數(shù)是否和會(huì)話相關(guān);獲取第四參數(shù)中不與會(huì)話相關(guān)的第五參數(shù)及對(duì)應(yīng)的前端頁(yè)面,根據(jù)前端頁(yè)面判斷第五參數(shù)是否通過(guò)用戶輸入;將第五參數(shù)中不通過(guò)用戶輸入的參數(shù)作為第六參數(shù)。經(jīng)過(guò)五步的越權(quán)檢測(cè),能夠使檢測(cè)出的越權(quán)高風(fēng)險(xiǎn)參數(shù)更加準(zhǔn)確,進(jìn)一步減少誤報(bào)率,提高檢測(cè)的準(zhǔn)確率,并且對(duì)易發(fā)生越權(quán)參數(shù)進(jìn)行大范圍到小范圍的篩選,有效提高了越權(quán)檢測(cè)的效率。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
圖6為本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)裝置實(shí)施例一的結(jié)構(gòu)示意圖,如圖6所示,本實(shí)施例提供的基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)裝置包括:源代碼解析模塊61,信息流分析模塊62,越權(quán)檢測(cè)模塊63和越權(quán)參數(shù)輸出模塊64。
其中,源代碼解析模塊61,用于對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行解析,并將解析到的源代碼信息采用語(yǔ)法樹表示。信息流分析模塊62,用于對(duì)語(yǔ)法樹進(jìn)行信息流分析,以獲得信息流信息。越權(quán)檢測(cè)模塊63,用于根據(jù)預(yù)設(shè)的越權(quán)檢測(cè)策略和信息流信息,對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行越權(quán)檢測(cè)。越權(quán)參數(shù)輸出模塊64,用于輸出越權(quán)高風(fēng)險(xiǎn)的參數(shù)及相關(guān)信息。
本實(shí)施例提供的基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)裝置可以執(zhí)行圖1所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
圖7為本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)裝置實(shí)施例二的結(jié)構(gòu)示意圖,如圖7所示,本實(shí)施例提供的基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)裝置在本發(fā)明基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)裝置實(shí)施例一的基礎(chǔ)上,進(jìn)一步地,還包括:源代碼獲取模塊71和源代碼預(yù)處理模塊72。
進(jìn)一步地,信息流分析模塊62,具體用于:對(duì)語(yǔ)法樹進(jìn)行控制流分析,以獲得控制流信息,控制流信息至少包括:類間關(guān)系信息、方法間關(guān)系信息;數(shù)據(jù)流分析模塊,用于對(duì)語(yǔ)法樹進(jìn)行數(shù)據(jù)流分析,以獲得數(shù)據(jù)流信息,數(shù)據(jù)流信息至少包括:類信息、方法信息、參數(shù)信息、常量信息、表達(dá)式信息;其中,信息流信息包括:控制流信息和數(shù)據(jù)流信息。
優(yōu)選地,越權(quán)檢測(cè)模塊63,具體用于:根據(jù)配置文件,查看易發(fā)生越權(quán)參數(shù)列表中第一參數(shù)的樣式,判斷第一參數(shù)的樣式是否存在于已配置越權(quán)處理的參數(shù)樣式表中;獲取第一參數(shù)中第一參數(shù)的樣式不存在于已配置越權(quán)處理的參數(shù)樣式表中的第二參數(shù)及第二參數(shù)對(duì)應(yīng)的交易標(biāo)識(shí)碼,判斷第二參數(shù)及對(duì)應(yīng)的交易標(biāo)識(shí)碼是否關(guān)聯(lián)存在于越權(quán)處理表中;獲取第二參數(shù)中第二參數(shù)及對(duì)應(yīng)的交易標(biāo)識(shí)碼不關(guān)聯(lián)存在于越權(quán)處理表中的第三參數(shù)及第三參數(shù)對(duì)應(yīng)的java處理類的信息流信息;對(duì)第三參數(shù)對(duì)應(yīng)的java處理類的信息流信息進(jìn)行分析,判斷是否對(duì)第三參數(shù)進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作;獲取第三參數(shù)中不進(jìn)行數(shù)據(jù)庫(kù)查詢核對(duì)校驗(yàn)操作的第四參數(shù)及第四參數(shù)對(duì)應(yīng)的java處理類的信息流信息;對(duì)第四參數(shù)對(duì)應(yīng)的java處理類的信息流信息進(jìn)行分析,判斷第四參數(shù)是否和會(huì)話相關(guān);獲取第四參數(shù)中不與會(huì)話相關(guān)的第五參數(shù)及對(duì)應(yīng)的前端頁(yè)面,根據(jù)前端頁(yè)面判斷第五參數(shù)是否通過(guò)用戶輸入;將第五參數(shù)中不通過(guò)用戶輸入的參數(shù)作為第六參數(shù)。
進(jìn)一步地,越權(quán)參數(shù)輸出模塊64,具體用于:輸出越權(quán)高風(fēng)險(xiǎn)的參數(shù)名及越權(quán)高風(fēng)險(xiǎn)的參數(shù)對(duì)應(yīng)的配置文件的xml文本的行號(hào)、交易標(biāo)識(shí)碼、java處理類、前端頁(yè)面;其中,越權(quán)高風(fēng)險(xiǎn)的參數(shù)為第六參數(shù)。
進(jìn)一步地,源代碼獲取模塊71,用于獲取應(yīng)用系統(tǒng)源代碼。源代碼預(yù)處理模塊72,用于對(duì)應(yīng)用系統(tǒng)源代碼進(jìn)行預(yù)處理。
本實(shí)施例提供的基于應(yīng)用系統(tǒng)業(yè)務(wù)處理邏輯的源代碼越權(quán)檢測(cè)裝置可以執(zhí)行圖2、圖3和圖4所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。