应用程序的防御方法、计算机设备及计算机可读存储介质技术

技术编号:38684635 阅读:13 留言:0更新日期:2023-09-02 22:57
本申请涉及一种应用程序的防御方法及装置。方法包括:动态加载应用程序中待执行的目标代码文件;确定目标代码文件中是否包含代码运行环境中保存的基准标签数据,基准标签数据为自定义长度且随机生成的字符串数据,基准标签数据用于指示安全的代码文件;若目标代码文件不包含基准标签数据,则停止对目标代码文件的操作。采用本方法能够从代码执行的底层进行应用程序的安全防护,不但可以抵御已知安全注入漏洞,对于未公开暴露的潜在注入漏洞的代码文件也可以进行有效的预防。文件也可以进行有效的预防。文件也可以进行有效的预防。

【技术实现步骤摘要】
应用程序的防御方法、计算机设备及计算机可读存储介质


[0001]本申请涉及计算机软件
,特别是涉及一种应用程序的防御方法、计算机设备及计算机可读存储介质。

技术介绍

[0002]随着互联网相关产业的迅速发展,浏览器(web)应用的使用越来越普及。Java语言作为web应用服务体系中的一门重要语言,是众多互联网大厂中开发功能业务时的首选语言。因此,会存在网络黑客针对该语言的一些潜在安全漏洞进行攻击的现象。
[0003]相关技术中,由于Java的命名和目录接口(Java Naming and Directory Interface,JNDI)特性,会导致一些代码或者第三方的依赖存在远程注入的问题。攻击者可以利用JNDI特性对既存代码漏洞进行攻击目录文件的注入。针对这一系列代码注入漏洞问题,通常会在在代码提交前进行审核检查,以预防策略的方式对安全隐患进行规避。常见的审核检查方式包括方式手动代码审查,以及通过自动化工具进行静态和动态代码分析。
[0004]然而,相关技术仅能对已公开暴露的潜在潜入漏洞进行审核,无法针对目前没有被公开暴露的潜在注入漏洞进行有效的预防。

技术实现思路

