检测web应用第三方代码调用的方法及系统与流程

文档序号:20215994发布日期:2020-03-31 11:52阅读:526来源:国知局
检测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应用所调用的第三方类文件,由此可知,上述检测方法通过javaagent技术和javainstrumentation接口的配合获取web应用所有需要被调用的类文件数据,获取的数据都是基于web应用本身,从而有效保证了数据的准确性,而且javaagent是独立于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)、利用javaagent技术,生成基于javaagent结构的代理程序包,代理程序包包括有类文件识别程序,类文件识别程序用于识别待检测web应用的所有被调用的第三方代码类文件;

2)、启动web应用前,将代理程序包添加进jvm参数中;

3)、启动web应用,类文件识别程序通过jvm上的instrumentation接口获取web应用所有需要被调用的类文件,这其中就包括为web应用自主开发的功能性类文件,和调用的第三方库的类文件;

4)、获取web应用的第三方库;

5)、将上述步骤3中获取到的所有被调用的类文件与上述步骤4中获取到的第三方库中的各个jar文件比对,从而识别出web应用所调用的第三方类文件。

上述检测web应用第三方代码调用的方法,通过将基于javaagent结构的代理程序包添加进jvm参数中来获取web应用启动过程中所有需要被调用的类文件,然后将获取到的所有需要被调用的类文件与web应用的第三方库一一比对,从而识别出web应用所调用的第三方类文件,由此可知,上述检测方法通过javaagent技术和javainstrumentation接口的配合获取web应用所有需要被调用的类文件数据,获取的数据都是基于web应用本身,从而有效保证了数据的准确性,而且javaagent是独立于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,此时代理程序包中的类文件识别程序通过javaagent从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应用第三方代码调用的方法,通过javaagent技术和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应用第三方代码调用的方法。

以上所揭露的仅为本发明的较佳实例而已,当然不能以此来限定本发明之权利范围,因此依本发明申请专利范围所作的等同变化,仍属于本发明所涵盖的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1