当前位置:网站首页>5个开源组件管理小技巧
5个开源组件管理小技巧
2022-08-04 05:08:00 【SEAL安全】
开源正在吞噬软件世界,SourceClear 在2020年发布的调查报告指出开源项目已呈现指数级增长趋势,2026 年预计超过 3 亿。开源软件(OSS)的出现简化了软件开发流程,这正是超过90%的组织在其应用程序中使用开源组件的原因之一。这也意味着企业代码库中拥有的代码正在从闭源自研转向开源。
开源的优势在哪里?
开源已经改变了软件行业。这种增长趋势背后的原因很明显:使用开源组件避免了“重复造轮子”,可以加快应用程序开发速度,使开发人员更加高效和富有成效。 此外,开源组件为开发人员提供了一种无缝的方式来构建代码并借助开源社区的协作工作进行应用程序开发。这意味着开发团队可以专注于其组织独有的自定义代码,同时使用开源工具和库来提高开发效率。
使用开源组件的风险
随着开源代码的日益普及,安全风险也随之而来。研究发现,开源漏洞经常出现在间接依赖项(也称为“传递依赖”)中。但问题在于,许多开源组件已经过时,并且包含修改过的或缺失的许可证,因此这些问题在开源项目可能包含的间接依赖项中特别难以找到。 以下是使用开源组件可能会面临的几个风险:
软件质量 – 使用开源代码模块会增加参与开发人员的可变性,并减少对应用于第三方代码的 QA 流程的控制。
长期维护 - 如果开源模块没有被维护,软件开发人员需要额外分配时间和精力来处理漏洞。
软件许可 – 开源组件的最终用途决定了开源许可证合规性的类型:permissive 或 copyleft。Permissive license 允许实施和分发企业软件,而 copyleft license 进一步要求使用 OSS 组件构建的软件是免费提供的,从而存在泄露信息的风险。随着大型应用程序的开源依赖项数量的增加,确认模块的版权状态和使用限制变得愈发困难。
开源软件安全 - 与质量风险类似,如果开发人员没有在开发过程中妥善解决安全问题,使用的开源组件可能会伴随安全风险。
如何有效降低开源风险?
为软件项目选择适当的开源组件可以降低与软件质量、许可和版权侵权相关的风险,在此有一些关键问题亟待解决。例如,“企业是否应该将软件细节作为商业秘密进行保护?”以及“企业在使用组件的方式是否会与开源提供商的协议相冲突?” 为帮助企业更好地了解上述开源安全风险,并帮助企业在不影响安全性的情况下利用开源组件的优势。请参考以下五个安全管理开源组件 Tips。
1. 保护软件供应链
软件供应链中某个地方引入的漏洞对源代码产生了连锁反应。现代应用程序是模块化构建的,它们由互连的内部和外部模块组装而成。因此,在进行完整的代码开发之前,应当反复自动测试软件供应链中的模块是否存在安全问题。
2. 建立自动化执行策略
添加外部开发的软件模块会带来风险,因此,组织需要调整其风险承受能力,并落实在软件开发生命周期(SDLC)的各个阶段。创建评估开源组件的内部策略是避免添加构成安全威胁的模块的有效方法。
3. 着重定位 SCA
软件成分分析(SCA)是一种保护使用开源组件的应用程序的方法。SCA 的重要性在于提高开发团队跟踪和分析外部组件(如支持库、依赖项、许可证和安全漏洞)的速度。
4. 将 SCA 工具添加到安全测试工具包
SCA 工具的可追溯性可帮助团队快速查找和解决许可证和安全问题,使其成为开源策略和现有开发工作流程不可或缺的一部分。
5. 对外部源代码的 Fork 更改
Fork 是开发人员在修改开源代码之前克隆开源代码的过程。Fork 允许跟踪代码更改,但也将原始代码与修改后的代码分开,它还利用了 OSS 的一大优势:能够为特定应用程序自定义现有模块的源代码。
边栏推荐
- [Skill] Using Sentinel to achieve priority processing of requests
- 【一步到位】Jenkins的安装、部署、启动(完整教程)
- 编程大杂烩(四)
- 【21天学习挑战赛】直接插入排序
- 获取单选框选中内容
- The 2022 PMP exam has been delayed, should we be happy or worried?
- Turn: Management is the love of possibility, and managers must have the courage to break into the unknown
- 信息学奥赛一本通 1312:【例3.4】昆虫繁殖
- 商城系统APP如何开发 都有哪些步骤
- Mini program + e-commerce, fun new retail
猜你喜欢
System design. Seckill system
The difference between px, em, and rem
[21 Days Learning Challenge] Image rotation problem (two-dimensional array)
高性能高可靠性高扩展性分布式防火墙架构
leetcode 12. 整数转罗马数字
Get the selected content of the radio box
字节最爱问的智力题,你会几道?
Simple operation of the file system
深度学习环境配置
Typora 使用保姆级教程 | 看这一篇就够了 | 历史版本已被禁用
随机推荐
Tactile intelligent sharing - SSD20X realizes upgrade display progress bar
[Cloud Native--Kubernetes] Pod Resource Management and Probe Detection
See how DevExpress enriches chart styles and how it empowers fund companies to innovate their business
The idea setting recognizes the .sql file type and other file types
C Expert Programming Chapter 5 Thinking about Linking 5.3 5 Special Secrets of Library Linking
【云原生--Kubernetes】Pod资源管理与探针检测
8. Haproxy builds a web cluster
Cache pool of unity framework
redis中常见的面试题
Use Patroni callback script to bind VIP pit
符号表
21 days learning challenge 】 【 sequential search
DataTable使用Linq进行分组汇总,将Linq结果集转化为DataTable
字节最爱问的智力题,你会几道?
How to keep the source code confidential in the development under the burning scenario
详解八大排序
Bolb analysis of image processing (1)
Performance testing with Loadrunner
C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.3 什么是声明,什么是定义
败给“MySQL”的第60天,我重振旗鼓,四面拿下蚂蚁金服offer