[0005]基于此,有必要针对上述技术问题,提供一种能够有效预防未公开暴露的潜在注入漏洞的应用程序的防御方法、计算机设备及计算机可读存储介质。
[0006]第一方面,本申请提供了一种应用程序的防御方法。所述方法包括:
[0007]动态加载所述应用程序中待执行的目标代码文件;
[0008]确定所述目标代码文件中是否包含代码运行环境中保存的基准标签数据,所述基准标签数据为自定义长度且随机生成的字符串数据,所述基准标签数据用于指示安全的代码文件;
[0009]若所述目标代码文件不包含所述基准标签数据,则停止对所述目标代码文件的操作。
[0010]在其中一个实施例中,在所述确定所述目标代码文件中是否包含代码运行环境中保存的基准标签数据之前,所述方法还包括:
[0011]确定代码运行环境的目标目录下是否存在所述基准标签数据;
[0012]若所述代码运行环境的目标目录下存在所述基准标签数据,则从所述目标目录中获取所述基准标签数据。
[0013]在其中一个实施例中,在所述确定所述代码运行环境的目标目录下是否存在所述基准标签数据之后,所述方法还包括:
[0014]若所述代码运行环境的目标目录下不存在所述基准标签数据,则从所述代码运行环境中获取默认标签数据,并将所述默认标签数据作为所述基准标签数据。
[0015]在其中一个实施例中,所述方法还包括:
[0016]获取所述目标代码文件的特征信息,所述特征信息包括匿名函数特征和/或动态代理特征;
[0017]根据所述目标代码文件的特征信息,确定所述目标代码文件是否为豁免校验的代码文件;
[0018]若所述目标代码文件为豁免校验的代码文件,则执行所述目标代码文件。
[0019]在其中一个实施例中,所述停止对所述目标代码文件的操作,包括:
[0020]通过修改所述目标代码文件的魔数破坏所述目标代码文件的结构,以使代码校验服务对应的服务线程加载所述目标代码文件时生成所述目标代码文件的异常信息;
[0021]根据所述目标代码文件的异常信息,停止对所述目标代码文件的操作。
[0022]在其中一个实施例中,在所述确定所述目标代码文件中是否包含所述基准标签数据之后,所述方法还包括;
[0023]若所述目标代码文件包含所述基准标签数据,则执行所述目标代码文件。
[0024]在其中一个实施例中,在所述动态加载所述应用程序中待执行的目标代码文件之前,所述方法还包括:
[0025]从字符集合中随机抽取预设数量的字符组成字符串,并将所述字符串作为所述基准标签数据;
[0026]在原始代码文件中添加所述基准标签数据,以生成所述目标代码文件。
[0027]在其中一个实施例中,所述在原始代码文件中添加所述基准标签数据,包括:
[0028]在所述原始代码文件中添加目标属性,所述目标属性的参数名为所述基准标签数据的标签值。
[0029]在其中一个实施例中,在所述从字符集合中随机抽取预设数量的字符组成字符串,并将所述字符串作为所述基准标签数据之后,所述方法还包括:
[0030]将所述基准标签数据保存入所述代码运行环境的目标目录下。
[0031]在其中一个实施例中,所述方法还包括:
[0032]接收基准标签数据的更新指令,所述更新指令中包含有更新后的基准标签数据;
[0033]根据所述更新后的基准标签数据,生成代码校验服务的第一实例,并控制所述代码校验服务的第二实例对应的服务线程停止接收服务请求;
[0034]获取所述第二实例对应的服务线程的执行状态;
[0035]若所述执行状态指示所述第二实例对应的服务线程执行完所有服务请求,则上线所述第一实例对应的服务进程并关闭所述第二实例对应的服务线程;
[0036]其中,所述第一实例为更新后的基准标签数据对应的代码校验服务的实例,所述第二实例为更新前的基准标签数据对应的代码校验服务的实例。
[0037]第二方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的应用程序的防御方法。
[0038]第三方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的应用程序的防御方法。
[0039]上述应用程序的防御方法、计算机设备及计算机可读存储介质,首先动态加载应
用程序中待执行的目标代码文件。再次,确定目标代码文件中是否包含代码运行环境中保存的基准标签数据,该基准标签数据为自定义长度且随机生成的字符串数据,该基准标签数据用于指示安全的代码文件。最后,若目标代码文件不包含基准标签数据,则停止对目标代码文件的操作。由于在代码文件运行前,校验代码文件中是否包含有指示代码安全的基准标签数据,若确定代码文件中不包含基准标签数据,则停止对目标代码文件的操作,进行安全防御。通过该方式,可以从代码执行的底层进行应用程序的安全防护,不但可以抵御已知安全注入漏洞,对于未公开暴露的潜在注入漏洞的代码文件也可以进行有效的预防。
附图说明
[0040]图1为本申请实施例提供的一种应用程序的防御方法的应用环境图;
[0041]图2为本申请实施例提供的一种应用程序的防御方法的流程示意图;
[0042]图3为本申请实施例提供的另一种应用程序的防御方法的流程示意图;
[0043]图4为本申请实施例提供的一种代码文件中插入基准标签数据的原理示意图;
[0044]图5为本申请实施例提供的一种Jar压缩包的结构示意图;
[0045]图6为本申请实施例提供本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种应用程序的防御方法,其特征在于,所述方法包括:动态加载所述应用程序中待执行的目标代码文件;确定所述目标代码文件中是否包含代码运行环境中保存的基准标签数据,所述基准标签数据为自定义长度且随机生成的字符串数据,所述基准标签数据用于指示安全的代码文件;若所述目标代码文件不包含所述基准标签数据,则停止对所述目标代码文件的操作。2.根据权利要求1所述的方法,其特征在于,在所述确定所述目标代码文件中是否包含代码运行环境中保存的基准标签数据之前,所述方法还包括:确定代码运行环境的目标目录下是否存在所述基准标签数据;若所述代码运行环境的目标目录下存在所述基准标签数据,则从所述目标目录中获取所述基准标签数据。3.根据权利要求2所述的方法,其特征在于,在所述确定所述代码运行环境的目标目录下是否存在所述基准标签数据之后,所述方法还包括:若所述代码运行环境的目标目录下不存在所述基准标签数据,则从所述代码运行环境中获取默认标签数据,并将所述默认标签数据作为所述基准标签数据。4.根据权利要求1

3任一项所述的方法,其特征在于,所述方法还包括:获取所述目标代码文件的特征信息,所述特征信息包括匿名函数特征和/或动态代理特征;根据所述目标代码文件的特征信息,确定所述目标代码文件是否为豁免校验的代码文件;若所述目标代码文件为豁免校验的代码文件,则执行所述目标代码文件。5.根据权利要求1所述的方法,其特征在于,所述停止对所述目标代码文件的操作,包括:通过修改所述目标代码文件的魔数破坏所述目标代码文件的结构,以使代码校验服务对应的服务线程加载所述目标代码文件时生成所述目标代码文件的异常信息;根据所述目标代码文件的异常信息,停止对所述目标代码文件的操作。6.根据权利要求1所述的方法,其特征在于,在所述确定所述目标代码文件中是否包含所述基准标签数据之后,所述方法还包括;若所述目...

【专利技术属性】
技术研发人员:尹鹏伟刘浩张高斐张铮姚远
申请(专利权)人:网络通信与安全紫金山实验室
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1