软件安全测试考量与生命周期解析
1. 安全测试的重要性与常见误区
1.1 安全测试不可替代
即使开发者采用了安全的编码实践和标准,也不能替代安全测试。再专注于安全的开发者,也可能会遗漏一些问题,而安全测试人员通过全面审查和测试,有可能发现这些问题。此外,很多开发者虽然有安全意识,但可能缺乏足够的安全培训。
1.2 常见的安全误区
- 依赖UI保证安全 :当依赖UI来限制输入长度、执行业务逻辑或验证访问时,存在潜在问题。因为UI很容易被绕过,一旦绕过,UI所保护的内容就会变得脆弱。例如,对产品进行重构以提升性能或功能,或者暴露之前受限的API时,原本隐藏在UI背后的安全风险就会暴露出来。所以,绝不能仅仅依赖UI来缓解安全漏洞。
- 认为后端不可达 :这种假设基于对后端实际可达性的先入为主的认知。它依赖于以下几个复杂的预期:
- 消费者只会按预期使用产品。
- 系统没有过度或意外的影响。
- 系统设计与之交互的所有内容都能100%按照系统预期正常工作。
显然,完全相信这些预期是不现实的,因此不能认为后端是不可达的。 - 将错误视为安全的标志 :在功能测试中,用户遇到错误通常会避免再次触发。但攻击者可能会从错误中获取有关漏洞和软件使用情况的有价值信息,从而进一步调查。所以,必须仔细检查所有错误和错误行为,确保生成的错误是用户应接收的正确错误,在代码中正确的位置生成,并且不会向攻击者透露有用信息。