关于软件测试中的软件安全性测试
安全测试检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如,①想方设法截取或破译口令;②专门定做软件破坏系统的保护机制;③故意导致系统失败,企图趁恢复之机非法进入;④试图通过浏览非保密数据,推导所需信息,等等。理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图。 安全测试用来验证集成在系统内的保护机制是否能够在实际中保护系统不受到非法的侵入。俗话说: “ 系统的安全当然必须能够经受住正面的攻击 —但是它也必须能够经受住侧面的和背后的攻击。 ” 在安全测试过程中,测试者扮演着一个试图攻击系统的个人角色。测试者可以尝试去通过外部的手段来获取系统的密码,可以使用可以瓦解任何防守的客户软件来攻击系统;可以把系统“制服”,使得别人无法访问;可以有目的地引发系统错误,期望在系统恢复过程中侵入系统;可以通过浏览非保密的数据,从中找到进入系统的钥匙等等。 只要有足够的时间和资源,好的安全测试就一定能够最终侵入一个系统。系统设计者的任务就是要把系统设计为想要攻破系统而付出的代价大于攻破系统之后得到的信息的价值。
软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。
用户认证安全的测试要考虑问题:
1. 明确区分系统中不同用户权限
2. 系统中会不会出现用户冲突
3. 系统会不会因用户的权限的改变造成混乱
4. 用户登陆密码是否是可见、可复制
5. 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)
6. 用户推出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
系统网络安全的测试要考虑问题
1. 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上
2. 模拟非授权攻击,看防护系统是否坚固
3. 采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,现在最常用的是NBSI系列和IPhacker IP)
4. 采用各种木马检查工具检查系统木马情况
5. 采用各种防外挂工具检查系统各组程序的客外挂漏洞
数据库安全考虑问题:
1. 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)
2. 系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,
对于这个系统的功能实现有了障碍)
3. 系统数据可管理性
4. 系统数据的独立性
5. 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)