在软件开发过程中企业有必要这么做吗?

2020-06-26

随着软件开发的速度越来越快,新技术的不断融入,开发人员经常会花大量的时间学习最新技术,深入探究系统设计和架构,解决性能问题,但是很少主动去考虑系统安全性。有些企业会要求测试人员会做一些基础的安全测试。然而,开发和测试的技术人员,绝大多数都缺乏对安全测试的了解。所以,很多软件并没有经过专门的安全测试便运行在互联网上,它们携带着各类安全漏洞直接暴露在公众面前,其中一些漏洞甚至直指软件所承载的核心敏感信息或业务逻辑。这些漏洞一旦被不怀好意者利用,很可能会给企业造成经济损失,带来负面声誉影响的同时,还可能被起诉遭到罚款等等。因此,我们应该重视安全测试吗?

安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 。                                      --    《百度百科》


安全测试的种类有很多,从测试方法学上来区分,可以分为:黑盒测试、白盒测试和灰盒测试

  1. 黑盒测试不需要访问系统的源代码,不需要了解系统的内部细节,只通过外部访问来实现安全测试的目的,这种方法有一些盲目测试的味道,但却简单易行,并且能够取得一定的效果;

  2. 白盒测试需要掌握更多的资源才能进行,通常包括系统的源代码、系统的架构和实现细节等,这种方法可以有针对性的进行测试,但是需要的条件较高,而且对于测试人员的要求也比较高;

  3. 灰盒测试,顾名思义,是介于黑盒与白盒之间的测试方法,需要的资源也介于二者之间。

安全测试是以发现系统缺陷为目的的,为了实现这个目的,出现了很多测试的方法和对应的测试工具,常见的包括:深度代码分析、渗透测试、模糊测试(Fuzzing、漏洞检查、模拟攻击测试等等。其中,大多数都是被动式的测试方法(比如漏洞检查,只能找到被测系统中是否存在已知的漏洞),而深度代码分析和模糊测试(Fuzzing)是两种主动的安全测试分析方法。

因此,安全测试是以发现安全隐患为目标,假设导致问题的数据是攻击者处心积虑构造的,需要考虑所有可能的攻击途径的一种测试。它的思考域不但包括系统的功能,还有系统的机制、外部环境、应用与数据自身安全风险与安全属性等。同时,它也是以违反权限与能力的约束为判断依据。以发现系统所有可能的安全隐患为出发点的一种测试。企业有必要进行恰当的安全测试,以降低因安全问题造成的风险,甚至损失。