一种SCA组件依赖信息的确定方法、装置、设备及介质与流程

文档序号:37282805发布日期:2024-03-12 21:23阅读:23来源:国知局
一种SCA组件依赖信息的确定方法、装置、设备及介质与流程

本公开涉及计算机,具体而言,涉及一种sca组件依赖信息的确定方法、装置、设备及介质。


背景技术:

1、在软件的开发过程中,使用第三方组件的比例逐渐增高,引用已有的组件来进行开发成为了当下主流的软件开发模式。虽然引入第三方组件加快了软件的研发效率,但是由第三方于组件在安全性上往往缺少有效地审查和管理,使得软件自身存在安全风险。为了降低软件中的组件安全隐患,可以识别出软件中的组件依赖关系,通过识别出的组件依赖关系来实现从源头治理软件可能出现的安全问题。

2、在获取软件中的组件依赖关系时,大多是通过调用包管理器来对软件对应的文件进行解析的方式,然而包管理器极度依赖运行环境,若缺少运行环境,则包管理器无法输出结果或者解析效果较差,并且若包管理器在解析过程中出现错误时,会造成解析中断,从而无法得到解析结果。


技术实现思路

1、本公开实施例至少提供一种sca组件依赖信息的确定方法、装置、设备及介质。

2、本公开实施例提供了一种sca组件依赖信息的确定方法,所述方法包括:

3、获取目标软件的文件包;所述文件包包括所述目标软件的软件依赖管理文件,所述软件依赖管理文件用于记录所述目标软件直接调用的组件信息;

4、对所述软件依赖管理文件进行解析,得到第一依赖信息,所述第一依赖信息包括所述目标软件直接调用至少一个第一组件的第一依赖关系以及每个所述第一组件携带的第一版本信息;

5、确定所述文件包中是否存在目标文件,所述目标文件用于记录所述目标软件调用的组件信息;

6、在所述文件包中存在所述目标文件的情况下,对所述目标文件进行解析,得到第二依赖信息,所述第二依赖信息包括每个所述第一组件调用至少一个第二组件的第二依赖关系以及每个所述第二组件携带的第二版本信息;

7、基于所述第一依赖信息和所述第二依赖信息,确定所述目标软件的组件依赖信息。

8、一种可选的实施方式中,所述第二依赖信息还包括每个所述第一组件携带的第三版本信息,所述第一版本信息指示的版本范围大于所述第三版本信息指示的版本范围;所述基于所述第一依赖信息和所述第二依赖信息,确定所述目标软件的组件依赖信息,包括:

9、将所述第一依赖关系和所述第二依赖关系进行组合,得到所述目标软件的组件依赖关系;

10、将所述第二依赖信息中所述第一组件携带的第三版本信息确定为所述第一组件的依赖版本信息;

11、基于所述组件依赖关系、所述第一组件的依赖版本信息以及所述第二组件携带的第二版本信息,生成所述组件依赖信息。

12、一种可选的实施方式中,所述目标文件包括软件目录文件,所述软件目录文件包括所述目标软件调用的每个第一组件的组件目录文件;所述对所述目标文件进行解析,得到第二依赖信息,包括:

13、对所述软件目录文件进行解析,得到所述第二依赖关系;

14、对所述软件目录文件和所述组件目录文件进行解析,得到每个所述第二组件携带的第二版本信息;

15、基于所述第二依赖关系以及每个所述第二组件携带的第二版本信息,确定所述第二依赖信息。

16、一种可选的实施方式中,所述软件目录文件包括所述目标软件直接调用的每个第一组件的第一组件依赖管理文件,所述第一组件依赖管理文件用于记录该第一组件调用的组件信息;所述对所述软件目录文件进行解析,得到所述第二依赖关系,包括:

17、针对每个所述第一组件,从所述软件目录文件中提取所述第一组件依赖管理文件;

18、基于所述第一组件依赖管理文件,确定所述第二依赖关系。

19、一种可选的实施方式中,所述组件目录文件包括该第一组件调用的每个所述第二组件的第二组件依赖管理文件;所述软件目录文件包括所述目标软件直接和间接调用的每个组件的组件依赖管理文件,所述组件依赖管理文件用于记录该组件调用的组件信息;

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、本公开实施例还提供一种sca组件依赖信息的确定装置,所述装置包括:

