本发明涉及代码扫描,具体涉及静态代码扫描方法、装置、设备及介质。
背景技术:
1、大多数源代码在编写过程中,可能会参杂有类路径设置方式、语句导入方式的内容,则现有静态代码分析技术对于这类源代码进行扫描时,往往会出现扫描错误的结果。但实际上这是由于静态代码分析技术无法正确识别类路径设置方式、语句导入方式的原因,而不是源代码本身出错,由此这类扫描错误的结果并不准确,即存在扫描不准确的问题。
2、因此,现有技术有待于改善。
技术实现思路
1、本发明的主要目的在于提出一种静态代码扫描方法、装置、设备及介质,以至少解决相关技术中代码分析方法对源代码的扫描结果不准确的技术问题。
2、本发明的第一方面,提供了一种静态代码扫描方法,包括:
3、对源代码文件进行抽象语法树构建,得到对应的抽象语法树结构信息;
4、采用预设的漏洞匹配规则对所述抽象语法树结构信息中的元素信息进行匹配;
5、当所述抽象语法树结构信息匹配失败时,对所述抽象语法树结构信息中元素信息的设置类路径进行验证;
6、当所述抽象语法树结构信息中的元素信息的设置路径通过验证时,检测所述抽象语法树结构信息中的import语句的导入方式是否为按需类型导入;
7、当所述抽象语法树结构信息中的import语句的导入方式属于按需类型导入,对所述抽象语法树结构信息中的import语句进行拼接处理,得到目标抽象语法树结构信息;
8、采用预设的漏洞匹配规则对所述目标抽象语法树结构信息进行匹配,得到匹配结果;
9、根据所述匹配结果输出所述源代码文件的扫描结果。
10、本发明的第二方面,提供了一种静态代码扫描装置,包括:
11、构建模块,用于对源代码文件进行抽象语法树构建,得到对应的抽象语法树结构信息;
12、第一匹配模块,用于采用预设的漏洞匹配规则对所述抽象语法树结构信息中的元素信息进行匹配;
13、第一验证模块,用于当所述抽象语法树结构信息匹配失败时,对所述抽象语法树结构信息中元素信息的设置类路径进行验证;
14、检测模块,用于当所述抽象语法树结构信息中的元素信息的设置路径通过验证时,检测所述抽象语法树结构信息中的import语句的导入方式是否为按需类型导入;
15、拼接模块,用于当所述抽象语法树结构信息中的import语句为按需类型导入,对所述抽象语法树结构信息中的import语句进行拼接处理,得到目标抽象语法树结构信息;
16、第二匹配模块,用于采用预设的漏洞匹配规则对所述目标抽象语法树结构信息进行匹配,得到匹配结果;
17、输出模块,用于根据所述匹配结果输出所述源代码文件的扫描结果。
18、本发明的第三方面,提供了一种电子设备,包括存储器、处理器及总线;
19、所述总线用于实现所述存储器、处理器之间的连接通信;
20、所述处理器用于执行存储在所述存储器上的计算机程序;
21、所述处理器执行所述计算机程序时,实现第一方面提供的静态代码扫描方法中的步骤。
22、本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现第一方面提供的静态代码扫描方法中的步骤。
23、本发明提供了一种静态代码扫描方法、装置、设备及介质,通过对源代码文件进行抽象语法树构建得到对应的抽象语法树结构信息,采用预设的漏洞匹配规则对抽象语法树结构信息中的元素信息进行匹配,当抽象语法树结构信息匹配失败时,对抽象语法树结构信息中元素信息的设置类路径进行验证,当抽象语法树结构信息中的元素信息的设置路径通过验证时,检测抽象语法树结构信息中的import语句的导入方式是否为按需类型导入,当抽象语法树结构信息中的import语句为按需类型导入,对抽象语法树结构信息中的import语句进行拼接处理得到目标抽象语法树结构信息,采用预设的漏洞匹配规则对目标抽象语法树结构信息进行匹配得到匹配结果,根据匹配结果输出源代码文件的扫描结果。即本技术方案在进行实施时,由于对抽象语法树结构信息中元素信息的设置类路径进行验证以及检测抽象语法树结构信息中的import语句的导入方式是否为按需类型导入,则不会存在因错误设置类路径、导入方式不符合而导致输出扫描结果错误的情况,如此不会出现因匹配方式的局限所导致的错误匹配现象,相应提高整个扫描方法的扫描结果的准确率。
1.一种静态代码扫描方法,其特征在于,包括:
2.如权利要求1所述静态代码扫描方法,其特征在于,所述采用预设的漏洞匹配规则对所述抽象语法树结构信息中的元素信息进行匹配的步骤,具体包括:
3.如权利要求1所述静态代码扫描方法,其特征在于,所述对所述抽象语法树结构信息中元素信息的设置路径进行验证的步骤,具体包括:
4.如权利要求1所述静态代码扫描方法,其特征在于,所述检测所述抽象语法树结构信息中的import语句的导入方式是否为按需类型导入的步骤,具体包括:
5.如权利要求1所述静态代码扫描方法,其特征在于,所述对所述import语句进行拼接处理,得到目标抽象语法树结构信息的步骤,具体包括:
6.如权利要求1所述静态代码扫描方法,其特征在于,所述根据所述匹配结果输出所述源代码文件的扫描结果的步骤,具体包括:
7.如权利要求1所述静态代码扫描方法,其特征在于,在所述对所述抽象语法树结构信息中元素信息的设置类路径进行验证的步骤之后,还包括:
8.一种静态代码扫描装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括存储器、处理器及总线;
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至7中任意一项所述的静态代码扫描方法中的步骤。