一、基本理解
安全测试什么时候开始进行?
安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 。
安全测试与功能测试的区别:
1.目标不同:测试以发现BUG为目标,安全测试以发现安全隐患为目标。
2.假设条件不同:测试假设导致问题的数据是用户不小心造成的,接口一般只考虑用户界面。安全测试假设导致问题的数据是攻击者处心积虑构造的,需要考虑所有可能的攻击途径。
3.思考域不同:测试以系统所具有的功能为思考域。安全测试的思考域不但包括系统的功能,还有系统的机制、外部环境、应用与数据自身安全风险与安全属性等。
4.问题发现模式不同:测试以违反功能定义为判断依据。安全测试以违反权限与能力的约束为判断依据。
与渗透测试的区别:
1.出发点差异:渗透测试是以成功入侵系统,证明系统存在安全问题为出发点;而安全测试则是以发现系统所有可能的安全隐患为出发点。
2.视角差异:渗透测试是以攻击者的角度来看待和思考问题,安全测试则是站在防护者角度思考问题,尽量发现所有可能被攻击者利用的安全隐患,并指导其进行修复。
3.覆盖性差异:渗透测试只选取几个点作为测试的目标,而安全测试是在分析系统架构并找出系统所有可能的攻击界面后进行的具有完备性的测试。
4.成本差异:安全测试需要对系统的功能、系统所采用的技术以及系统的架构等进行分析,所以较渗透测试需要投入更多的时间和人力。
5.解决方案差异:渗透测试无法提供有针对性的解决方案;而安全测试会站在开发者的角度分析问题的成因,提供更有效的解决方案。
二、安全测试方法
1、功能测试
采用黑盒测试方法,对设计安全的模块进行验证
如:用户管理,权限管理,加密系统
对用户隐私,检查是否在本地保存用户密码,无论加密与否;检查敏感的隐私信息,如聊天记录、关系链、银行账号等是否进行加密;检查是否将系统文件、配置文件明文保存在外部设备上;部分需要存储到外部设备的信息,需要每次使用前都判断信息是否被篡改。
对文件权限,检查App所在的目录,其权限必须为不允许其他组成员读写。
对网络传输,检查敏感信息在网络传输中是否做了加密处理,重要数据要采用TLS或者SSL。http请求默认是明文的,如果安全验证和加密机制很烂,通过网络嗅探扫描,很容易被猜到和模拟请求,也可能被注入。
对运行时解释保护,对于嵌有解释器的软件,检查是否存在XSS、SQL注入漏洞;使用webiew的App,检查是否存在URL欺骗漏洞
对Android组件权限保护,禁止App内部组件被任意第三方程序调用。若需要供外部调用的组件,应检查对调用者是否做了签名限制
对迭代升级,检查是否对升级包的完整性、合法性进行了校验,避免升级包被劫持。
对界面截取,通过adb shell命令或第三方软件获取root权限,在手机界面截取用户填写的隐私信息,随后进行恶意行为。
2、漏洞扫描
安全漏洞扫描,借助漏洞扫描器完成,它可以自动检测远程或本地主机的安全性。
主机漏洞扫描器(Host Scanner):COPS、Tripewire、Tiger
网络漏洞扫描器(Net Scanner):Satan、ISS Internet Scanner
3、模拟攻击实验
冒充形式:
口令猜测:黑客识别出可利用的用户账户,控制机器
缓冲区溢出:代码层的漏洞,指针指向恶意代码,执行恶意指令,得到系统控制权
第一:要明白原理,不论是sql注入、xss还是csrf等,都是要了解入侵原理的,否则会扩大测试范围。比如有人问我,你测试了csrf了吗?你测试权限会话劫持了吗?你测试越权了吗?来自于窃取用户cookies后的不同操作,如何保证cookies被窃取后不被他人使用才是测试的关键。这样做才能减少各种名词对于测试人员的伤害。
第二:要把原理转换成用例。针对每个页面,或者有功能的页面(增删改)等。先判断页面是否有必要测试(静态页面做sql注入就没必要)。然后再将原理转换成合适的用例。
1、数据安全
AWS服务器、云端(阿里云)等部署的项目实现热备、冷备处理方式
2、应用层安全
应用挂掉,可以手动启动机制
应用一键部署和启动
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!
房子要一层一层盖,知识要一点一点学。大家在学习过程中要好基础,多上手实操,话不多说,这里狠狠上一次干货!我熬夜整理好的各阶段(功能、接口、自动化、性能、测开)技能学习资料+实操讲解,非常适合私下里学习,比找资料自学高效多了,分享给你们。
领取关 w/x/g/z/h:软件测试小dao
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。