从零开始内建你的安全测试流程

一、 安全测试的意义

安全问题,没发生的时候我们可以侥幸,一旦发生生产安全问题,对很多公司来说可能就是黑天鹅事件了。平台的安全,是我们测试中不可舍弃的一环,而且需要长期持续的关注。

二、 从哪里入手

很多公司没有专职的安全测试人员,一个是安全涉及的技术栈比较广,要做好还需要对每一个技术栈有深入的研究,市面上的安全人才是很稀缺的;另外一般小公司去养一个专职的安全人员,往往会去对比第三方安全外包平台,发现提交外包平台会更划算。
团队中没有安全人员,特别是在敏捷的当下,也不可能每一次迭代都提交第三方外包,那作为测试人员,我们就需要去思考,如何在测试流程中插入安全测试这一环,毕竟生产出损,你是无法置身事外的,引入安全测试也能为公司带来价值
那么我们该如何开展安全测试呢,很多同学目前可能直接用APPscan或zap进行扫描,这也是一个方式,但有些业务相关的安全问题这种工具是无法识别到的,有些还是需要手工环节的接入,安全测试也是测试的一种类型,在整个软件研发的生命周期中,我们是如何去保障产品质量的?同样,我们也按照这个思路,去建设我们的安全测试执行路径

三、 万丈高楼从地起,打造我们的安全测试流程

3.1 需求阶段

在需求评审阶段,我们除了关注需求的合理性和价值,还要加入破坏者思维去审视这个需求–这个需求哪里有漏洞,可以让我去破坏他的规则。
比如商家做活动,评论下点赞越多的发送礼品,那么我是不是可以通过接口去不断的刷点赞,让你接口tps过载,导致别人无法点赞,这样我就有更大的机会拿取礼品。所以这样就引申出来一个安全性需求–我们需要对活动的点赞和评论做限流处理。

3.2 代码层面
  • 静态代码扫描

我们可以引入静态代码扫描工具,比如静态代码扫描,目前也有很多开源的静态代码扫描工具,比如大家常用的sonar

  • 三方组件的扫描

除了静态代码的扫描,开发人员在引用第三方依赖包的时候,获取来源比较随意,很可能下载的这个依赖包就包含病毒,程序中集成的第三方的组件也是需要做安全扫描的,比如node的依赖包安全扫描就可以选择nsp这个开源软件

3.3 数据脱敏

关于数据脱敏我们主要关注两部分,一个是敏感数据的存储是否做了加密处理,比如用户的账户密码、商家的卡密,这些都需要在数据落地的地方做加密存储。我们需要通过查询数据库或者文件,确认数据是否做了加密存储

另外一块就是在传输的过程中,敏感数据是否做了加密处理,比如我们的登录注册功能,在前后端接口交互过程中,密码是否做了加密处理;获取短信相关的业务,接口是否直接将短信做了返回等。我们可以通过浏览器自带的开发者工具F12或者第三方工具fiddler、Charles抓包测试。

3.4 跨目录权限

在商户管理侧,涉及到了商户和子账号的业务需求,子账户是可以定义访问哪些页面的角色。当我们没有给子账户赋权的页面,他是否可以直接通过浏览器中输入url进行访问,这个我们是需要进行测试的。

3.5 跨站脚本

跨站脚本,大家比较熟知的有xss,跨站脚本会导致会话被劫持、敏感信息泄露甚至账户被盗的风险,最简单的方式是在有文本框的地方通过构造js或者html保存,看是否做了转义处理;另外也可以通过带参数的url后面进行js传值进行请求,查看是否执行了js

3.6 SQL注入

sql注入大家都比较熟悉,在界面上做数据库相关的操作,我们可以构造一些传入参数去改变sql的最终执行逻辑,比如针对查询类的,http://xxx.com/salay/userid=9898,我们可以再后面修改9898为9898 “or 1=1“,这样在最终sql查询中就变成一个始终为真的数据,如果存在注入问题会将所有人的薪资数据暴露出来。sql注入相关的测试我们可以借用sqlmap这个工具

3.7 越权

越权,简单的理解就是A用户操作了B用户的数据,比如我们在下单过程中,商品A是给会员的购买的,非会员在获取商品ID后,通过下单结构模拟下单商品A,如果能够成功,就证明存在越权的问题,我们可以通过fiddler进行请求截取,然后修改传参进行测试

3.8 上传下载

