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

一種數(shù)據(jù)獲取方法、分析方法及系統(tǒng)與流程

文檔序號:11154868閱讀:338來源:國知局
一種數(shù)據(jù)獲取方法、分析方法及系統(tǒng)與制造工藝

本發(fā)明涉及數(shù)據(jù)處理技術,具體的講是一種數(shù)據(jù)獲取方法、分析方法及系統(tǒng)。



背景技術:

現(xiàn)有技術中,對業(yè)務進行統(tǒng)計分析的實現(xiàn)方式中,對被測程序的源代碼具有侵入性,要么引入了第三方的工具包,并按工具包的要求編寫代碼記錄業(yè)務信息,要么不引入第三方包,自己實現(xiàn)記錄log,或者數(shù)據(jù)庫。而這樣的實現(xiàn)方式帶來的問題是,業(yè)務統(tǒng)計分析的代碼帶來了維護成本,不容易靈活地去做變更,更關鍵地是,這樣的實現(xiàn)方式依賴于源代碼,對沒有源代碼的部分,無法追蹤。

即,現(xiàn)有技術對運行程序數(shù)據(jù)的獲取,存在依賴源碼,或對被測系統(tǒng)源碼有侵入性等問題,即增加了系統(tǒng)的耦合性,導致維護成本大大提高。



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

為提供一種程序運行時的數(shù)據(jù)獲取方法并利用獲取的數(shù)據(jù)對程序性能參數(shù)進行分析,本發(fā)明實施例提供了一種數(shù)據(jù)獲取方法,包括:

根據(jù)目標代碼預先對應用服務器進行參數(shù)化配置;

應用服務器根據(jù)參數(shù)化配置對被測程序進行埋點;

被測程序運行時觸發(fā)埋點獲取程序運行時的數(shù)據(jù)。

本發(fā)明實施例中,所述的應用服務器根據(jù)參數(shù)化配置對被測程序進行埋點包括:

應用服務器根據(jù)參數(shù)化配置在函數(shù)的入口處和出口處對被測程序進行埋點。

本發(fā)明實施例中,所述的程序運行時的數(shù)據(jù)包括:被測程序代碼執(zhí)行過程中的函數(shù)調用數(shù)據(jù),所述的函數(shù)調用數(shù)據(jù)包括:調用函數(shù)的程序執(zhí)行時間、調用函數(shù)的參數(shù)及訪問數(shù)據(jù)。

本發(fā)明實施例中,所述的被測程序為Java程序。

同時,本發(fā)明還提供一種數(shù)據(jù)分析方法,法包括:

根據(jù)目標代碼預先對應用服務器進行參數(shù)化配置;

應用服務器根據(jù)參數(shù)化配置對被測程序進行埋點;

被測程序運行時觸發(fā)埋點獲取程序運行時的數(shù)據(jù);

根據(jù)獲取的程序運行時的數(shù)據(jù)生成數(shù)據(jù)分析結果。

本發(fā)明實施例中,所述的應用服務器根據(jù)參數(shù)化配置對被測程序進行埋點包括:

應用服務器根據(jù)參數(shù)化配置在函數(shù)的入口處和出口處對被測程序進行埋點。

本發(fā)明實施例中,所述的程序運行時的數(shù)據(jù)包括:被測程序代碼執(zhí)行過程中的函數(shù)調用數(shù)據(jù),所述的函數(shù)調用數(shù)據(jù)包括:調用函數(shù)的程序執(zhí)行時間、調用函數(shù)的參數(shù)及訪問數(shù)據(jù)。

本發(fā)明實施例中,所述的根據(jù)獲取的程序運行時的數(shù)據(jù)生成數(shù)據(jù)分析結果包括:

根據(jù)被測程序代碼執(zhí)行過程中的調用函數(shù)的程序執(zhí)行時間生成性能分析結果;

根據(jù)被測程序代碼執(zhí)行過程中的調用函數(shù)的參數(shù)生成安全分析結果;

