近来,在我负责的公司某软件产品的后测试工作,常常被问到这样一个问题:在做测试过程中,我们的软件产品在安全性方面考虑了多少?应该如何测评一个软件到底有多安全?

这个软件因为涉及客户商业上重要的信息资料,因此用户关心的核心问题始终围绕“这个软件安全吗”。一个由于设计导致的安全漏洞和一个由于实现导致的安全漏洞,对用户的终影响都是巨大的。我的任务是确保这个软件在安全性方面能满足客户期望。

一、什么是软件安全性测试

(1)什么是软件安全

软件安全属于软件领域里一个重要的子领域。在以前的单机时代,安全问题主要是操作系统容易感染病毒,单机应用程序软件安全问题并不突出。但是自从互联网普及后,软件安全问题愈加显加突显,使得软件安全性测试的重要性上升到一个前所未有的高度。

软件安全一般分为两个层次,即应用程序级别的安全性和操作系统级别的安全性。应用程序级别的安全性,包括对数据或业务功能的访问,在预期的安全性情况下,操作者只能访问应用程序的特定功能、有限的数据等。操作系统级别的安全性是确保只有具备系统平台访问权限的用户才能访问,包括对系统的登录或远程访问。

本文所讲的软件安全主要是应用程序层的安全,包括两个层面:①是应用程序本身的安全性。一般来说,应用程序的安全问题主要是由软件漏洞导致的,这些漏洞可以是设计上的缺陷或是编程上的问题,甚至是开发人员预留的后门。②是应用程序的数据安全,包括数据存储安全和数据传输安全两个方面。

(2)软件安全性测试

一般来说,对安全性要求不高的软件,其安全性测试可以混在单元测试、集成测试、系统测试里一起做。但对安全性有较高需求的软件,则必须做专门的安全性测试,以便在破坏之前预防并识别软件的安全问题。

安全性测试(Security Testing)是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程。应用程序级安全测试的主要目的是查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力, 根据安全指标不同测试策略也不同。注意:安全性测试并不终证明应用程序是安全的,而是用于验证所设立策略的有效性,这些对策是基于威胁分析阶段所做的假设而选择的。例如,测试应用软件在防止非授权的内部或外部用户的访问或故意破坏等情况时的运作。