安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 。
安全测试的几个特点:
- 与常规的功能测试相比,目标不同,功能测试以发现Bug为目的,安全测试则以发现安全隐患为目标
- 它是站在防护者角度思考问题,模拟常规的漏洞攻击,尽量发现所有可能被攻击者利用的安全隐患,并指导其进行修复
- 它的范围较广,不但包括系统的功能,还有系统的机制、外部环境、应用与数据自身安全风险与安全属性等
- 比较依赖工具,扫描、分析、定位、解决
简单的安全测试,可以通过一些基础的技术能力和业务测试能力去发现,无需借助于工具,比如一些经典案例:
- 注册
密码加密传输、加密校验,防止恶意注册,前后端分别做行为验证。
- 短信验证码
随机生成、加密提交、和手机号的一致性校验、有效时长、发送频率,从成本和安全考虑,还要防止用户使用脚本频繁提交,设置单日的手机号发送次数,对恶意用户,可以设置黑名单拦截等。
- 支付
资金账户的操作,自身就是一个安全行为极高的业务。充值、提现,要防止用户篡改请求,在后端需要做金额验证,校验余额是否不足,或校验该请求不是合法的请求(不是前端系统行为,前后端做统一验签)。
多账户操作或高并发下,要对账户做加锁处理。
-
权限管理
避免越权行为,业务上要做权限的强校验,避免用户URL拼接跳过权限检查。
- 敏感数据,
加密传输(密码、金额、用户信息),有特别合规要求的,要加密存储。
- 灰度开关
新版功能发布后,存在漏洞,被用户大量刷单,需要立刻下掉止损,通过后台开关,关闭功能。
系统级别的安全防护,还是需要借助一些强大的工具,常用的一些安全测试工具有很多:
- AppScan(AppScan standard edition)
- Sonar Qube,简单的安全漏洞扫描
- Fotify Static Code Analyzer
- Findbugs
本文主要以AppScan为例,它是IBM公司的Web应用安全测试工具,操作环境为windows。
Appscan操作不复杂,主要有以下步骤:
- 设置网站主页地址
- 授权登录账号和密码
- 基于以上2点,appScan会探索式爬