根據(jù)被測程序代碼執(zhí)行過程中的調用函數(shù)的訪問數(shù)據(jù)生成訪問行為分析結果。

本發(fā)明實施例中,所述的被測程序為Java程序。

進一步,本發(fā)明還提供一種數(shù)據(jù)分析系統(tǒng),系統(tǒng)包括應用服務器和數(shù)據(jù)處理器;

所述的應用服務器包括:

配置模塊,用于根據(jù)目標代碼預先對應用服務器進行參數(shù)化配置;

埋點模塊,用于根據(jù)參數(shù)化配置對被測程序進行埋點;

數(shù)據(jù)獲取模塊,用于被測程序運行時觸發(fā)埋點獲取程序運行時的數(shù)據(jù);

所述的數(shù)據(jù)處理器,用于根據(jù)獲取的程序運行時的數(shù)據(jù)生成數(shù)據(jù)分析結果。

本發(fā)明提供的數(shù)據(jù)獲取方法、分析方法及系統(tǒng),對被測系統(tǒng)無需額外改造,以應用服務器埋點方式記錄了方法的調用參數(shù),耗時等信息。遵循標準接口去埋點,具有良好的適配性,且可以按需要進行定制,具有良好的擴展性。服務端的分析組件能從各個維度分析數(shù)據(jù),可按需要擴展,提升了數(shù)據(jù)利用的價值。能進行靈活的配置,能和服務端靈活通信和控制,系統(tǒng)整體設計的耦合度較低,靈活性較高。

為讓本發(fā)明的上述和其他目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附圖式,作詳細說明如下。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明公開的數(shù)據(jù)獲取方法的流程圖;

圖2為本發(fā)明實施方式的系統(tǒng)架構圖;

圖3為本發(fā)明實施例中的代碼截圖;

圖4為本發(fā)明實施例中的代碼截圖;

圖5為本發(fā)明實施例中的代碼截圖;

圖6為本發(fā)明實施例中的代碼截圖;

圖7為本發(fā)明實施例中的代碼截圖;

圖8為本發(fā)明實施例中的代碼截圖;

圖9為本發(fā)明實施例中的一個樹形調用結構框圖;

圖10為本發(fā)明實施例中服務器端組件框圖。

具體實施方式

下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

如圖1所示,為本發(fā)明提供一種數(shù)據(jù)獲取方法,其包括:

步驟S101,根據(jù)目標代碼預先對應用服務器進行參數(shù)化配置;

步驟S102,應用服務器根據(jù)參數(shù)化配置對被測程序進行埋點;

步驟S103,被測程序運行時觸發(fā)埋點獲取程序運行時的數(shù)據(jù)。

本發(fā)明實施例中,所述的程序運行時的數(shù)據(jù)包括:被測程序代碼執(zhí)行過程中的函數(shù)調用數(shù)據(jù),所述的函數(shù)調用數(shù)據(jù)包括:調用函數(shù)的程序執(zhí)行時間、調用函數(shù)的參數(shù)及訪問數(shù)據(jù)。

本發(fā)明的技術方案其特點是能對程序運行的函數(shù)代碼做采樣和分析,具體來說是在函數(shù)的入口和出口進行埋點采樣,并可以按需要對函數(shù)輸入?yún)?shù)做記錄,本發(fā)明的實施例中,一份完整的采樣記錄是一個樹形結構,其有且僅有一個根節(jié)點,樹的節(jié)點表示一次函數(shù)調用,當前節(jié)點的子節(jié)點表示當前節(jié)點的函數(shù)調用了子節(jié)點函數(shù)。對業(yè)務相關的處理函數(shù)來說,其輸入?yún)?shù)通常都有很強的業(yè)務相關性,只要獲取了這些輸入?yún)?shù),就可以對業(yè)務統(tǒng)計分析。