文件的上传下载主要有三点
一个是对用户磁盘空间的大小限制,比如提供了一个上传功能,用户无限制的上传大容量文件,导致磁盘成本巨大。
文件类型校验
比如要上传excel的,用户上传了html文件,这个是存在一定的风险的,特别是上传后可以直接访问资源文件,这样用户可以通过上传的html做一些xss的攻击
资源下载的安全控制,比如用户下载自己的工资条,是这样一个链接,http://xxx.con/8888.xls,这样就可以联想修改8888这个值为其他值,查看他人的敏感数据

3.9 服务器端口

服务器端口的测试,对有些自建机房,直接通过物理机进行部署的会很有用处,比如有些不需要使用的端口对外开放了,恶意用户可能利用该端口从事一些非法操作,我们可以通过nmap进行服务器的端口扫描,非必须的端口要关闭

3.10 业务需求维度

上面的测试项是通用性的规则,结合具体的业务需求,我们也可以产出一些安全测试点,比如针对登录注册的需求,我们从密码强度、验证码可以产出安全测试用例

针对有些用户类的API接口,我们可以做限流的策略,比如获取短信验证码,我们就要做一些风控策略,否则遇到恶意用户,会造成公司短信成本损失

四、 结束语

安全是质量保障不可或缺的一环,作为测试人员,我们可以从最基础开始去打造我们的安全测试流程,与其他测试类型一样将安全的思想贯穿在整个软件研发生命周期,做好安全质量内建。也希望大家一起交流你们是如何做安全测试的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

『软件测试1』你需要了解的软件测试基础知识

软件测试基础一、 软件缺陷的概述1、什么是软件缺陷2、软件缺陷的类型3、软件缺陷的案例4、软件缺陷的产生原因5、软件缺陷的分类6、软件缺陷的处理流程7、多学一招:缺陷报告(由测试人员完成)8、常见软件缺陷管理工具9、修复软件缺陷的成本二…

直连路由和静态路由(实验)

一:概念 1:直连路由概念 根据 路由 器学习路由信息、生成并维护 路由表 的方法包括直连路由(Direct)、 静态路由 (Static)和 动态路由 (Dynamic)。直连路由:路由器接口所连接的子网的路由方式称为直连路由; 非直连路由:通过路由协议从别的路…

使用 GB28181.Solution + ZLMediaKit + MediaServerUI 进行摄像头推流和播放

使用 GB28181.Solution ZLMediaKit MediaServerUI 进行摄像头推流和播放独立观察员 2020 年 8 月 25 日一、摄像机 GB28181 配置打开 国标 28181 配置页面,勾上 “接入使能”:打钩的是重要的配置信息,主要就是 SIP 服务器的信息和摄像头自己…

将 .NET Framework 项目转换为 .NET Standard 项目

将 .NET Framework 项目转换为 .NET Standard 项目独立观察员 2020 年 8 月 20 日如今 .NET Core 是未来发展的主流(至少在 .NET 5 发布之前),而我们如果要改造一个项目为 .NET Core 项目,则它引用的项目应当先改造为 .NET Standa…

7-3 最短路径 (20 分)(分支限界+思路+详解)

一:题目 给定一个有N个顶点和E条边的无向图,顶点从0到N−1编号。请判断给定的两个顶点之间是否有路径存在。如果存在,给出最短路径长度。 这里定义顶点到自身的最短路径长度为0。 进行搜索时,假设我们总是从编号最小的顶点出发&a…

一份【软件工程】的学习指南已到达,请注意查收!!

软件工程——起始篇一、引言二、学习【软件工程】的原因1、软件设计师证书2、相关领域人员必备技能三、【软件工程】的学习方法1、不要盲目为了学习而学习2、规划学习路线四、结束语【软件工程】应该是大学计算机专业必修的一门课,对于开发者来说,可能有…

『软件工程6』详解软件项目管理之软件范围与估算

软件项目管理——软件范围与估算一、软件项目计划1、目标2、步骤二、软件范围1、软件范围定义2、软件范围——引例三、影响估算的因素四、软件项目资源1、软件项目资源构成2、分析图3、人力资源4、硬件资源5、软件工具6、可复用构件五、软件工作量与成本的估算1、基于LOC估算工…

【翻译】.NET 5 Preview8发布

