一种静态代码扫描方法、装置、设备及介质制造方法及图纸

技术编号:37996727 阅读:8 留言:0更新日期:2023-06-30 10:10
本发明专利技术提供了一种静态代码扫描方法、装置、设备及介质,通过对抽象语法树结构信息中的元素信息进行匹配,当抽象语法树结构信息匹配失败时,进行验证,当元素信息的设置路径通过验证时,对抽象语法树结构信息中的import语句进行拼接处理,对目标抽象语法树结构信息进行匹配,根据匹配结果输出源代码文件的扫描结果。通过本技术方案的实施,由于对抽象语法树结构信息中元素信息的设置类路径进行验证以及检测抽象语法树结构信息中的import语句的导入方式是否为按需类型导入,则不会存在因错误设置类路径、导入方式不符合而导致输出扫描结果错误的情况,如此不会出现因匹配方式的局限所导致的错误匹配现象,相应提高整个扫描方法的扫描结果的准确率。法的扫描结果的准确率。法的扫描结果的准确率。

【技术实现步骤摘要】
一种静态代码扫描方法、装置、设备及介质


[0001]本专利技术涉及代码扫描
,具体涉及静态代码扫描方法、装置、设备及介质。

技术介绍

[0002]大多数源代码在编写过程中,可能会参杂有类路径设置方式、语句导入方式的内容,则现有静态代码分析技术对于这类源代码进行扫描时,往往会出现扫描错误的结果。但实际上这是由于静态代码分析技术无法正确识别类路径设置方式、语句导入方式的原因,而不是源代码本身出错,由此这类扫描错误的结果并不准确,即存在扫描不准确的问题。
[0003]因此,现有技术有待于改善。

技术实现思路