46、文件确定模块,用于获取目标软件的文件包;所述文件包包括所述目标软件的软件依赖管理文件,所述软件依赖管理文件用于记录所述目标软件直接调用的组件信息;

47、第一文件解析模块,用于对所述软件依赖管理文件进行解析,得到第一依赖信息,所述第一依赖信息包括所述目标软件直接调用至少一个第一组件的第一依赖关系以及每个所述第一组件携带的第一版本信息;

48、文件检测模块,用于确定所述文件包中是否存在目标文件,所述目标文件用于记录所述目标软件调用的组件信息;

49、第二文件解析模块,用于在所述文件包中存在所述目标文件的情况下,对所述目标文件进行解析,得到第二依赖信息,所述第二依赖信息包括每个所述第一组件调用至少一个第二组件的第二依赖关系以及每个所述第二组件携带的第二版本信息;

50、第一信息确定模块,用于基于所述第一依赖信息和所述第二依赖信息,确定所述待检测软件的组件依赖关系。

51、一种可选的实施方式中,所述第二依赖信息还包括每个所述第一组件携带的第三版本信息,所述第一版本信息指示的版本范围大于所述第三版本信息指示的版本范围;所述第一信息确定模块具体用于:

52、将所述第一依赖关系和所述第二依赖关系进行组合,得到所述目标软件的组件依赖关系;

53、将所述第二依赖信息中所述第一组件携带的第三版本信息确定为所述第一组件的依赖版本信息;

54、基于所述组件依赖关系、所述第一组件的依赖版本信息以及所述第二组件携带的第二版本信息,生成所述组件依赖信息。

55、一种可选的实施方式中,所述目标文件包括软件目录文件,所述软件目录文件包括所述目标软件调用的每个第一组件的组件目录文件;所述第二文件解析模块在用于所述对所述目标文件进行解析,得到第二依赖信息时,具体用于:

56、对所述软件目录文件进行解析,得到所述第二依赖关系;

57、对所述软件目录文件和所述组件目录文件进行解析,得到每个所述第二组件携带的第二版本信息;

58、基于所述第二依赖关系以及每个所述第二组件携带的第二版本信息,确定所述第二依赖信息。

59、一种可选的实施方式中,所述软件目录文件包括所述目标软件直接调用的每个第一组件的第一组件依赖管理文件,所述第一组件依赖管理文件用于记录该第一组件调用的组件信息;所述第二文件解析模块在用于所述对所述软件目录文件进行解析,得到所述第二依赖关系时,具体用于:

60、针对每个所述第一组件,从所述软件目录文件中提取所述第一组件依赖管理文件;

61、基于所述第一组件依赖管理文件,确定所述第二依赖关系。

62、一种可选的实施方式中,所述组件目录文件包括该第一组件调用的每个所述第二组件的第二组件依赖管理文件;所述软件目录文件包括所述目标软件直接和间接调用的每个组件的组件依赖管理文件,所述组件依赖管理文件用于记录该组件调用的组件信息;所述第二文件解析模块在用于所述对所述软件目录文件和所述组件目录文件进行解析,得到每个所述第二组件携带的第二版本信息时,具体用于:

63、针对每个所述第一组件,基于所述软件目录文件和所述组件目录文件,得到所述第二组件的第二组件依赖管理文件;

64、基于所述第二组件依赖管理文件,确定所述第二组件携带的第二版本信息。

65、一种可选的实施方式中,所述第二文件解析模块在用于所述基于所述软件目录文件和所述组件目录文件,得到所述第二组件的第二组件依赖管理文件时,具体用于:

66、确定所述组件目录文件中是否存在所述第二组件;

67、在所述组件目录文件中存在所述第二组件的情况下,从所述组件目录文件中提取所述第二组件依赖管理文件;

68、在所述组件目录文件中不存在所述第二组件的情况下,从所述软件目录文件中提取所述第二组件依赖管理文件。

69、一种可选的实施方式中,所述目标文件包括依赖信息文件;所述第二文件解析模块在用于所述对所述目标文件进行解析,得到第二依赖信息时,具体用于:

70、确定所述依赖信息文件的文件结构,不同的文件结构对应不同的解析方式;

71、按照所述文件结构对应的解析方式,对所述依赖信息文件进行解析,得到所述第二依赖信息。

