一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种软件物料清单的生成方法和装置与流程

2022-12-09 23:44:39 来源:中国专利 TAG:


1.本发明涉及软件成分安全技术领域,具体涉及一种软件物料清单的生成方法和装置。


背景技术:

2.在现代的软件开发工作中,开发人员为了提高开发效率,会采用大量的开源组件,据gartner公司的调查统计,绝大多数的软件开发中都或多或少使用了各类开源的软件组件,各种便利的开源组件给开发人员带来了极大的便利,然而,任何的便利都容易带来风险,开源组件的广泛普及和使用带来的风险不容忽视:如开源组件的运维和管理风险、漏洞和数据安全风险、合规和知识产权许可风险等,由于这些开源组件都是研发团队在开发软件时自行下载使用,并未经过安全筛选,因此最终开发出的软件可能存在诸多安全问题,且开发团队一般不提供软件的物料清单,将软件交付给企业时,企业无法知悉该软件的安全问题,因此,需要对软件进行组件的成分分析来获取物料清单,而目前尚无完善落地的软件物料清单的获取方法,并且在进行此工作时,通常需要建设用于进行组件成分比对的数据库,而建立此类数据库需要大量组件数据,而如何在相关的网站中获取组件数据对于目前行业来说仍是需要克服的难点。
3.因此,有必要提供一种软件物料清单的生成方法和装置,以解决上述问题。


技术实现要素:

