技术文章

软件缺陷与漏洞的区别?

简单得说:软件缺陷就是软件bug。软件漏洞属于软件缺陷的一类。可以归类为软件安全方面的缺陷。

概念区别

软件缺陷与漏洞的区别

①、软件缺陷

在计算机行业常常叫它Bug,指计算机软件或程序存在某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。

②、软件漏洞

是指软件在设计、实现、配置策略及使用过程中出现的缺陷,它可能导致攻击者在未授权的情况下访问或破坏系统。

③、区别

从概念上看:其实缺陷就是软件会出故障的点,而漏洞是,软件被攻击者攻击才会出故障的点。后者明显范围小一些,需要被人利用了才会导致软件被破坏。而前者包括了程序运行使用过程中自己出错的点。

产生根源

软件缺陷与漏洞的区别

①、软件缺陷产生的根源

软件缺陷产生的根源主要包括:测试策略,过程、工具和方法,团队/人,缺乏组织和通讯,硬件,软件,工作环境等。

测试策略:主要是测试范围不足,测试目标偏离引起。

过程,工具和方法:主要是需求收集无效,项目管理过程不够(比如:没有做变更控制,未做风险管理)。

团队/人:主要是项目团队职责不清(要么交叉职责,要么出现空缺),人员缺乏培训(尤其是没有经验的人员),士气低下或动机不纯。

缺乏组织和通讯:蒙头开发导致和用户沟通不够,团队管理失败。

硬件:主要是对硬件配置不对,硬件固件本身存在缺陷,处理器本身的缺陷。

软件:主要是软件配置不对,对操作系统的资源的获取和释放控制不好,编译器错误。

工作环境:主要是团队变动,预算削减,环境恶劣(比如:噪音很大)

②、软件漏洞产生的根源

软件漏洞产生根源也包括在软件缺陷产生之中。但相对范围较小,上面有一些过程就不会产生漏洞,只会产生缺陷。

需求收集不足:只会导致用户使用功能不足,不会产生漏洞。

和用户沟通不够:这也只会导致软件使用缺陷,不会产生漏洞。

防范缺陷

软件缺陷与漏洞的区别

无论是软件公司、软件开发人员,还是用户都不希望软件出现缺陷。然而软件只要是人设计的,都有可能出现缺陷。那我们该如何来防范呢?

①、从源头堵

前面讲了缺陷产生的根源,我们可以根据根源产生的原因,进行有效的管控。

进行有效团队管理、项目管理,做好计划,监督,检查,改进的工作。

对测试过程进行严格的管控,做到不偏不漏。

做好有效的缺陷分析,找出软硬件和代码的缺陷并修正。

做好代码安全审计,不能让代码中存在安全漏洞。

②、全生命周期跟踪

软件开发完成到发布使用,只是软件生命周期的开始。在用户使用过程中依然会发现软件公司未发现的软件缺陷。所以,我们要对软件的全生命周期(设计、开发、运营、更新、停止)进行跟踪,一旦发现缺陷,立即进行补丁修补。

③、吸取历史教训

软件开发过程中可以吸取之前软件发生过的缺陷的经验教训。我们在自己的软件过程中尽量避免犯同类的错误。否者,我们的软件注定是一个失败的开始。

④、借助安全系统

在计算机系统运营过程中,黑客们的攻击手段众多。我们需要利用计算机网络安全的安全系统来对软件进行边界的安全保护。

总结

产生软件的缺陷(含软件漏洞)对软件来说都是一件不好的事情。我们除了认识他们的区别之外,更重要是认清的它们的根源,然后尽量减少他们的发生。