软件从简单的家用冰箱到工业生产工业生产的各个方面。
过去,软件中的问题只是重启机器的一件小事,但现在软件在大型行业中发挥了越来越大的作用。
软件安全和质量的隐患可能会威胁到人身安全和环境。
在互联网高度发达的当下,智能化的软件成为商业决策、推广等不可缺少的利器,很多软件涉及了客户商业上重要的信息资料,因此企业都很关心软件的安全性。
目前有许多种的测试手段可以进行安全性测试,安全测试方法分主要为三种:
①静态的代码安全测试:
主要通过对源代码进行安全扫描,根据程序中数据流、控制流、语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安 全漏洞。
静态的源代码安全测试是非常有用的方法,它可以在编码阶段找出所有可能存在安全风险的代码,这样开发人员可以在早期解决潜在的安全问题。
而正因为如此,静态代码测试比较适用于早期的代码开发阶段,而不是测试阶段。
②动态的渗透测试:
渗透测试也是常用的安全测试方法。
是使用自动化工具或者人工的方法模拟黑客的输入,对应用系统进行攻击性测试,从中找出运行时刻所存在的安全漏洞。
这种测试的特点是真实有效,一般找出来的问题都是正确的,也是较为严重的。
但渗透测试一个致命的缺点是模拟的测试数据只能到达有限的测试点,覆盖率很低。
③程序数据扫描。
一个有高安全性需求的软件, 在运行过程中数据是不能遭到破坏的,否则会导致缓冲区溢出类型的攻击。
数据扫描的手段通常是进行内存测试,内存测试可以发现许多诸如缓冲区溢出之类的漏洞,而这类漏洞使用除此之外的测试手段都难以发现。
例如,对软件运行时的内存信息进行扫描,看是否存在一些导致隐患的信息,当然这需要专门的工具来进行验证。