软件安全性是指在非正常条件下不发生安全事故的能力,一般分为应用程序级别的安全性和系统级别的安全性。应用程序级别的安全性包括对数据或业务功能的访问,确保在预期的安全情况下操作者按照所属用户类型授权访问相应的功能和数据。操作系统级别的安全性包括系统登录或远程访问,确保操作者按照已授权的访问权限访问系统和应用程序。
安全测试的基本类型:①安全功能测试。基于软件的安全功能需求说明,测试软件的功能实现是否与安全需求一致、实现是否完备。主要的安全功能需求包括数据机密性、完整性、可用性、不可否认性、身份认证、授权、访问控制、审计跟踪、委托、隐私保护、安全管理等。②安全漏洞测试。从攻击者的角度检测软件是否存在安全漏洞。安全漏洞是指软件在设计、实现、操作、管理上存在的可被利用的缺陷或弱点。
安全测试的主要方法:①安全漏洞扫描。通过对程序源代码进行扫描,将程序数据流、控制流等信息与软件安全规则库进行匹配,检测代码中潜藏的安全漏洞。该方法通常借助特定的漏洞扫描器完成,漏洞扫描器是一种能自动检测远程或本地主机安全性弱点的程序。安全漏洞扫描可以在编码阶段找出可能存在安全风险的程序代码,帮助开发人员及早解决潜在的安全问题。②安全功能验证。采用黑盒测试技术对涉及安全的软件功能(如用户管理模块、权限管理模块、加密系统、认证系统等)进行测试,主要是验证相关的安全功能是否有效。③动态渗透测试。使用自动化工具或者人工的方法模拟黑客的输入,对应用程序进行攻击性测试,找出运行时刻存在的安全漏洞。常见的攻击方法包括冒充、重演、消息篡改、服务拒绝、内部攻击、外部攻击、陷阱门等。该方法较为有效,但模拟的测试数据只能到达有限的测试点、覆盖率较低。