CN110941534A - 检测web应用第三方代码调用的方法及系统 - Google Patents
检测web应用第三方代码调用的方法及系统 Download PDFInfo
- Publication number
- CN110941534A CN110941534A CN201911145221.7A CN201911145221A CN110941534A CN 110941534 A CN110941534 A CN 110941534A CN 201911145221 A CN201911145221 A CN 201911145221A CN 110941534 A CN110941534 A CN 110941534A
- Authority
- CN
- China
- Prior art keywords
- web application
- party
- program
- called
- class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000012545 processing Methods 0.000 claims abstract description 12
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012360 testing method Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 abstract description 15
- 230000006870 function Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种检测web应用第三方代码调用的方法及系统,其中,该检测方法包括:1)、生成基于Javaagent结构的代理程序包,代理程序包包括有类文件识别程序和监测程序;2)、启动web应用前,将代理程序包添加进JVM参数中,并将监测程序插桩进入web服务器处理请求的入口方法中;3)、启动web应用,类文件识别程序通过JVM上的Instrumentation接口获取web应用所有需要被调用的类文件;4)、获取web应用的第三方库;5)、将上述步骤3中获取到的所有被调用的类文件与上述步骤4中获取到的第三方库中的各个jar文件比对,从而识别出web应用所调用的第三方类文件;通过上述检测方法获取的web应用所有需要被调用的类文件数据都是基于web应用本身,从而有效保证了数据的准确性。
Description
技术领域
本发明涉及web应用代码检测技术领域,尤其涉及一种检测web应用第三方代码调用的方法及系统。
背景技术
Web应用程序是基于浏览器/服务器模式(也称B/S架构)的应用程序。浏览器负责显示来自服务器的数据和接受用户的输入数据,也称为“与用户交互”;服务器负责处理浏览器的访问请求,并把处理结果(数据或者消息)组织成浏览器可以识别的格式文本返回。Web应用程序一般由Java类,配置文件,静态资源和第三方库组成。在构建一个项目的时候,都会引入多个第三方库的类文件来实现各种各样的功能,比如单元测试,日志管理和文件操作都需要第三方库。第三方库一般以.class或jar文件的形式发布。这些库通常包含一个或多个由.class类文件构成的包,每个包以它包含的.class类文件的名字命名。web应用程序开发完成后,无论是后期维护亦或者是增加功能,都需要了解web应用程序在启动过程中都会调用哪些第三方应用类文件,然而,现有技术中还没有针对web应用开发出任何这样的检测程序,这就给后期维护和开发的程序人员带来了不便。
发明内容
本发明的目的是为解决上述技术问题的不足而提供一种能检测web应用程序中第三方库类文件调用的检测web应用第三方代码调用的方法。
本发明的另一目的是提供一种能检测web应用程序中第三方库类文件调用的检测web应用第三方代码调用的系统。
为了实现上述目的,本发明公开一种检测web应用第三方代码调用的方法,所述web应用基于Java框架,其包括:
1)、生成基于Javaagent结构的代理程序包,所述代理程序包包括有类文件识别程序,所述类文件识别程序用于识别待检测所述web应用的所有被调用的第三方代码类文件;
2)、启动所述web应用前,将所述代理程序包添加进JVM参数中;
3)、启动所述web应用,所述类文件识别程序通过所述JVM上的Instrumentation接口获取所述web应用所有需要被调用的类文件;
4)、获取所述web应用的第三方库;
5)、将上述步骤3中获取到的所有被调用的类文件与上述步骤4中获取到的所述第三方库中的各个jar文件比对,从而识别出所述web应用所调用的第三方类文件。
与现有技术相比,本发明检测web应用第三方代码调用的方法,通过将基于Javaagent结构的代理程序包添加进JVM参数中来获取web应用启动过程中所有需要被调用的类文件,然后将获取到的所有需要被调用的类文件与web应用的第三方库一一比对,从而识别出所述web应用所调用的第三方类文件,由此可知,上述检测方法通过Java Agent技术和Java Instrumentation接口的配合获取web应用所有需要被调用的类文件数据,获取的数据都是基于web应用本身,从而有效保证了数据的准确性,而且Java Agent是独立于web应用的代理程序,不会影响web应用本身的功能,增加了检测的灵活性,进而通过上述检测方法可方便地检测出web应用所调用的第三方类文件,给软件维护后进一步开发提供了便利。
较佳地,获取所述web应用的第三方库的具体方法包括:
采用字节码插桩技术将一监测程序插入所述web应用中处理请求的入口方法中,当有请求命令进入所述入口方法时,通过所述监测程序获取所述所述web应用的lib目录路径,然后遍历该路径下所有第三方jar文件,以获取所述web应用的第三方库。
较佳地,所述监测程序属于所述代理程序包。
本发明还公开一种检测web应用第三方代码调用的系统,其包括一基于Javaagent结构的代理程序包、第三方库获取模块和比对模块;
所述代理程序包包括有类文件识别程序,所述类文件识别程序用于识别待检测所述web应用的所有被调用的第三方代码类文件;
所述第三方库获取模块,用于获取所述web应用的第三方库;
比对模块,用于将根据所述类文件识别程序获得的所述第三方代码类文件与根据所述第三方库获取模块获得的的所述第三方库中的jar文件比对,以得出所述web应用所调用的第三方类文件。
较佳地,所述第三方库获取模块通过字节码插桩技术将一监测程序插入所述web应用中处理请求的入口方法中,当有请求命令进入所述入口方法时,通过所述监测程序获取所述所述web应用的lib目录路径,然后遍历该路径下所有第三方jar文件,以获取所述web应用的第三方库。
较佳地,所述监测程序属于所述代理程序包。
本发明还公开一种检测web应用第三方代码调用的系统,其特征在于,包括:
一个或多个处理器;
存储器;
以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述的检测web应用第三方代码调用的方法的指令。
本发明还公开一种计算机可读存储介质,其特征在于,包括测试用计算机程序,所述计算机程序可被处理器执行以完成如上所述的检测web应用第三方代码调用的方法。
附图说明
图1为本发明实施例检测web应用第三方代码调用的方法的流程示意图。
具体实施方式
为详细说明本发明的技术内容、结构特征、实现原理及所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明公开一种检测web应用第三方代码调用的方法,该web应用基于Java框架,其包括:
1)、利用Java Agent技术,生成基于Javaagent结构的代理程序包,代理程序包包括有类文件识别程序,类文件识别程序用于识别待检测web应用的所有被调用的第三方代码类文件;
2)、启动web应用前,将代理程序包添加进JVM参数中;
3)、启动web应用,类文件识别程序通过JVM上的Instrumentation接口获取web应用所有需要被调用的类文件,这其中就包括为web应用自主开发的功能性类文件,和调用的第三方库的类文件;
4)、获取web应用的第三方库;
5)、将上述步骤3中获取到的所有被调用的类文件与上述步骤4中获取到的第三方库中的各个jar文件比对,从而识别出web应用所调用的第三方类文件。
上述检测web应用第三方代码调用的方法,通过将基于Javaagent结构的代理程序包添加进JVM参数中来获取web应用启动过程中所有需要被调用的类文件,然后将获取到的所有需要被调用的类文件与web应用的第三方库一一比对,从而识别出web应用所调用的第三方类文件,由此可知,上述检测方法通过Java Agent技术和Java Instrumentation接口的配合获取web应用所有需要被调用的类文件数据,获取的数据都是基于web应用本身,从而有效保证了数据的准确性,而且Java Agent是独立于web应用的代理程序,不会影响web应用本身的功能,增加了检测的灵活性,进而通过上述检测方法可方便地检测出web应用所调用的第三方类文件,给软件维护和进一步开发提供了便利。
进一步地,获取web应用的第三方库的具体方法包括:
采用字节码插桩技术将一监测程序插入web应用中处理请求的入口方法中,当有请求命令进入入口方法时,通过监测程序获取web应用的lib目录路径,然后遍历该路径下所有第三方jar文件,以获取web应用的第三方库。较佳地,监测程序属于代理程序包。本实施例中,通过字节码插桩技术来收集第三方库,对于web应用本身是无感知的,提高了检测的实用性。
下面以一具体实例详细说明上述检测web应用第三方代码调用的方法的过程。
如图1所示,本实施例中的待检测web应用程序为testWebApp,该web应用的第三方库包括test-1.jar,test-2.jar和test-3.jar。其中testWebApp调用了test-1.jar中的类文件test1.class实现文件上传的功能。检测前,生成的代理程序包为thirdPartyLibrary.jar,该代理程序包括包括有两部分,其一是类文件识别程序,其二是检测程序,另外需要说明的是,关于类文件识别程序和检测程序的具体程序代码为本领域技术人员的公知常识,在此不再赘述。代理程序包生成后,开始检测,检测过程如下:
1、启动testWebApp前,在JVM(Java虚拟机)的参数中手动添加-javaagent:thirdPartyLibrary.jar,并采用字节码插桩技术将监测程序插入web应用中处理请求的入口方法中。
2、启动testWebApp,此时代理程序包中的类文件识别程序通过Java Agent从JVM上的Instrumentation接口获取应用程序所有需要被调用的类文件,这其中就包含需要被testWebApp调用的第三方代码类文件。
3、testWebApp启动成功后,通过浏览器发送请求访问服务器端口,当执行到处理请求的入口方法时,代理程序包的检测程序获取testWebApp的lib目录路径,假设本实施例中的lib路径为/testWebApp/WEB-INFO/lib,然后遍历该路径下的所有第三方jar文件,即可获取testWebApp的第三方库,其中具有三个jar包,分别为test-1.jar,test-2.jar和test-3.jar。
4、将上述步骤2中获取到的所有被调用的类文件与上述步骤3中获取到的第三方库中的各个jar文件比对,从而识别出testWebApp所调用的第三方类文件,即test1.class。
综上,本发明检测web应用第三方代码调用的方法,通过Java Agent技术和JavaInstrumentation的配合获取了web应用所有需要被调用的类文件,然后从类文件的集合中筛选出应用第三方库的类文件。具体地,一个web应用启动成功后,通过浏览器发送请求访问服务器端接口时,都会进入一个处理请求的入口方法,利用字节码插桩技术在该入口方法中插入检测程序,只要有请求发出,检测程序就会被执行,该检测程序的主要作用是获取web应用的lib目录(lib目录下存放着所有web应用第三方库的jar包)的真实路径,然后遍历lib目录下所有jar包,收集web应用的第三方库。
为便于上述检测方法的实施,本发明还公开了一种检测web应用第三方代码调用的系统,其包括一基于Javaagent结构的代理程序包、第三方库获取模块和比对模块;代理程序包包括有类文件识别程序,类文件识别程序用于识别待检测web应用的所有被调用的第三方代码类文件;第三方库获取模块,用于获取web应用的第三方库;比对模块,用于将根据类文件识别程序获得的第三方代码类文件与根据第三方库获取模块获得的的第三方库中的jar文件比对,以得出web应用所调用的第三方类文件。较佳地,第三方库获取模块通过字节码插桩技术将一监测程序插入web应用中处理请求的入口方法中,当有请求命令进入入口方法时,通过监测程序获取web应用的lib目录路径,然后遍历该路径下所有第三方jar文件,以获取web应用的第三方库。较佳地,监测程序属于代理程序包。关于本实施例中的检测web应用第三方代码调用的系统的工作原理和工作过程详见上述检测方法,在此不再赘述。
另外,本发明还公开一种检测web应用第三方代码调用的系统,其包括一个或多个处理器,存储器;以及一个或多个程序,其中一个或多个程序被存储在存储器中,并且被配置成由一个或多个处理器执行,程序包括用于执行如上的检测web应用第三方代码调用的方法的指令。
本发明还公开一种计算机可读存储介质,其包括测试用计算机程序,计算机程序可被处理器执行以完成如上项的检测web应用第三方代码调用的方法。
以上所揭露的仅为本发明的较佳实例而已,当然不能以此来限定本发明之权利范围,因此依本发明申请专利范围所作的等同变化,仍属于本发明所涵盖的范围。
Claims (8)
1.一种检测web应用第三方代码调用的方法,所述web应用基于Java框架,其特征在于,包括:
1)、生成基于Javaagent结构的代理程序包,所述代理程序包包括有类文件识别程序,所述类文件识别程序用于识别待检测所述web应用的所有被调用的第三方代码类文件;
2)、启动所述web应用前,将所述代理程序包添加进JVM参数中;
3)、启动所述web应用,所述类文件识别程序通过所述JVM上的Instrumentation接口获取所述web应用所有需要被调用的类文件;
4)、获取所述web应用的第三方库;
5)、将上述步骤3中获取到的所有被调用的类文件与上述步骤4中获取到的所述第三方库中的各个jar文件比对,从而识别出所述web应用所调用的第三方类文件。
2.根据权利要求1所述的检测web应用第三方代码调用的方法,其特征在于,获取所述web应用的第三方库的具体方法包括:
采用字节码插桩技术将一监测程序插入所述web应用中处理请求的入口方法中,当有请求命令进入所述入口方法时,通过所述监测程序获取所述所述web应用的lib目录路径,然后遍历该路径下所有第三方jar文件,以获取所述web应用的第三方库。
3.根据权利要求2所述的检测web应用第三方代码调用的方法,其特征在于,所述监测程序属于所述代理程序包。
4.一种检测web应用第三方代码调用的系统,其特征在于,包括一基于Javaagent结构的代理程序包、第三方库获取模块和比对模块;
所述代理程序包包括有类文件识别程序,所述类文件识别程序用于识别待检测所述web应用的所有被调用的第三方代码类文件;
所述第三方库获取模块,用于获取所述web应用的第三方库;
比对模块,用于将根据所述类文件识别程序获得的所述第三方代码类文件与根据所述第三方库获取模块获得的的所述第三方库中的jar文件比对,以得出所述web应用所调用的第三方类文件。
5.根据权利要求4所述的检测web应用第三方代码调用的系统,其特征在于,所述第三方库获取模块通过字节码插桩技术将一监测程序插入所述web应用中处理请求的入口方法中,当有请求命令进入所述入口方法时,通过所述监测程序获取所述所述web应用的lib目录路径,然后遍历该路径下所有第三方jar文件,以获取所述web应用的第三方库。
6.根据权利要求5所述的检测web应用第三方代码调用的系统,其特征在于,所述监测程序属于所述代理程序包。
7.一种检测web应用第三方代码调用的系统,其特征在于,包括:
一个或多个处理器;
存储器;
以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如权力要求1至3任一项所述的检测web应用第三方代码调用的方法的指令。
8.一种计算机可读存储介质,其特征在于,包括测试用计算机程序,所述计算机程序可被处理器执行以完成如权力要求1至3任一项所述的检测web应用第三方代码调用的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911145221.7A CN110941534A (zh) | 2019-11-19 | 2019-11-19 | 检测web应用第三方代码调用的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911145221.7A CN110941534A (zh) | 2019-11-19 | 2019-11-19 | 检测web应用第三方代码调用的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110941534A true CN110941534A (zh) | 2020-03-31 |
Family
ID=69907921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911145221.7A Pending CN110941534A (zh) | 2019-11-19 | 2019-11-19 | 检测web应用第三方代码调用的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110941534A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114048488A (zh) * | 2022-01-13 | 2022-02-15 | 杭州默安科技有限公司 | 漏洞检测方法及系统 |
CN114327491A (zh) * | 2022-03-07 | 2022-04-12 | 深圳开源互联网安全技术有限公司 | 源码插桩方法、装置、计算机设备和存储介质 |
CN114564348A (zh) * | 2021-12-16 | 2022-05-31 | 深圳开源互联网安全技术有限公司 | 代码层监测node.js第三方应用的方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411506A (zh) * | 2011-07-07 | 2012-04-11 | 杭州典能科技有限公司 | Java系统业务单元插件式管理系统及业务功能动态变更方法 |
CN106557698A (zh) * | 2016-11-29 | 2017-04-05 | 武汉斗鱼网络科技有限公司 | 一种应用中的组件检测方法和装置 |
CN106845171A (zh) * | 2017-01-20 | 2017-06-13 | 暨南大学 | 一种Android应用程序代码保护机制鉴别方法 |
CN108021411A (zh) * | 2017-12-06 | 2018-05-11 | 国网江苏省电力有限公司电力科学研究院 | 一种业务调用关系的发现系统和发现方法 |
CN108710492A (zh) * | 2018-04-20 | 2018-10-26 | 四川普思科创信息技术有限公司 | 一种识别app程序中第三方库的方法 |
-
2019
- 2019-11-19 CN CN201911145221.7A patent/CN110941534A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411506A (zh) * | 2011-07-07 | 2012-04-11 | 杭州典能科技有限公司 | Java系统业务单元插件式管理系统及业务功能动态变更方法 |
CN106557698A (zh) * | 2016-11-29 | 2017-04-05 | 武汉斗鱼网络科技有限公司 | 一种应用中的组件检测方法和装置 |
CN106845171A (zh) * | 2017-01-20 | 2017-06-13 | 暨南大学 | 一种Android应用程序代码保护机制鉴别方法 |
CN108021411A (zh) * | 2017-12-06 | 2018-05-11 | 国网江苏省电力有限公司电力科学研究院 | 一种业务调用关系的发现系统和发现方法 |
CN108710492A (zh) * | 2018-04-20 | 2018-10-26 | 四川普思科创信息技术有限公司 | 一种识别app程序中第三方库的方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114564348A (zh) * | 2021-12-16 | 2022-05-31 | 深圳开源互联网安全技术有限公司 | 代码层监测node.js第三方应用的方法及系统 |
CN114564348B (zh) * | 2021-12-16 | 2023-04-04 | 深圳开源互联网安全技术有限公司 | 代码层监测node.js第三方应用的方法及系统 |
CN114048488A (zh) * | 2022-01-13 | 2022-02-15 | 杭州默安科技有限公司 | 漏洞检测方法及系统 |
CN114048488B (zh) * | 2022-01-13 | 2022-04-22 | 杭州默安科技有限公司 | 漏洞检测方法及系统 |
CN114327491A (zh) * | 2022-03-07 | 2022-04-12 | 深圳开源互联网安全技术有限公司 | 源码插桩方法、装置、计算机设备和存储介质 |
CN114327491B (zh) * | 2022-03-07 | 2022-06-21 | 深圳开源互联网安全技术有限公司 | 源码插桩方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7275239B2 (en) | Run-time wait tracing using byte code insertion | |
CN111046396A (zh) | web应用测试数据流跟踪方法及系统 | |
CN110941534A (zh) | 检测web应用第三方代码调用的方法及系统 | |
US9147083B1 (en) | Marking and obscuring sensitive values in traces | |
CN110765464B (zh) | 漏洞检测方法、装置、设备及计算机存储介质 | |
CN108038039B (zh) | 记录日志的方法及微服务系统 | |
CN112035354A (zh) | 风险代码的定位方法、装置、设备及存储介质 | |
KR20180009589A (ko) | 프로그램 분석 장치 및 방법 | |
US10216620B2 (en) | Static code testing of active code | |
KR20180009582A (ko) | 프로그램 분석 장치 및 방법 | |
CN115186274A (zh) | 基于iast的安全测试方法及装置 | |
CN114328168B (zh) | 异常检测方法、装置、计算机设备和存储介质 | |
CN113032100A (zh) | 一种异常处理方法、装置、设备及存储介质 | |
CN112445706A (zh) | 程序异常代码获取方法、装置、电子设备以及存储介质 | |
CN112632547A (zh) | 一种数据处理方法和相关装置 | |
CN111352631A (zh) | 一种接口兼容性检测方法及装置 | |
CN115794583A (zh) | 一种内核分析方法及装置 | |
CN116361793A (zh) | 代码检测方法、装置、电子设备及存储介质 | |
CN115705294B (zh) | 用于获取函数调用信息的方法、装置、电子设备和介质 | |
Lee | JNI program analysis with automatically extracted C semantic summary | |
CN113342431B (zh) | 函数调用栈回溯、程序异常处理方法、装置、设备及介质 | |
CN112181816B (zh) | 一种基于场景的接口测试方法、装置、计算机设备及介质 | |
US12072983B2 (en) | Language-independent application monitoring through aspect-oriented programming | |
CN110096281B (zh) | 代码解析方法、解析服务器、存储介质及装置 | |
CN114024872A (zh) | 语音语义平台异常报警方法、设备、存储介质及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200331 |