現(xiàn)有的對業(yè)務進行統(tǒng)計分析的實現(xiàn)方式中,對被測程序的源代碼具有侵入性,要么引入了第三方的工具包,并按工具包的要求編寫代碼記錄業(yè)務信息,要么不引入第三方包,自己實現(xiàn)記錄log,或者數(shù)據(jù)庫。而這樣的實現(xiàn)方式帶來的問題是,業(yè)務統(tǒng)計分析的代碼帶來了維護成本,不容易靈活地去做變更,更關鍵地是,這樣的實現(xiàn)方式依賴于源代碼,對沒有源代碼的部分,無法追蹤。而本案解決了這樣的痛點:不需要被測程序的源代碼,對被測程序沒有侵入性,可隨時打開或關閉追蹤功能,將數(shù)據(jù)的獲取與分析分離,并提供了豐富的分析功能。

如圖2所示,為本發(fā)明實施方式的系統(tǒng)架構圖,Java的應用程序一般是部署在應用服務器202(本發(fā)明實施例中應用服務器包括:weblogic,jboss,tomcat等)上的,當然也可能是獨立的程序不需要應用服務器。但是不論應用部署方式如何,都需要在程序啟動時加載agent,而agent會對應用程序代碼進行埋點,并將埋點獲得的數(shù)據(jù)傳回數(shù)據(jù)處理服務器server202,由數(shù)據(jù)處理服務器202對數(shù)據(jù)進行進一步分析。

應用服務器Agent節(jié)點。Agent的任務包括:完成代碼埋點;將收集到的數(shù)據(jù)傳到服務端;接收服務端的控制指令。代碼埋點只在函數(shù)的入口和出口處,此外,并不是每處函數(shù)入口參數(shù)都做記錄,而只在必要的地方(如url訪問入口)記錄,這樣設計的原因在于,一方面在于用戶基本只關心部分組件的訪問參數(shù)記錄,另一方面在于由于程序自身的內(nèi)在邏輯關聯(lián),可以大致推導前續(xù)的訪問參數(shù)序列或后續(xù)的訪問參數(shù)序列,甚至于可以根據(jù)關鍵參數(shù)在測試環(huán)境中還原整個運行過程,所以,記錄關鍵的入口參數(shù)基本就滿足了分析需要。同理,函數(shù)返回參數(shù)基本是不記錄的,因為可以通過輸入?yún)?shù)計算出返回參數(shù),如確有需要(如統(tǒng)計返回的應答碼),本案支持以配置或擴展的方式記錄返回參數(shù)。

本發(fā)明實施例中,Agent埋點是標準的方式,簡要說明如下:

Java程序啟動方式是找到main函數(shù)入口并執(zhí)行,舉例寫了一個Helloword的程序,里面包含一個main函數(shù),則運行這個Helloword程序的方式是:java Helloword。要加載agent,就要將啟動方式改為java-javaagent:agent.jar Helloword。-javaagent參數(shù)是java原生支持的接口,本案agent端的實現(xiàn)就是利用這一接口。所以,應用如果部署在weblogic上,我們需要將agent的jar包放到weblogic的bin目錄下,并修改bin目錄下weblogic的啟動腳本,讓其帶上-javaagent的參數(shù)即可。其它應用服務器的如jboss,tomcat,過程與weblogic類似,只是目錄結構,腳本不一樣而已。Agent和server之間的通信通過參數(shù)進行配置。Agent的配置參數(shù)主要包括:include,exclude表示哪些代碼需要埋點或不埋點;ip,port表示數(shù)據(jù)處理server端的通信地址;localport表示agent監(jiān)聽端口,用來接收服務端的啟停等命令;localfile表示agent將數(shù)據(jù)寫入本地文件的路徑。

數(shù)據(jù)處理服務器Server節(jié)點。Server節(jié)點的任務包括:接收agent的數(shù)據(jù);完成多樣的數(shù)據(jù)分析;對agent進行啟停等控制。Server端通過socket接收agent的數(shù)據(jù),并記庫,供后續(xù)分析。數(shù)據(jù)的分析包括,訪問入口分析,安全分析,性能分析等。Agent提供啟停接口是為了靈活控制,譬如只收集某段時間的數(shù)據(jù)。