4.本发明的目的在于提供一种软件物料清单的生成方法和装置,能够通过选择合适的方法去抓取信息来源网站内的组件数据,有利于提高组件数据库的完整度以及构造效率,进而有利于避免生成的软件物料清单出现组件遗漏。
5.为实现上述目的,本发明提供了一种软件物料清单的生成方法,包括:
6.确定与组件相关的信息来源网站是否存在检索接口;
7.若所述信息来源网站存在所述检索接口,则分别代入不同的检索元素至所述检索接口,所述信息来源网站根据所述检索元素与组件的信息进行匹配,并返回与对应所述检索元素相关的组件数据,所述检索元素依据预设的数据抓取策略生成;
8.若所述信息来源网站不存在所述检索接口,则遍历所述信息来源网站以及所述信息来源网站的多级子页面内组件的信息,并返回对应组件数据;
9.基于返回的组件数据,构造组件数据库;
10.解析待检测软件的源码包以获取匹配信息,并根据所述匹配信息匹配所述组件数据库内对应的组件数据以生成所述待检测软件的软件物料清单;
11.其中,组件数据包括组件信息、漏洞信息、许可信息、文件信息、代码片段信息。
12.可选地,“所述检索元素依据预设的数据抓取策略生成”包括:
13.根据所述信息来源网站内组件的索引信息确定所述检索元素的字符种类;
14.根据确定的所述字符种类选择一种或多种字符按照预设字符数随机排列组合生
成所述检索元素。
15.可选地,所述检索元素包括初始元素和衍生元素,所述初始元素被配置为所述信息来源网站存在与所述初始元素匹配成功的组件,“所述检索元素依据预设的数据抓取策略生成”包括:
16.a、将所述初始元素代入所述检索接口,所述信息来源网站返回与所述初始元素相关的组件数据;
17.b、按照预设的分割策略将返回的组件数据中的索引信息分割成若干字段;
18.c、根据若干所述字段生成所述衍生元素,并将所述衍生元素代入所述检索接口,所述信息来源网站返回与所述衍生元素相关的组件数据;
19.重复步骤b-c,直至组件数据的抓取工作完成。
20.可选地,所述方法还包括:
21.获取所述组件数据库中各个组件的源代码;
22.通过包管理器解析所述源代码中的依赖文件内容以获取各个组件的依赖组件的信息:
23.将所述组件数据库中的各个组件与所述依赖组件形成的依赖关系存储进所述组件数据库。
24.可选地,基于目标数据的种类预先建立数据库模型,“基于返回的组件数据,构造组件数据库”包括:
25.将组件数据按照目标数据的种类分别映射到所述数据库模型中,以形成所述组件数据库。
26.可选地,所述数据库模型对不同种类的目标数据设有对应的数据筛选策略;
27.所述数据库模型根据所述数据筛选策略过滤组件数据中的异常数据。
28.可选地,所述方法还包括:
29.设定预设时间;
30.每间隔所述预设时间从对应的所述信息来源网站重新获取与所述组件数据库内组件对应的组件数据;
31.确定重新获取的组件数据相比于所述组件数据库内的组件数据是否存在更新;
32.若存在,则根据重新获取的组件数据更新所述组件数据库。
33.为实现上述目的,本发明还提供了一种软件物料清单的生成装置,包括:
34.确定模块,用于确定与组件相关的信息来源网站是否存在检索接口;
35.第一抓取模块,用于若所述信息来源网站存在所述检索接口,则分别代入不同的检索元素至所述检索接口,所述信息来源网站根据所述检索元素与组件的信息进行匹配,并返回与对应所述检索元素相关的组件数据,所述检索元素依据预设的数据抓取策略生成;
36.第二抓取模块,用于若所述信息来源网站不存在所述检索接口,则遍历所述信息来源网站以及所述信息来源网站的多级子页面内组件的信息,并返回对应组件数据;
37.构造模块,用于基于返回的组件数据,构造组件数据库。
38.生成模块,用于解析待检测软件的源码包以获取匹配信息,并根据所述匹配信息匹配所述组件数据库内对应的组件数据以生成所述待检测软件的软件物料清单;
39.其中,组件数据包括组件信息、漏洞信息、许可信息、文件信息、代码片段信息。
40.为实现上述目的,本发明还提供了一种电子设备,包括:
41.处理器;
42.存储器,其中存储有所述处理器的可执行指令;
43.其中,所述处理器配置为经由执行所述可执行指令来执行如上所述的软件物料清单的生成方法。
44.为实现上述目的,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述的软件物料清单的生成方法。
45.本发明还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述软件物料清单的生成方法。
46.本发明通过确定与组件相关的信息来源网站是否存在检索接口,当信息来源网站存在检索接口时,则在检索接口代入不同的检索元素,进而获取信息来源网站中与检索元素相关的组件数据,且检索元素依据预设的数据抓取策略生成,当信息来源网站不存在检索接口时,则直接遍历信息来源网站以及信息来源网站的多级子页面内组件的信息,进而获取对应的组件数据,再根据组件数据构造组件数据库,通过解析待检测软件的源码包能够获取对应的匹配信息,根据匹配信息在组件数据库中匹配组件数据,并可根据匹配获取的组件数据生成待检测软件的软件物料清单。本发明能够根据信息来源网站是否存在检索接口,选择合适的方法去抓取信息来源网站内的组件数据,有利于提高组件数据的获取成功率以及获取效率,进而能够提高组件数据库的完整度以及构造效率,有利于避免生成的软件物料清单出现组件遗漏。
附图说明
47.图1是本发明软件物料清单的生成方法流程图。
48.图2是本发明生成软件物料清单的系统架构图。
49.图3是生成软件物料清单的数据库示意图。
50.图4是一示例信息来源网站检索组件后显示的检索页面图。
51.图5是一示例maven组件的索引信息的示意图。
52.图6是一示例信息来源网站的页面显示图。
53.图7是依据本发明的组件数据库生成的软件物料清单的显示界面图。
54.图8是本发明实施例软件物料清单的生成装置的示意框图。
55.图9是本发明实施例电子设备的示意框图。
具体实施方式
56.为了详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
57.请参阅图1和图2,本发明公开了一种软件物料清单的生成方法,包括:
58.基于目标数据的种类预先建立数据库模型。
59.具体地,可以通过uml建模工具建立数据库模型,并且设计出的数据库模型能够生成包含目标数据种类的软件物料清单,如图3所示,由于软件是由多个组件组成的,且每个组件可由多个文件组成,而每个文件也可能具有多段代码,相应地,每个组件可能具有多个漏洞和多个许可,每个文件也可能具有多个漏洞和多个许可,同理,每个代码片段同样可能具有多个漏洞和多个许可。因此,整个软件物料清单需要包括清单信息、软件信息、组件信息、漏洞信息、许可信息、文件信息以及代码片段信息。相对应地,构建数据库模型所基于的目标数据的种类与上述软件物料清单的信息种类一致。清单信息所记录的则是在后续对软件检测的过程中生成的软件物料清单的相应属性,如清单名称、创建人等,用于对生成的软件物料清单作标识保存用。在后续通过基于该数据库模型构造的组件数据库生成的软件物料清单也能符合对应的标准。
60.进一步地,构建的数据库模型可为一图数据库,如neo4j,基于图数据库技术可将获取的组件数据中的组件信息、许可信息、漏洞信息和依赖信息等数据构建相互关联的知识图谱。
61.上述对数据库模型的建立即是对应图2中系统架构的数据层的内容。
62.s101、确定与组件相关的信息来源网站是否存在检索接口。
63.具体来说,与组件相关的信息来源网站包括一些存储有组件数据的网站,开发组织或个人会在此类网站发布他们研发的开源组件,因此,在此类网站中存储有大量的组件数据,如maven和npm等公开的开源组件维护网站;此外,信息来源网站还包括一些公开的漏洞库网站,如cve、中国的cnnvd等。
64.可以理解的是,检索接口可以是指信息来源网站中的检索框。
65.例如,关于maven组件的信息来源网站url地址如下:
66.https://searcn.maven.org
67.关于npm组件的信息来源网站url地址如下:
68.https://www.npmjs.com/
69.s102a、若信息来源网站存在检索接口,则分别代入不同的检索元素至检索接口,信息来源网站根据检索元素与组件的信息进行匹配,并返回与对应检索元素相关的组件数据,检索元素依据预设的数据抓取策略生成。
70.可以理解的是,信息来源网站根据检索元素与组件的信息进行匹配,能够匹配到与检索元素相关的组件,若是对应组件的组件数据直接陈列在对应的检索页面,则可直接返回相应的组件数据,若是检索页面还包括对应组件的次级页面,则还需遍历相应的次级页面,将次级页面内的组件数据返回。
71.在一些实施例中,“检索元素依据预设的数据抓取策略生成”包括:
72.根据信息来源网站内组件的索引信息确定检索元素的字符种类;
73.根据确定的字符种类选择一种或多种字符按照预设字符数随机排列组合生成检索元素。
74.具体来说,信息来源网站内组件的索引信息一般包括组件的名称、组件的发布组织名等,如图4所示,索引信息包括组织名称(group id)、组件名称(artifact id)及最新版本号(latest version),而此类信息一般是有其命名规范的,一般地,信息来源网站内组件
的索引信息为英文字母、数字和符号中的一者或多者组成,因此,检索元素也可以依据索引信息的特性进行设定。举一示例作为说明:当检索元素为英文字母时,则一个字符的检索元素可为:a、b、c等;两个字符的检索元素可为:aa,ab,ac等。
75.可以理解的是,预设字符数由技术人员根据需求设定,只要能够尽可能将信息来源网站内的组件数据爬取出即可,本技术不作具体限制。
76.在一些实施例中,检索元素包括初始元素和衍生元素,初始元素被配置为信息来源网站存在与初始元素匹配成功的组件,“检索元素依据预设的数据抓取策略生成”包括:
77.a、将初始元素代入检索接口,信息来源网站返回与初始元素相关的组件数据;
78.b、按照预设的分割策略将返回的组件数据中的索引信息分割成若干字段;
79.c、根据若干字段生成衍生元素,并将衍生元素代入检索接口,信息来源网站返回与衍生元素相关的组件数据;
80.重复步骤b-c,直至组件数据的抓取工作完成。
81.具体地,由于组件的索引信息的命名都是有规范的,以maven的一组件为例,参阅图5,group id为com.cleveradssolutions,其中,com表明域,为商业组织,cleveradssolutions表明组织名称,因此,通过将初始元素获取的组件的索引信息按照预设的分割策略进行分割可以获得若干字段,预设的分割策略可以是将索引信息中的符号作为分割线,如将上述group id分割成com和cleveradssolutions,则可根据这两个字段生成衍生元素,如可以单独作为两个衍生元素,也可以组合生成衍生元素,还可以与其他group id分割出的字段进行组合生成衍生元素。
82.s102b、若信息来源网站不存在检索接口,则遍历信息来源网站以及信息来源网站的多级子页面内组件的信息,并返回对应组件数据。
83.具体来说,当信息来源网站不提供检索接口时,一般会在页面上显示组件的信息,并且会对显示的组件设置次级子页面,甚至多级子页面,此时,为了获取组件数据则需要不断下探信息来源网站,从而遍历信息来源网站以及相关的多级子页面去获取组件数据,如图6所示,图中所示的medme-ehr-js-sdk、xgraph-viewify等皆为组件,并可从该页面分别进入对应组件的子页面,从而遍历页面获取组件数据。
84.可以理解的是,组件数据包括组件信息、漏洞信息、许可信息、文件信息、代码片段信息等。可以通过在对应信息种类的信息来源网站抓取组件数据进而获取对应的组件数据。
85.进一步地,一些信息来源网站设置有防止数据被爬取的机制,因此需要设置对应的抓取机制,如一些信息来源网站对相同ip的重复访问设有检测次数,当短时间内访问次数过大时,则阻挡此ip访问,为此,则需要在抓取组件数据化时每经过预设时间更换ip地址。
86.s103、基于返回的组件数据,构造组件数据库。
87.在一些实施例中,本发明还包括:
88.获取组件数据库中各个组件的源代码;
89.通过包管理器解析源代码中的依赖文件内容以获取各个组件的依赖组件的信息:
90.将组件数据库中的各个组件与依赖组件形成的依赖关系存储进组件数据库。
91.具体地,获取的组件数据中还包括对应组件的代码管理平台的url,通过访问该
url则可获取组件的源代码。
92.将依赖关系存储进组件数据库后,通过查询组件数据库中的组件可获知该组件的依赖组件。
93.进一步地,“基于返回的组件数据,构造组件数据库”包括:
94.将组件数据按照目标数据的种类分别映射到数据库模型中,以形成组件数据库。
95.可以理解的是,目标数据的种类可以包括组件信息、漏洞信息、许可信息、文件信息、代码片段信息和依赖关系信息等,将获取的组件数据按照上述信息种类分别映射至数据库模型中,从而形成组件数据库。
96.具体来说,数据库模型对不同种类的目标数据设有对应的数据筛选策略;
97.数据库模型根据数据筛选策略过滤组件数据中的异常数据。
98.由于获取的组件数据内容繁杂,因此容易混入异常数据,通过对不同种类的目标数据设置对应的数据筛选策略,可清洗异常数据。如对组件信息中的组件名称的字符数量进行限制,当组件数据对应组件名称的字符数超过标准时,认定该数据为异常数据。
99.在一些实施例中,本发明还包括:
100.设定预设时间;
101.每间隔预设时间从对应的信息来源网站重新获取与组件数据库内组件对应的组件数据;
102.确定重新获取的组件数据相比于组件数据库内的组件数据是否存在更新;
103.若存在,则根据重新获取的组件数据更新组件数据库。
104.可以理解的是,组件数据库中还可包括获取组件数据时所对应的url,每间隔预设时间时,可直接访问对应的url去重新获取对应的组件数据,当重新获取的组件数据相比于组件数据库内的组件数据存在更新时,则将根据重新获取的组件数据更新组件数据库,从而实现组件数据库的定期更新。
105.具体地,组件是否存在更新可查看获取的组件数据中的版本号是否一致。
106.为了提高抓取组件数据的速度,以及在多个信息来源网站上同时作业,则可分布式部署多个数据抓取资源,当其中一者无法工作时,其他数据抓取资源仍可持续工作,避免影响组件数据的抓取。此外,抓取的数据可通过kafka或flink等消息队列进行传输。
107.上述步骤中,对构建组件数据库的组件数据的抓取方式、抓取深度进行描述,并对组件数据库内数据的维护,包括数据更新、数据筛选作定义,即组件数据库的构建和维护方法,对应图2中系统架构的构建层。
108.s104、解析待检测软件的源码包以获取匹配信息,并根据匹配信息匹配组件数据库内对应的组件数据以生成待检测软件的软件物料清单。
109.具体地,通过包管理器可解析待检测软件的源码包内的pom文件,从而获取待检测软件的依赖组件,将依赖组件的信息作为匹配信息,从而实现在组件数据库中匹配到对应的组件,进而获取对应的漏洞信息、许可信息等组件数据,并根据这些组件数据生成该待检测软件的软件物料清单。
110.可以理解的是,pom文件是记录有待检测软件的依赖组件信息的文件。匹配信息可以是对应的索引信息,如maven组件的group id、artifact id和version。
111.请参阅图7,图7为根据本发明构造的组件数据库对软件进行成分分析生成的软件
物料清单的一显示界面,其中,显示的信息包括组件数量、漏洞数量和许可数量等。
112.上述步骤中,针对待检测软件生成软件物料清单,包括软件成分分析,统计分析以及在显示界面中可视化显示等,则对应图2中系统架构的应用层。
113.本发明通过确定与组件相关的信息来源网站是否存在检索接口,当信息来源网站存在检索接口时,则在检索接口代入不同的检索元素,进而获取信息来源网站中与检索元素相关的组件数据,且检索元素依据预设的数据抓取策略生成,当信息来源网站不存在检索接口时,则直接遍历信息来源网站以及信息来源网站的多级子页面内组件的信息,进而获取对应的组件数据,再根据组件数据构造组件数据库,通过解析待检测软件的源码包能够获取对应的匹配信息,根据匹配信息在组件数据库中匹配组件数据,并可根据匹配获取的组件数据生成待检测软件的软件物料清单。本发明能够根据信息来源网站是否存在检索接口,选择合适的方法去抓取信息来源网站内的组件数据,有利于提高组件数据的获取成功率以及获取效率,进而能够提高组件数据库的完整度以及构造效率,有利于避免生成的软件物料清单出现组件遗漏。
114.请参阅图8,本发明实施例还公开了一种软件物料清单的生成装置,包括:
115.确定模块100,用于确定与组件相关的信息来源网站是否存在检索接口;
116.第一抓取模块200,用于若信息来源网站存在检索接口,则分别代入不同的检索元素至检索接口,信息来源网站根据检索元素与组件的信息进行匹配,并返回与对应检索元素相关的组件数据,检索元素依据预设的数据抓取策略生成;
117.第二抓取模块300,用于若信息来源网站不存在检索接口,则遍历信息来源网站以及信息来源网站的多级子页面内组件的信息,并返回对应组件数据;
118.构造模块400,用于基于返回的组件数据,构造组件数据库;
119.生成模块500,用于解析待检测软件的源码包以获取匹配信息,并根据匹配信息匹配组件数据库内对应的组件数据以生成待检测软件的软件物料清单;
120.其中,组件数据包括组件信息、漏洞信息、许可信息、文件信息、代码片段信息。
121.本发明能够根据信息来源网站是否存在检索接口,选择合适的方法去抓取信息来源网站内的组件数据,有利于提高组件数据的获取成功率以及获取效率,进而能够提高组件数据库的完整度以及构造效率,有利于避免生成的软件物料清单出现组件遗漏。
122.请参阅图9,本发明实施例还公开了一种电子设备,包括:
123.处理器40;
124.存储器50,其中存储有处理器40的可执行指令;
125.其中,处理器40配置为经由执行可执行指令来执行如上所述的软件物料清单的生成方法。
126.本发明实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上所述的软件物料清单的生成方法。
127.本发明实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行如上所述的软件物料清单的生成方法。
128.应当理解,在本发明实施例中,所述处理器可以是中央处理模块
(centralprocessing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
129.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random accessmemory,ram)等。
130.以上所揭露的仅为本发明的较佳实例而已,不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,均属于本发明所涵盖的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献