[0004]本专利技术的主要目的在于提出一种静态代码扫描方法、装置、设备及介质,以至少解决相关技术中代码分析方法对源代码的扫描结果不准确的技术问题。
[0005]本专利技术的第一方面,提供了一种静态代码扫描方法,包括:对源代码文件进行抽象语法树构建,得到对应的抽象语法树结构信息;采用预设的漏洞匹配规则对所述抽象语法树结构信息中的元素信息进行匹配;当所述抽象语法树结构信息匹配失败时,对所述抽象语法树结构信息中元素信息的设置类路径进行验证;当所述抽象语法树结构信息中的元素信息的设置路径通过验证时,检测所述抽象语法树结构信息中的import语句的导入方式是否为按需类型导入;当所述抽象语法树结构信息中的import语句的导入方式属于按需类型导入,对所述抽象语法树结构信息中的import语句进行拼接处理,得到目标抽象语法树结构信息;采用预设的漏洞匹配规则对所述目标抽象语法树结构信息进行匹配,得到匹配结果;根据所述匹配结果输出所述源代码文件的扫描结果。
[0006]本专利技术的第二方面,提供了一种静态代码扫描装置,包括:构建模块,用于对源代码文件进行抽象语法树构建,得到对应的抽象语法树结构信息;第一匹配模块,用于采用预设的漏洞匹配规则对所述抽象语法树结构信息中的元素信息进行匹配;第一验证模块,用于当所述抽象语法树结构信息匹配失败时,对所述抽象语法树结构信息中元素信息的设置类路径进行验证;检测模块,用于当所述抽象语法树结构信息中的元素信息的设置路径通过验证时,检测所述抽象语法树结构信息中的import语句的导入方式是否为按需类型导入;拼接模块,用于当所述抽象语法树结构信息中的import语句为按需类型导入,对所述抽象语法树结构信息中的import语句进行拼接处理,得到目标抽象语法树结构信息;
第二匹配模块,用于采用预设的漏洞匹配规则对所述目标抽象语法树结构信息进行匹配,得到匹配结果;输出模块,用于根据所述匹配结果输出所述源代码文件的扫描结果。
[0007]本专利技术的第三方面,提供了一种电子设备,包括存储器、处理器及总线;所述总线用于实现所述存储器、处理器之间的连接通信;所述处理器用于执行存储在所述存储器上的计算机程序;所述处理器执行所述计算机程序时,实现第一方面提供的静态代码扫描方法中的步骤。
[0008]本专利技术的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现第一方面提供的静态代码扫描方法中的步骤。
[0009]本专利技术提供了一种静态代码扫描方法、装置、设备及介质,通过对源代码文件进行抽象语法树构建得到对应的抽象语法树结构信息,采用预设的漏洞匹配规则对抽象语法树结构信息中的元素信息进行匹配,当抽象语法树结构信息匹配失败时,对抽象语法树结构信息中元素信息的设置类路径进行验证,当抽象语法树结构信息中的元素信息的设置路径通过验证时,检测抽象语法树结构信息中的import语句的导入方式是否为按需类型导入,当抽象语法树结构信息中的import语句为按需类型导入,对抽象语法树结构信息中的import语句进行拼接处理得到目标抽象语法树结构信息,采用预设的漏洞匹配规则对目标抽象语法树结构信息进行匹配得到匹配结果,根据匹配结果输出源代码文件的扫描结果。即本技术方案在进行实施时,由于对抽象语法树结构信息中元素信息的设置类路径进行验证以及检测抽象语法树结构信息中的import语句的导入方式是否为按需类型导入,则不会存在因错误设置类路径、导入方式不符合而导致输出扫描结果错误的情况,如此不会出现因匹配方式的局限所导致的错误匹配现象,相应提高整个扫描方法的扫描结果的准确率。
附图说明
[0010]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0011]图1为本申请第一实施例提供的静态代码扫描方法的基本流程示意图;图2为本申请第二实施例提供的静态代码扫描方法的细化流程示意图;图3为本申请第三实施例提供的静态代码扫描装置的程序模块示意图;图4为本申请第四实施例提供的电子设备的结构示意图。
[0012]本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0013]应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。
[0014]需要注意的是,相关术语如“第一”、“第二”等可以用于描述各种组件,但是这些术语并不限制该组件。这些术语仅用于区分一个组件和另一组件。例如,不脱离本专利技术的范
围,第一组件可以被称为第二组件,并且第二组件类似地也可以被称为第一组件。术语“和/或”是指相关项和描述项的任何一个或多个的组合。
[0015]请参阅图1,图1示出了本专利技术实施例所提供的一种静态代码扫描方法,其包括以下步骤:步骤S101,对源代码文件进行抽象语法树构建,得到对应的抽象语法树结构信息。
[0016]具体的,静态代码扫描工具加载自定义漏洞匹配规则,并获取待扫描的源代码文件,通过预设的构建规则对源代码文件进行抽象语法树构建,从而得到相应的抽象语法树结构信息。其中,源代码(也称源程序)是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令,通常源代码为文本文件,这种文本文件的格式的目的是为了编译出计算机程序。
[0017]需要说明的是,在静态代码扫描工具中需要将源代码转换成抽象语法树结构信息(其属于一种抽象表示,以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构)来进行漏洞分析,将源代码转换成抽象语法树的过程中扫描工具会对语法树的各个节点设置元素信息,例如包路径、类路径、参数个数等等。即抽象语法树结构信息包括各个节点设置的元素信息。
[0018]步骤S102,采用预设的漏洞匹配规则对抽象语法树结构信息中的元素信息进行匹配。
[0019]具体的,当获取到抽象语法树结构信息时,由于抽象语法树结构信息中涵盖元素信息,需要采用已加载的漏洞匹配规则对其进行匹配。匹配的方式为:通过漏洞匹配规则中预设的表达式,对抽象语法树结构信息中涵盖元素信息进行匹配。
[0020]在本实施例本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种静态代码扫描方法,其特征在于,包括:对源代码文件进行抽象语法树构建,得到对应的抽象语法树结构信息;采用预设的漏洞匹配规则对所述抽象语法树结构信息中的元素信息进行匹配;当所述抽象语法树结构信息匹配失败时,对所述抽象语法树结构信息中元素信息的设置类路径进行验证;当所述抽象语法树结构信息中元素信息的设置路径通过验证时,检测所述抽象语法树结构信息中的import语句的导入方式是否为按需类型导入;当所述抽象语法树结构信息中的import语句的导入方式为所述按需类型导入时,对所述import语句进行拼接处理,得到目标抽象语法树结构信息;采用预设的漏洞匹配规则对所述目标抽象语法树结构信息进行匹配,得到匹配结果;根据所述匹配结果输出所述源代码文件的扫描结果。2.如权利要求1所述静态代码扫描方法,其特征在于,所述采用预设的漏洞匹配规则对所述抽象语法树结构信息中的元素信息进行匹配的步骤,具体包括:对所述抽象语法树结构信息进行识别,提取所有的元素信息;依次将预设的漏洞匹配规则中已配置的正则表达式与各所述元素信息进行匹配。3.如权利要求1所述静态代码扫描方法,其特征在于,所述对所述抽象语法树结构信息中元素信息的设置路径进行验证的步骤,具体包括:提取所述抽象语法树结构信息中元素信息的类路径,并获取所述源代码文件的包名;将所述类路径与所述包名进行对比,得到对比结果;根据所述对比结果对所述元素信息的设置路径进行验证。4.如权利要求1所述静态代码扫描方法,其特征在于,所述检测所述抽象语法树结构信息中的import语句的导入方式是否为按需类型导入的步骤,具体包括:对所述抽象语法树结构信息中的import语句的通配符进行识别处理,得到识别结果;根据所述识别结果检测所述import语句的导入方式是否为按需类型导入。5.如权利要求1所述静态代码扫描方法,其特征在于,所述对所述import语句进行拼接处理,得到目标抽象语法树结构信息的步骤,具体包括:当所述import语句的数量为一个时,将处于所述import语句前的所述目标路径与所述目标类名进行拼接,得到目标抽象语法树结构信息;当所述import语句的数量为大于或等于两个时,分别将处于各所述impor...

【专利技术属性】
技术研发人员:吴金卓万振华王颉徐瑞祝陆庆尚
申请(专利权)人:深圳开源互联网安全技术有限公司
类型:发明
国别省市:

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

1