System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及软件分析,尤其涉及一种开源组件许可证风险处理方法、装置、设备及介质。
技术介绍
1、在软件供应链应用场景中,为了提升应用软件研发效率会从外部引入大量开源组件。引入的这些开源组件一般都包含有可授予他人在一定条件下修改、使用和发布软件等权利的开源组件许可证。
2、然而,这些开源组件许可证也存在不同等级的开源协议风险。例如,gnu通用公共许可证、gnu宽通用公共许可证等,要求不允许封闭源代码,如果开发的应用软件引入这些开源协议风险的开源组件,但不能有效的检测并控制相关风险,则可能会在后续引入更大的风险。鉴于此,对开源组件许可证进行风险检测,以及降低开源组件的使用风险是十分有必要的。
技术实现思路
1、本申请提供了一种开源组件许可证风险处理方法、装置、设备及介质,用以提高对开源组件许可证进行风险检测的准确性,以及降低开源组件的使用风险。
2、第一方面,提供一种开源组件许可证风险处理方法,包括:
3、通过代码注入方法对获取到的原始软件执行修改操作,得到目标软件;
4、当运行所述目标软件中的目标开源组件时,查询风险许可证清单;其中,所述查询风险许可证清单包括所述原始软件中各开源组件、所述各开源组件各自的开源组件许可证、所述各开源组件许可证各自的风险等级;
5、若在所述风险许可证清单中,确定出所述目标开源组件的风险等级符合高风险要求,则根据所述目标开源组件的使用场景,对所述目标开源组件进行风险消减处理。
6、本申请
7、在本申请的一些实施例中,所述根据所述目标开源组件所属的类别,对所述目标开源组件进行风险消减处理,包括:
8、若所述目标开源组件的使用场景包括继承组件对象和/或实现组件接口,则在所述目标开源组件包括有的所有方法代码中分别注入代理代码;或者
9、若所述目标开源组件的使用场景包括直接引用组件实例和/或调用组件方法,则在所述目标开源组件包括有的所有方法代码中,将待使用的方法代码注入代理代码。
10、通过上述方式,针对目标开源组件不同的使用场景,采用不同的风险消减处理方式(代理代码注入方式)将目标开源组件中的方法代码进行隔离,从而降低开源组件的使用风险。
11、在本申请的一些实施例中,所述在通过代码注入方法对获取到的原始软件执行修改操作,得到目标软件之前,还包括:
12、通过sca方法对所述原始软件进行分析,分析得到所述原始文件的原始软件物料清单;
13、根据所述原始软件物料清单生成所述风险许可证清单。
14、通过上述方式,对原始软件进行分析,得到一份列举了当前原始软件包含了哪些开源组件,每个开源组件的开源组件许可证内容是什么,再基于该原始物料清单生成风险许可证清单,便于后续在运行目标软件的目标开源组件时,精确定位该目标开源组件的开源组件许可证的风险等级。
15、在本申请的一些实施例中,所述根据所述目标开源组件所属的类别,对所述目标开源组件进行风险削减处理之后,还包括:
16、将削减处理后的目标开源组件,记录至目标软件物料清单;其中,所述目标软件物料清单用于记录所述目标软件中各目标开源组件各自的软件物料信息。
17、通过上述方式,将目标软件中各目标开源组件各自的软件物料信息实时记录在目标软件物料清单中,便于后续通过该清单和原始软件物料清单进行比对,可以清楚地了解到原始软件物料清单中的高风险开源许可证组件是否真正地被执行,若未执行,则表明原始软件物料清单存在一定的误报,可以通过移除相关开源组件的依赖来优化软件物料清单。
18、在本申请的一些实施例中,所述方法,还包括
19、根据所述目标开源组件生成风险告警通知;其中,所述风险告警通知至少包括所述目标开源组件的标识、所述目标开源组件对应的开源组件许可证。
20、通过上述方式,根据目标开源组件生成风险告警通知,便于提醒用户及时关注和处理该目标开源组件的相关风险。
21、第二方面,提供一种开源组件许可证风险处理装置,包括:
22、代码注入模块,用于通过代码注入方法对获取到的原始软件执行修改操作,得到目标软件;
23、检测加载模块,用于运行所述目标软件中的目标开源组件时,查询风险许可证清单;其中,所述查询风险许可证清单包括所述原始软件中各开源组件、所述各开源组件各自的开源组件许可证、所述各开源组件许可证各自的风险等级;
24、处理模块,用于若在所述风险许可证清单中,确定出所述目标开源组件的风险等级符合高风险要求,则根据所述目标开源组件的使用场景,对所述目标开源组件进行风险消减处理。
25、在本申请的一些实施例中,所述处理模块,具体用于:
26、若所述目标开源组件的使用场景包括继承组件对象和/或实现组件接口,则在所述目标开源组件包括有的所有方法代码中分别注入代理代码;或者若所述目标开源组件的使用场景包括直接引用组件实例和/或调用组件方法,则在所述目标开源组件包括有的所有方法代码中,将待使用的方法代码注入代理代码。
27、在本申请的一些实施例中,所述检测加载模块,还用于:
28、通过sca方法对所述原始软件进行分析,分析得到所述原始文件的原始软件物料清单;
29、根据所述原始软件物料清单生成所述风险许可证清单。
30、在本申请的一些实施例中,所述装置还包括物料记录生成模块;
31、所述物料记录生成模块,用于将削减处理后的目标开源组件,记录至目标软件物料清单;其中,所述目标软件物料清单用于记录所述目标软件中各目标开源组件各自的软件物料信息。
32、在本申请的一些实施例中,所述装置还包括风险告警模块;
33、所述风险告警模块,用于根据所述目标开源组件生成风险告警通知;其中,所述风险告警通知至少包括所述目标开源组件的标识、所述目标开源组件对应的开源组件许可证。
34、第三方面,提供一种电子设备,包括:
35、存储器,用于存放计算机程序;处理器,用于执行所述存储器上所存放的计算机程序时,实现第一方面中任一项所述的方法步骤。
36、第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机本文档来自技高网...
【技术保护点】
1.一种开源组件许可证风险处理方法,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述根据所述目标开源组件所属的类别,对所述目标开源组件进行风险消减处理,包括:
3.如权利要求1所述的方法,其特征在于,所述在通过代码注入方法对获取到的原始软件执行修改操作,得到目标软件之前,还包括:
4.如权利要求1-3任一项所述的方法,其特征在于,所述根据所述目标开源组件所属的类别,对所述目标开源组件进行风险削减处理之后,还包括:
5.如权利要求1-3任一项所述的方法,其特征在于,所述方法,还包括:
6.一种开源组件许可证风险处理装置,其特征在于,包括:
7.如权利要求6所述的装置,其特征在于,所述处理模块,具体用于:
8.如权利要求6所述的装置,其特征在于,所述检测加载模块,还用于:
9.如权利要求6-8任一项所述的装置,其特征在于,所述装置还包括物料记录生成模块;
10.如权利要求6-8任一项所述的装置,其特征在于,所述装置还包括风险告警模块;
11.一种电子
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5中任一项所述的方法步骤。
...【技术特征摘要】
1.一种开源组件许可证风险处理方法,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述根据所述目标开源组件所属的类别,对所述目标开源组件进行风险消减处理,包括:
3.如权利要求1所述的方法,其特征在于,所述在通过代码注入方法对获取到的原始软件执行修改操作,得到目标软件之前,还包括:
4.如权利要求1-3任一项所述的方法,其特征在于,所述根据所述目标开源组件所属的类别,对所述目标开源组件进行风险削减处理之后,还包括:
5.如权利要求1-3任一项所述的方法,其特征在于,所述方法,还包括:
6.一种开源组件许可证风险处理...
【专利技术属性】
技术研发人员:江冠儒,
申请(专利权)人:天翼安全科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。