本發(fā)明實施例系統(tǒng)的可擴展性:

當被測系統(tǒng)越來越多時,我們需要在每個被測系統(tǒng)上部署Agent,這是個一次性的操作。所以有多少被測系統(tǒng)就有多少agent節(jié)點存在。但server節(jié)點則可以按需分配,如果某server節(jié)點處理能力較強,則可以考慮接收多個agent的數(shù)據(jù),如果server節(jié)點不夠用了,則可以考慮擴充server節(jié)點。出于高可用考慮,如果agent發(fā)現(xiàn)某server不可用,可以將數(shù)據(jù)寫入本地文件中,后續(xù)將文件導入server端即可。

對本發(fā)明實施例的Agent端埋點說明:

Agent埋點范圍可以通過include,exclude進行參數(shù)化配置。埋點的技術原理在于java是基于字節(jié)碼解釋執(zhí)行的,只需要對目標程序的字節(jié)碼進行修改得到一份新的字節(jié)碼,java虛擬機執(zhí)行新的字節(jié)碼,觸發(fā)埋點代碼就可以進行數(shù)據(jù)收集。本案對目標程序字節(jié)碼的修改并不修改原程序的執(zhí)行邏輯,只是在方法的入口處加入一段字節(jié)碼表示方法調用開始,并在方法的出口處(如返回指令return)之前加入一段字節(jié)碼表示方法調用結束,追蹤記錄一系列的調用開始和結束事件,就形成了方法在運行時的樹形調用結構數(shù)據(jù)。

為完成字節(jié)碼埋點任務,本發(fā)明實施例可采用java字節(jié)碼操作工具asm,但并不以此為限。本發(fā)明實施例中agent埋點的一個特別考慮的地方是基于技術規(guī)范、標準接口去埋點,使agent能適應程序代碼的不同實現(xiàn)。舉例而言,java定義了數(shù)據(jù)操作的接口類如Connection,PreparedStatment等,并定義了接口類的相關函數(shù),而DB2,mysql的數(shù)據(jù)庫驅動程序基于接口定義給出了不同的實現(xiàn),本案基于接口函數(shù)定義去進行埋點,就能適應不同的實現(xiàn)。同時,如果確有需要,如針對DB2做埋點優(yōu)化,也可以定制agent進行特殊處理。

以一個簡單的例子,說明如何埋點。參考如圖3所示的代碼片段,Calc類有一個做整數(shù)加法的函數(shù)add,該函數(shù)編譯后的字節(jié)碼截圖如圖4所示,其只列出了核心的字節(jié)碼指令,略去了一些不影響函數(shù)執(zhí)行補充信息指令,如表示行信息的LINENUMBER指令。JAVA字節(jié)碼指令中,I表示int,ILOAD表示從某位置加載int,ISTORE表示將int存入某位置,IRETURN表示返回int值。

在add函數(shù)入口埋點,埋點邏輯要放在任何add函數(shù)的指令執(zhí)行之前,即L0之前。在add函數(shù)出口埋點,埋點邏輯要放在返回指令之前,即IRETURN指令之前。如果是對源碼做改動達成埋點的目的,則源碼可能是如圖5所示的形式,其中的StartEnd類的start方法和end方法,對add方法的入口和出口信息進行了捕捉。本例StartEnd只是做了簡單的輸出,代碼截圖如圖6所示。

本申請的技術方案不依賴源代碼,直接修改字節(jié)碼完成了埋點,原理是使用字節(jié)碼修改工具,在方法入口出口處插入函數(shù)調用INVOKE指令。埋點后的add函數(shù)字節(jié)碼的截圖如圖7所示。

