软件安全性是一个广泛而复杂的主题,每一个新的软件总可能有完全不符合所有已知模式的新型安全性缺陷出现。要避免因安全性缺陷问题受各种可能类型的攻击是不切实际的。在软件安全测试时,运用一组好的原则来避免不安全的软件上市、避免不安全软件受攻击,显得十分重要。

  一、软件安全性测试基本概念

  软件安全性测试包括程序、网络、数据库安全性测试。根据系统安全指标不同测试策略也不同。

  1.用户程序安全的测试要考虑问题包括:

  ① 明确区分系统中不同用户权限;

  ② 系统中会不会出现用户冲突;

  ③ 系统会不会因用户的权限的改变造成混乱;

  ④ 用户登陆密码是否是可见、可复制;

  ⑤ 是否可以通过途径登陆系统(拷贝用户登陆后的链接直接进入系统);

  ⑥ 用户推出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统。

  2.系统网络安全的测试要考虑问题包括:

  ① 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上;

  ② 模拟非授权攻击,看防护系统是否坚固;

  ③ 采用成熟的网络漏洞检查工具检查系统相关漏洞;

  ④ 采用各种木马检查工具检查系统木马情况;

  ⑤ 采用各种防外挂工具检查系统各组程序的客外挂漏洞。

  3.数据库安全考虑问题:

  ① 系统数据是否机密(比如对银行系统,这一点特别重要,一般的网站没有太高要求);

  ② 系统数据的完整性;

  ③ 系统数据可管理性;

  ④ 系统数据的独立性;

  ⑤ 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)。

 二、根据软件安全测试需要考虑的问题

  1. 保护了薄弱的环节

  攻击者往往设法攻击易攻击的环节,这对于您来说可能并不奇怪。即便他们在您系统各部分上花费相同的精力,他们也更可能在系统需要改进的部分中发现问题。这一直觉是广泛适用的,因此我们的安全性测试应侧重于测试薄弱的部分。

  如果执行一个好的风险分析,进行一次薄弱环节的安全测试,标识出您觉得是系统薄弱的组件应该非常容易,消除严重的风险,是软件安全测试的重要环节。

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

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