2.软件安全测试方法
尽管传统软件测试方法重点在软件功能测试,但是通过组织合适的测试步骤和适当的测试用例,也能对软件的安全质量进行测试,可以采用的测试方法包括常见的白盒测试、黑盒测试以及灰盒测试等方法。在传统测试之外,模糊测试和渗透测试是常用的软件安全性测试方法。
1)模糊测试
模糊测试,也称Fuzz测试,由Baron Mille、Lars Fredriksen、Bryan SO首次提出,是一种通过提供非预期的输入并监视异常结果来发现软件故障的方法。
模糊测试本质上属于黑盒测试,它不关心被测试目标的内部实现,而是利用构造畸形的输入数据引发被测试目标产生异常,从而发现相应的安全漏洞。据资料分析,模糊测试是目前最有效的漏洞挖掘技术,已知漏洞大部分都是通过这种技术发现的。
模糊测试的主要步骤包括:
(1)生成大量的畸形数据作为测试用例;
(2)将这些测试用例作为输入应用于被测对象;
(3)监测和记录由输入导致的任何崩溃或异常现象;
(4)查看测试日志,深入分析产生崩溃或异常的原因。
模糊测试是在软件测试中强制软件程序使用畸形数据,并观察软件运行情况的一种测试方法。不够强壮的代码在处理这些畸形数据时会运行不稳定,或导致崩溃,而经过良好编码并具有足够安全性的程序则不会崩溃。