本發(fā)明實施例中的埋點,具體是利用了INVOKESTATIC函數(shù)調用指令,INVOKESTATIC指令之前的LDC,ILOAD指令是為函數(shù)調用傳入?yún)?shù),如此,就達到了和修改源代碼一樣的埋點效果。將埋點完后的add方法交由JAVA虛擬機執(zhí)行,就會觸發(fā)埋點,收集到add方法執(zhí)行的信息??偨Y分析字節(jié)碼時,入口和出口識別規(guī)律:在訪問了方法的名稱參數(shù)等信息后,接下來就是函數(shù)的入口,此時進行入口埋點,使函數(shù)的所有指令在入口埋點之后。在訪問到返回指令時,如IRETURN,FRETURN等,先進行出口埋點,再訪問返回指令,使出口埋點在返回指令之前。特別注意的是,函數(shù)的入口有且僅有一個,但出口可以有多個,所以,一個函數(shù)可能進行多次出口埋點。

本實施例中如何確認方法的開始和結束:

在前面的例子中,分別調用start和end方法,來進行入口和出口埋點,示例代碼只是進行了輸出,而要準確匹配方法的開始和結束,需要處理好父子函數(shù)調用關系。為此,本案設計了MethodFrame的數(shù)據(jù)結構,其包含一個指向父調用的引用,還包含當前方法的名稱、參數(shù)等信息。處理流程如下:

1、發(fā)生start調用,表示方法執(zhí)行開始,為該start調用創(chuàng)建MethodFrame數(shù)據(jù)結構,記為c。如果當前線程調用的MethodFrame信息為空,則此start調用是調用的根,且c.parent=null。如果當前線程調用的MethodFrame信息不為空,記為p,更新c.parent=p,且更新當前線程調用的MethodFrame信息為c,即由p變更為c。

2、發(fā)生end調用,表示方法執(zhí)行完畢,取得當前線程調用的MethodFrame信息,記為c,并取得c的parent信息,記為p,即p=c.parent。將當前線程調用的MethodFrame信息更新為p,即由c變更為p。如果p==null,表示根調用結束,此時,我們已經(jīng)拿到了完整的父子調用關系,保存該調用關系供后續(xù)分析。如果p不為null,表明還要處理更多的start-end調用事件。

舉例:假設有如下start-end序列:start(a)start(b)end(b)start(c)start(d)end(d)end(c)end(a)。則由上面兩步處理可得:a是根調用,b的parent是a,c的parent也是a,即a分別調用了b和c。d的parent是c,即c調用了d。

埋點數(shù)據(jù)的時序說明:

以一個簡化的查看訂單的網(wǎng)頁訪問為例,假定應用程序部署在jboss應用服務器上,可能的過程如下:

(1)用戶在瀏覽器上,訪問http://www.buy.com/order/listall.action?userid=1001;

(2)Jboss服務器收到請求,并將請求分配到能處理/order/listall.action這個url的http處理類中。如果沒有對應的處理類,則返回HTTP 404應答。此處我們假定有相應的http處理類存在;

(3)為了返回訂單信息在網(wǎng)頁上展示,http處理類訪問了數(shù)據(jù)庫。即http處理類又調用了數(shù)據(jù)庫的連接獲取函數(shù),并執(zhí)行了sql語句(可能是select*from orders where userid=1001)進行數(shù)據(jù)庫查詢;

(4)用戶在網(wǎng)頁上產(chǎn)看到了訂單信息。

本例中,應用的訪問入口是http協(xié)議暴露的url(/order/listall.action),并帶上了訪問參數(shù)(userid=1001),在實際應用中,一般會暴露多個url訪問入口,并配合使用各自的訪問參數(shù)。Jboss是基于J2EE規(guī)范標準的應用服務器,而J2EE規(guī)范中,重要的一部分就是servlet規(guī)范。現(xiàn)階段servlet的實現(xiàn),主要還是對http協(xié)議做面向對象的封裝,如將請求封裝成HttpServletRequest對象,響應封裝成HttpServletResponse對象。Servlet的接口規(guī)范中定義了2個函數(shù),service(HttpServletRequest request,HttpServletResponse response)和doFilter(ServletRequest request,ServletResponse response,FilterChain chain),本案的實現(xiàn)就是對service和doFilter這樣的標準函數(shù)做埋點,并對函數(shù)的輸入?yún)?shù)做了處理,獲取了http訪問的url和參數(shù)。而weblogic和tomcat都是基于J2EE規(guī)范的服務器,所以,本案的實現(xiàn)方式具有通用性。此外,如果應用不是J2EE的程序,即采用了新的標準或新的實現(xiàn)方式,本案也還是可以做支持,引入的額外工作是要類似分析J2EE規(guī)范一樣去分析新的標準和實現(xiàn)方式。

