2. 是否具有纵深防御的能力

  纵深防御背后的思想是:使用多重防御策略来测试软件,以至少有一层防御将会阻止完全的黑客破坏。 “保护薄弱环节”的原则适用于组件具有不重叠的安全性功能。当涉及到冗余的安全性措施时,所提供的整体保护比任意单个组件提供的保护要强得多,纵深防御能力的测试是软件安全测试应遵循的原则。

  3. 是否有保护故障的措施

  大量的例子出现在数字世界。经常因为需要支持不安全的旧版软件而出现问题。例如,比方说,该软件的原始版本十分“天真”,完全没有使用加密。现在该软件想修正这一问题,但已建立了广大的用户基础。此外,该软件已部署了许多或许在长时间内都不会升级的服务器。更新更聪明的客户机和服务器需要同未使用新协议更新的较旧的客户机进行互操作。该软件希望强迫老用户升级,没有指望老用户会占用户基础中如此大的一部分,以致于无论如何这将真的很麻烦。怎么办呢?让客户机和服务器检查它从对方收到的第一条消息,然后从中确定发生了什么事情。如果我们在同一段旧的软件“交谈”,那么我们不执行加密。

  遗憾的是,老谋深算的黑客可以在数据经过网络时,通过篡改数据来迫使两台新客户机都认为对方是旧客户机。更糟的是,在有了支持完全(双向)向后兼容性的同时仍无法消除该问题。

  对这一问题的一种较好解决方案是从开始采用强制升级方案进行设计;使客户机检测到服务器不再支持它。如果客户机可以安全地检索到补丁,它升级。否则,它告诉用户他们必须手工获得一个新的副本。但是从一开始应准备使用这一解决方案,会得罪早期用户。

  测试采取的防护措施是否正确装配好,有关系统的补丁是否打上十分的重要。

  4. 小特权

  小特权原则规定:确定只授予执行操作所必需的少访问权,并且对于该访问权只准许使用所需的少时间。

  当软件给出了某些部分的访问权时,一般会出现滥用与那个访问权相关的特权的风险。例如,我们假设您出去度假并把您家的钥匙给了您的朋友,好让他来喂养您的宠物、收集邮件等等。尽管您可能信任那位朋友,但总是存在这样的可能:您的朋友未经您同意在您的房子里开派对或发生其它您不喜欢的事情。

  一位程序员可能希望访问某种数据对象,但只需要从该对象上进行读。不过,不管出于什么原因,通常该程序员实际需要的不仅是必需的特权。通常,该程序员是在试图使编程更容易一些。

  如果软件设置的访问权结构不是“完全访问或根本不准访问”,那么小特权原则会非常有效。

  5. 分隔

  分隔背后的基本思想是如果我们将系统分成尽可能多的独立单元,那么我们可以将对系统可能造成损害的量降到低。

  通常,如果攻击者利用了代码中的缓冲区溢出,对磁盘进行原始写并胡乱修改内核所在内存中的任何数据。没有保护机制能阻止他这样做。因此,系统进行适度的分隔显得十分重要,软件要能直接支持本地磁盘上永远不能被擦去的日志文件,这意味着直到

  攻击者闯入时,才不能保持精确的审计信息。

  适度使用的分隔,将利于系统的管理,但是对每一个功能都进行分隔,那么系统将很难管理。

  三、安全性测试的主要目的是查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力, 根据安全指标不同测试策略也不同,如果遵循相同的原则,去证明软件的安全性,将有利于软件安全测试的工作规范的进行,有利于软件安全测试工作的发展。