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