CN110941534A - 检测web应用第三方代码调用的方法及系统 - Google Patents

检测web应用第三方代码调用的方法及系统 Download PDF

Info

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
Application number
CN201911145221.7A
Other languages
English (en)
Inventor
胡娇娇
万振华
王颉
李华
董燕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Kaiyuan Internet Security Technology Co Ltd
Original Assignee
Shenzhen Kaiyuan Internet Security Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Kaiyuan Internet Security Technology Co Ltd filed Critical Shenzhen Kaiyuan Internet Security Technology Co Ltd
Priority to CN201911145221.7A priority Critical patent/CN110941534A/zh
Publication of CN110941534A publication Critical patent/CN110941534A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring 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应用第三方代码调用的方法及系统。
背景技术
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应用第三方代码调用的方法。
CN201911145221.7A 2019-11-19 2019-11-19 检测web应用第三方代码调用的方法及系统 Pending CN110941534A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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程序中第三方库的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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