以service(HttpServletRequest request,HttpServletResponse response)為例,可以從第一個參數(shù)request對象中獲取請求的url,因為request對象暴露了標準的getRequestURI()函數(shù)來分別獲取請求url。本案的處理方式是在入口埋點時,先調用request對象的getRequestURI()函數(shù)拿到url值,并將url值傳給埋點的start函數(shù),這樣start調用發(fā)生時,創(chuàng)建的MethodFrame信息就記錄到了該url值。此番操作插入的字節(jié)碼如圖8的代碼截圖所示。

本發(fā)明實施例中訪問參數(shù)的獲取也是類似,調用request對象的getParameterMap()函數(shù)拿到結果值,并將該結果值傳給start函數(shù)即可,將url和參數(shù)獲取一并處理,稍稍復雜一點,即要插入更多的字節(jié)碼來完成工作,但原理都是一致的。

假定本例第(2)步,是由一個processHttp的函數(shù)作為入口處理http的請求,并調用了函數(shù)isEmpty對參數(shù)userid進行是否為空的判斷,接著調用了queryDB的函數(shù)進行數(shù)據(jù)庫查詢。本例第3步,進行數(shù)據(jù)庫訪問,假定由queryDB函數(shù)完成。數(shù)據(jù)庫訪問也有相應的標準接口函數(shù)定義,如prepareStatement(String sql)函數(shù),在此不一一枚舉,本案也對這種標準接口函數(shù)做了埋點,獲取訪問數(shù)據(jù)庫的sql語句。具體到本例,假定queryDB函數(shù)調用了prepareStatement函數(shù)進行數(shù)據(jù)庫查詢,則其執(zhí)行的sql語句(select*from orders where userid=1001)將會被記錄下來。生成一樹形調用結構,如圖9所示,為本實施例生成的一樹形調用結構圖,用戶的每一次訪問都會得到一份調用結構數(shù)據(jù),agent負責將這些數(shù)據(jù)傳給server端。

Server端主要組件說明,如圖10所示,下面對server端主要組件做說明。

通訊組件:負責網(wǎng)絡通訊,主要任務包括接收來自agent的數(shù)據(jù)以及對agent的收集做開始、停止這樣的控制操作。

性能分析組件:對抓取的數(shù)據(jù)做性能統(tǒng)計分析。Agent在對方法埋點的時候,記錄了方法開始和結束的時間,以此為依據(jù)對方法耗時進行統(tǒng)計分析。方法的總執(zhí)行時間是方法自身邏輯執(zhí)行時間和該方法調用的其他方法耗時的和值,方法的凈執(zhí)行時間是方法的總執(zhí)行時間減去該方法調用其他方法耗時的差值。用圖2的樹形調用結構來說,某節(jié)點的總耗時包含了該節(jié)點的所有直接子節(jié)點耗時以及自身耗時,某節(jié)點的凈耗時是總耗時減去所有直接子節(jié)點耗時。性能分析組件主要是按特征進行分類統(tǒng)計。如以系統(tǒng)的url為特征進行分類,統(tǒng)計每個url訪問的最短處理時間,最長處理時間,平均處理時間等。此外,通常應用的數(shù)據(jù)庫訪問是比較耗時的,性能分析組件會特別地對sql語句進行分析,指出哪些sql執(zhí)行耗時較多,需要優(yōu)化性能。如果需要以自定義的維度進行分析,可以對組件進行擴展。

