件安全性测试是对应用程序安全等级加以核验并识别潜在安全瑕疵的过程。其主要目标是探寻软件自身程序设计中潜在的安全风险,同时检验应用程序对非法入侵的抵御能力。由于安全指标各不相同,测试策略也存在差异。然而,安全是一个相对的概念,安全性测试无法确凿地证明应用程序绝对安全,只能验证所设立策略的有效性,而这些策略是基于威胁分析阶段的假设而确定的。例如,对应用软件在防止未经授权的内部或外部用户访问或蓄意破坏等情形下的运行状况进行测试。软件安全在软件领域中是一个重要的子领域,系统安全性测试包含应用程序和操作系统两个层面的安全性。
一、软件安全性测试的常见类别
- 漏洞扫描:利用工具对代码进行自动静态分析,以判别系统组件中是否存在已知的漏洞问题。
- 渗透测试:在安全的环境下模拟外来入侵者对软件系统进行攻击的活动过程,能够发现未知的漏洞。
- 应用程序安全测试:主要针对 Android/iOS 移动 App、web 等应用,需要收集这类应用程序的相关资料,以找出系统的缺陷或漏洞。
- API 安全测试:识别 API 和网络服务中的漏洞(如 API 注入、XML 注入等)。API 特别容易受到中间人攻击等威胁,比如窃听 API 通信并窃取数据或凭证。
- 配置扫描:一般依照合规标准或研究机构指定的最佳实践列表来检查系统,识别软件、网络和其他计算系统的错误配置活动过程。
- 安全审计:按照定义的法规和安全要求、合规标准审查代码或架构,分析存在的安全漏洞,评估硬件配置、操作系统和组织实践的安全状况。
系统安全性包括两个方面的测试:一方面是软件漏洞,即设计上的缺陷或程序问题;另一方面是数据库的安全性,这也是系统安全性的核心部分。
二、软件安全性测试的方法有哪些?
- 安全基线法:依据所测试软件项目的安全需求设置安全基线,整个安全性测试以该基线为准则,可极大地保障软件的安全性。当出现超出已设定安全基线的情况时,无需耗费过多时间进行测试。
- 安全矩阵法:用矩阵表示所有安全活动发生以及可能发生的概率,从而标识出发生概率较高的安全活动。这类安全活动是软件安全性测试优先完成的重点。
安全对于网络同样非常重要,软件安全性测试对企业开发的软件和使用者也具有重大意义。
三、软件安全测评要点有哪些?
- 上传功能:测试能否绕过文件上传检查功能、上传文件的大小和次数限制情况。
- 注册功能:注册请求的安全传输状况、密码复杂度在后台的检验情况、激活链接测试、重复注册和批量注册问题。
- 验证码功能:验证码的一次性、验证码绕过、短信验证码轰炸情况。
- 密码安全性要求:密码复杂度要求、密码保存要求。
四、软件安全性测试的测试策略
(一)用户认证安全的测试需考虑的问题:
1.明确区分系统中不同用户的权限。
2.系统中是否会出现用户冲突。
3.系统是否会因用户权限的改变而陷入混乱。
4.用户登陆密码是否可见、可复制。
5.是否可以通过绝对途径登陆系统(如拷贝用户登陆后的链接直接进入系统)。
6.用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入。
(二)系统网络安全的测试需考虑的问题:
1.测试所采取的防护措施是否正确安装,有关系统的补丁是否打上。
2.模拟非授权攻击,检验防护系统是否坚固。
3.采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具进行攻击测试,目前最常用的是 NBSI 系列和 IPhacker IP)。
4.采用各种木马检查工具检查系统木马情况。
5.采用各种防外挂工具检查系统各组程序的外挂漏洞。
(三)数据库安全需考虑的问题:
1.系统数据是否机密(对于银行系统等,这一点尤为重要,而一般的网站要求相对较低)。
2.系统数据的完整性(在企业实名核查服务系统中曾存在数据不完整的情况,对系统功能实现造成阻碍)。
3.系统数据可管理性。
4.系统数据的独立性。
5.系统数据可备份和恢复能力(数据备份是否完整、可否恢复、恢复是否能够完整)。