72、一种可选的实施方式中,所述文件结构包括第一文件结构,所述第一文件结构表征为按照所述目标软件和组件之间的直接依赖关系以及各个组件之间的直接依赖关系进行层级划分的结构;所述第二文件解析模块在用于所述按照所述文件结构对应的解析方式,对所述依赖信息文件进行解析,得到所述第二依赖信息时,具体用于:

73、在所述文件结构为所述第一文件结构的情况下,从所述依赖信息文件中提取得到至少一个第二依赖关系,以及每个所述第二依赖关系中的所述第二组件携带的第二版本信息;

74、基于所述第二依赖关系以及每个所述第二组件携带的第二版本信息,确定所述第二依赖信息。

75、一种可选的实施方式中,所述文件结构包括第二文件结构,所述第二文件结构表征为将与所述目标软件存在直接和间接依赖关系的各个组件设置在同一层级下,并且所述第二文件结构的依赖信息文件包括与所述目标软件存在直接和间接依赖关系的各个组件的目录信息;所述第二文件解析模块在用于所述按照所述文件结构对应的解析方式,对所述依赖信息文件进行解析,得到所述第二依赖信息时,具体用于:

76、在所述文件结构为所述第二文件结构的情况下,从所述依赖信息文件中提取得到各个所述目录信息,所述目录信息包括该组件的版本信息和/或该组件调用其他组件的依赖关系;

77、从各个所述目录信息中提取得到至少一个第二依赖关系,以及每个所述第二依赖关系中的所述第二组件携带的第二版本信息;

78、基于所述第二依赖关系以及每个所述第二组件携带的第二版本信息,确定所述第二依赖信息。

79、一种可选的实施方式中,所述装置还包括第二信息确定模块,所述第二信息确定模块用于:

80、在所述文件包中不存在所述目标文件的情况下,从与所述目标软件对应的组件库中获取所述第一组件的组件信息;

81、基于从所述组件库中获取到的所述第一组件的组件信息,得到第三依赖信息,所述第三依赖信息包括每个所述第一组件调用至少一个第三组件的第三依赖关系以及每个所述第三组件携带的第四版本信息;

82、基于所述第一依赖信息和所述第三依赖信息,确定所述目标软件的组件依赖信息。

83、一种可选的实施方式中,所述第三依赖信息还包括每个所述第一组件携带的第五版本信息;所述第二信息确定模块在用于所述基于从所述组件库中获取到的所述第一组件的组件信息,得到第三依赖信息时,具体用于:

84、基于从所述组件库中获取到的所述第一组件的组件信息,确定所述第一组件的至少一个历史版本、以及每个历史版本的第一组件调用至少一个第三组件的依赖关系,以及所述第三组件对应的版本信息;

85、基于所述第一版本信息指示的版本范围,从至少一个历史版本中确定目标历史版本,所述目标历史版本为位于所述版本范围内的各个历史版本中的最新版本;

86、将所述目标历史版本确定为所述第五版本信息,将所述目标历史版本的第一组件调用至少一个第三组件的依赖关系确定为所述第三依赖关系,并将与所述目标历史版本的第一组件存在所述第三依赖关系的第三组件对应的版本信息确定为所述第四版本信息。

87、本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述任一种可能的sca组件依赖信息的确定方法的步骤。

88、本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述任一种可能的sca组件依赖信息的确定方法的步骤。

89、本公开实施例提供的sca组件依赖信息的确定方法、装置、设备及介质,无需调用包管理器来解析文件,直接对目标软件的软件依赖管理文件和目标文件进行解析,这样,文件解析无需依赖与包管理器的运行环境一致和版本一致,针对任何运行环境和任何版本的目标软件都可以进行组件依赖信息的确定,通过兼容性的组件依赖信息确定方法,有助于保障确定组件依赖信息的效果,减少调用包管理器的资源耗费,降低信息确定过程中出现错误的可能性。

90、进一步的,在对软件依赖管理文件进行解析得到第一依赖信息的基础上,还可以对目标文件进行解析得到第二依赖信息,通过第二依赖信息对第一依赖信息进行补充,得到目标软件的组件依赖信息,这样,即便在软件依赖管理文件残缺或者不符合规范的情况下,仍然可以最大化地得到组件依赖信息,有助于提升组件依赖信息的全面性和完整性,提升信息确定的精确性。

91、更进一步的,本方法无需获取目标软件的完整代码,只需获取目标软件的软件依赖管理文件和目标文件即可,有效降低组件依赖信息确定的复杂度。

92、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。

93、为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

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