今天,.NET 5预览8发布了,对于.NET5.0的功能开发已经完成了,这必须要排除待处理的bug,预览8是最后一次预览版本。预计11月正式的.NET5.0版本发布之前还将发布两个正式之前的候选版本,这篇文章描述了.NET5.0版本中的一系…

7-1 页面置换算法--FIFO (50 分)(思路详解)

一:题目 先初始化页面大小,和物理块数。连续输入页面的逻辑地址,以“-1”作为结束标志,采用FIFO页面置换算法、固定分配局部置换分配策略。输出该页面的页号和页内位移,若该页不在内存,并且还有剩余的物理块&#xff…

7-2 页面置换算法--LRU (50 分)

一:题目(思路详解运行时错误解决) 先初始化页面大小,和物理块数。连续输入页面的逻辑地址,以“-1”作为结束标志,采用LRU页面置换算法、固定分配局部置换分配策略。输出该页面的页号和页内位移,若该页不在内存,并且还…

『软件测试3』八大典型的黑盒测试方法已来袭,快快接住!

文章目录一、等价类划分法1、定义2、等价类划分法步骤3、设计测试用例步骤4、案例:学生选修课程二、边界值分析法1、边界值分析法概述2、设计测试用例3、边界值设计原则三、错误推测法1、错误推测法概述2、错误推测法基本思想四、因果图设计法1、因果图设计法概述2、…

使用Jenkins来发布和代理.NetCore项目

Back toStudy!注:书接上文,上回《【CI/CD系列】使用Docker安装Jenkins》咱们说到了使用Docker镜像的方式,来建立Jenkins服务,用来持续集成和持续发布项目,但是上一篇文章有两个问题:01创建的容器不能操作和…

数据库课设(足球联赛管理系统)

一:前言 如果有关注博主的粉丝,可能会发现贴心杰又缺更好几天了,但是我是宠粉杰啊,怎么可能会忘了我的宝贝粉丝呢,只不过是临近期末,各种大作业课设如期而至,这几天我在写数据库课设&#xff0…

.NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中

前言笔者最近在开发和维护一个.NET Core 项目,其中使用几个非常有意思的.NET Core 相关的扩展,在此总结整理一下。EF Core 性能调优如果你的项目中使用了 EF Core, 且正在处于性能调优阶段,那么了解 EF Core 生成的 SQL 语句是非常关键的。那…

695.岛屿的最大面积(026)BFS

二:思路 1.这里的遍历数据方式为BFS广度遍历 2.当我们遇到一个‘1’的时候,我们就遍历他的左右上下(邻接点),如果是1那就入队,直到队列 为空为止。 3.我们记录每个岛屿的面积是采用 我们设置初始值为1,当每遇到一个邻…

『软件工程8』软件项目进度安排与跟踪,一招学会计算关键路径

项目进度安排与跟踪一、项目进度安排的定义及原则1、进度安排的定义2、进度安排的基本原则二、通信开销1、通信开销的定义2、通信路径计算3、案例分析三、工作量分配1、40-20-40规则2、工作量分配图例3、工作量分布推荐四、项目进度安排方法1、关键路径方法(CPM,Critical Path …

await,async 我要把它翻个底朝天,这回你总该明白了吧

一:背景1. 讲故事await,async 这玩意的知识点已经被人说的烂的不能再烂了,看似没什么好说的,但我发现有不少文章还是从理论上讲述了这两个语法糖的用法,懂得还是懂,不懂的看似懂了过几天又不懂了&#xff0…

栈在前端中的应用,顺便再了解下深拷贝和浅拷贝!

详解栈在前端中的应用一、栈是什么二、栈的应用场景三、前端与栈:深拷贝与浅拷贝1、JS数据类型(1)js数据类型的分类(2)js数据类型的定义和存储方式(3)js数据类型的判断方式2、深究浅拷贝和深拷贝…

计网课设 模拟实验拓扑

一:前言 幸福的是考完两科了,抽出时间赶紧赶赶课设,两周遇到了好多事,开心的,烦心的,一堆堆的压过来,但庆幸自己迷失不太久,又能继续学习了 二:实验概览 1:实验拓扑图 2:实验要求…

快醒醒,C# 9 中又来了一堆关键词 init,record,with

一:背景1. 讲故事.NET5 终于在 2020-08-25 也就是前天发布了第八个预览版,这么多的预览版搞得我都麻木了,接踵而来的就是更多的新特性加入到了 C# 9 中,既然还想呆在这条船上,得继续硬着头皮学习哈,这一篇跟…