安全分析組件:程序的訪問入口可能接收到惡意的訪問參數(shù),引發(fā)數(shù)據(jù)泄露、程序異常等安全問題。Agent埋點時,在方法入口處會記錄方法的參數(shù),安全分析組件以此為基礎進行安全分析。安全分析組件提供兩方面的功能:一是識別惡意訪問參數(shù)和程序異常,給出安全優(yōu)化建議;二是以正常參數(shù)為基礎,變異構造出異常參數(shù),并以該異常參數(shù)訪問程序,對程序做安全評估。就前文查看訂單的例子來說,用戶訪問/order/listall.action這個url時,提供了參數(shù)userid=1001,其中key是userid,value是1001,而1001這個值,會作為參數(shù)傳遞到后續(xù)的數(shù)據(jù)庫訪問操作中,如果應用程序沒有做防御機制,則就可能引起sql注入這一安全問題。安全分析組件會分析訪問參數(shù)的<key,value>對的分布情況,包括是否出現(xiàn)了新的訪問key值,是否key對應的value出現(xiàn)新的類型。具體到上例就是,是否出現(xiàn)了userid之外的key作為輸入,如開源框架struts就曾發(fā)生過對http參數(shù)解析導致的任意代碼執(zhí)行漏洞,而這個漏洞是在訪問時帶上額外參數(shù)觸發(fā);是否userid的值出現(xiàn)了新的類型,如‘or 1=1是一種已知常見的sql攻擊向量,則如果參數(shù)值出現(xiàn)了‘or 1=1就很可能是惡意的訪問行為,同理,安全組件通過修改正常訪問參數(shù)為攻擊向量進行訪問,就可以對應用做安全評估。對常見的風險如sql注入攻擊,安全分析組件會對執(zhí)行的sql進行分析,判斷是否使用了安全的api函數(shù),以及有沒有sql注入發(fā)生。

訪問行為分析組件:主要通過對訪問數(shù)據(jù)進行在線或離線的挖掘分析,識別用戶的行為特征,用戶來源,偏好,留存率,活躍程度等。行為分析同時有助于測試人員對測試場景,案例進行查漏補缺。對不同的應用來說,需要識別的用戶特征一般會有所不同。對搜索類應用來說,可能需要識別頻度最高的關鍵詞;對資訊類應用來說,可能需要識別訪問的熱點,如哪些url近期經(jīng)常被訪問;對購物應用來說,可能關注用戶從下訂單到支付的整體流程是否順暢,是否重復購買等等。以上種種,本案可通過訪問參數(shù)統(tǒng)計分析,url統(tǒng)計分析,訪問序列分析實現(xiàn)。

本發(fā)明的技術方案對被測系統(tǒng)無需額外改造,以agent埋點方式記錄了方法的調用參數(shù),耗時等信息。agent遵循標準接口去埋點,具有良好的適配性,且可以按需要進行定制,具有良好的擴展性。服務端的分析組件能從各個維度分析數(shù)據(jù),可按需要擴展,提升了數(shù)據(jù)利用的價值。agent能進行靈活的配置,能和服務端靈活通信和控制,系統(tǒng)整體設計的耦合度較低,靈活性較高。

本領域內(nèi)的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。

本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

本發(fā)明中應用了具體實施例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
九寨沟县| 平原县| 阿克苏市| 定南县| 宜丰县| 榆林市| 沈丘县| 阳高县| 岢岚县| 郧西县| 昭觉县| 高碑店市| 南平市| 吴川市| 舞阳县| 潜山县| 临城县| 荃湾区| 汕头市| 成都市| 龙海市| 凌云县| 榆树市| 宁津县| 温宿县| 出国| 长治市| 皋兰县| 景东| 天长市| 长子县| 道孚县| 西吉县| 同德县| 库车县| 化德县| 修水县| 娄底市| 宜君县| 离岛区| 墨竹工卡县|