如何在QA测试的同时完成安全测试?
作者:网络转载 发布时间:[ 2016/12/26 17:00:28 ] 推荐标签:QA 安全测试
在QA测试WebApp的时候我们可以做一些事,同时又完成Web安全测试,这该是多有趣的事情。
传统的安全扫描大部分都是基于爬虫的,但是如果在QA测试的同时我们可以废弃爬虫,抛掉安全测试费时间,等待久的环节。
基础架构:
HTTP代理:
我们采用HTTP Proxy的形式来捕获所有HTTP请求,将所有请求记录至Mysql中。
数据库架构:
数据库采用Mysql来记录请求,我们可以给他5个Columns (id、requests、type、value、response)。
id为主键requests纪录着请求的url,
type纪录着请求的方式(e.g. get、post),
value记录着请求的详细参数(e.g. userid=10000),
response纪录着当时请求的response,方便我们对比加入POC后的请求,用来判断是否存在漏洞。
这样我们能解析出来的url是:
http://www.example.com/getuserinfo?userid=10000.
攻击模块:
在常见的Web应用中,可能存在很多风险,考虑到迭代和拓展,我们的每一个漏洞测试都是一个模块(e.g. SQL injection、XSS、LFI…)。这样我们可以很方便的增加后续的攻击模块,比如爆出一个新的漏洞时,我们只需要编写一个新的POC并加入模块中,可以投入生产了。
考虑到研发周期的因素,攻击模块我们可以使用一些已经比较完善的开源程序来做(e.g. sqlmap),当整个爬虫都不变的那么重要的时候,我们的攻击模块可以自由配置。
任务调度模块:
了更近一步的提到效率,与业务逻辑贴合,我们建立了一个任务分发调度模块。这个模块起的作用是把同一个URL里,同样value的URL去重,e.g. http://www.example.com/getuserinfo?userid=10000这个URL中userid的值可能会发生变化,但是我们又不用去重复测试,我们可以去掉多出来的重复的请求。如果不这样做的话,会严重影响我们测试的时间与效率。
比如我的Web应用只有前端JS/HTML,我们只需要使用XSS测试模块。如果我的Web应用是一个resfulAPI的话,那我或许可以只用SQL injection的模块来测试。当然,你也可以一起使用,测试的时候可以很轻易的组合这些模块。
漏洞报表:
当我们测试完应用后,我们需要知道哪个URL存在或者不存在哪些种类的漏洞。所以我们需要一个展现的页面,这个页面搭建会比较简单,只需要从数据库里读出内容并且展示可以了。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11