《软件测试》第十三章 软件安全测试

2023-10-26

13.0 前言

本章重点包括:

  • 为什么有人想攻击计算机
  • 哪些类型的攻击是常见的
  • 如何与开发小组协作确认安全问题
  • 为什么软件安全问题与软件缺陷是同一回事情
  • 软件测试员在发现安全漏洞方面可以做哪些事情
  • 作为新的领域的计算机取证与软件安全性测试有何关系

13.1 战争游戏——电影

13.2 了解动机

作为软件测试员很重要的一点是要了解为什么有人要攻击你的软件。了解动机能帮助软件测试员考虑到测试的软件中有哪些安全方面的漏洞。

安全产品是指产品在系统的所有者或者管理员的控制下,保护用户信息的保密性、完整性、可获得性,以及处理资源的完整性和可获得性。

安全漏洞是指使产品不可行的缺陷——即使是正确地使用产品——防止攻击者窃取系统的用户权限、调节操作、破坏数据,或建立未授权的信任。

黑客是指精通计算机编程和使用的人、电脑玩家,使用编程技能来获得对计算机网络或文件的非法访问的人。

黑客想获得系统访问权限的5个动机是:

  • 挑战/成名
  • 好奇。在这种心理下,黑客不会停止在仅仅获得访问权限上。一旦进入后,他会进一步去看里面有什么。
  • 使用/借用。黑客为自己的目的会尝试使用系统。
  • 恶意破坏。一想到恶意破坏,请记住三个D:丑化(Defacing)、破坏(Destruction)、和拒绝服务(Denial of Service)。丑化是改变网站的外观来展示黑客的意见和想法。破坏以删除或修改存储在系统上的数据为表现形式。拒绝服务是阻止或妨碍被黑的系统执行正常的操作。
  • 偷窃。其动机是找出可以可以使用和出卖的有价值的东西。

13.3 威胁模式分析

威胁模式分析用于评估软件系统的安全问题。在这个过程中,目的是由评审小组查找产品特性设置方面可能会引起安全漏洞的地方。根据这些信息,小组可以选择对产品做修改,花更多的努力设计特定的功能,或者集中精力测试潜在的故障点。最终,这些做法会使产品更加安全。

执行威胁模式分析并非软件测试员的责任。这个责任应该落到项目经理的任务清单上,并且项目小组的每个成员都要参与。

威胁模型分析过程的步骤如下:

  • 构建威胁模型分析小组。除了标准的小组成员外,小组中加入一个具有深厚的软件安全背景的人至关重要。对于小组来说,重要的一点是了解他们的最初目标不是解决安全问题,而是确定安全问题。在后期可以举行一些由小规模的特定团队参加的会议(例如,由几个程序员和测试员参加的会议),以隔离安全威胁,设计解决方案。
  • 确认价值。考虑系统所有的东西对于一个入侵者说价值有多大。系统是否有客户的个人信息?是否有信用卡号码?系统计算能力如何?是否有人想偷偷利用你的系统来向你的客户发送商业信息?如果你的公司网站被黑掉,不管是丑化还是替换,是否会带来业务的损失?
  • 创建一个体系结构总体图。在这个步骤中要确认计划用在软件中以及如何实现互连的技术。小的威胁模型分析小组会创建一个体系结构图表示出主要的技术模块和它们之间如何通信。创建体系结构图的另一个重要的方面是,确认在不同技术和其证明之间的信任边界以及为了访问数据必须进行的授权。
  • 分解应用程序。这是一个格式化的过程,用来确认数据所在位置以及如何通过系统。想想作为容器的数据以及哪些使容器安全。进入容器来查看数据的手段是什么?数据加密了吗?口令保护了吗?
  • 确认威胁。每一个部分都应该考虑为威胁目标,并且应假设它们会受到攻击。想想是否每一部分都可能被不正确地看待。每一部分是否能被修改?黑客是否能阻止授权用户使用系统?是否有人能获得系统的访问权限并控制系统?
  • 记录威胁。每个威胁都必须用文档记录,并且应进行跟踪以确保其被解决。
  • 威胁等级评定。一个简单的办法是使用msdn.microsoft.com/library上“提高Web应用安全”那一章中定义的恐怖公式(DREAD)。DREAD表示:
  • 潜在的损害——如果这部分被黑了,损害有多大?
  • 可反复性——黑客不间断利用漏洞的容易度如何?
  • 可利用性——获得对系统或数据访问的技术难度有多大?是可以通过互联网用电子邮件发送,或用几行简单的BASIC写的宏代码,还是需要具有专业编程技能的人员来实现?
  • 受影响的用户——如果黑客成功入侵,有多少用户会受到影响?
  • 可发现性——黑客发现漏洞的可能性有多大?

13.4 软件安全是一项功能吗?软件漏洞是一个缺陷吗

软件测试员需要带上“失效性测试”的帽子,像黑客一样攻击被测试的软件——假定每一项功能都有一个安全漏洞,并且作为测试员,这是你的工作是发现并利用它。

13.5 了解缓冲区溢出

在任何软件产品中都有一个安全问题——缓冲区溢出。

缓冲区溢出攻击

13.6 使用安全的字符串函数

下表显示了不安全函数及其替代函数的清单。
在这里插入图片描述
项目小组在进行代码评审或者白盒测试时,注意关注不安全的函数及其使用。显然,小组程序员应该使用安全版本的函数。但是如果没有使用,代码评审就要更加严格地进行,以确保任何可能的安全漏洞都被发现并解决。

13.7 计算机取证

用户变更时未被删除的保留数据叫做潜在数据。潜在数据是潜在的安全漏洞,需要在小组采用的任何威胁模型分析中进行讨论。也许这些数据不会被看成是产品的问题,而被看成是一个大问题。

13.8 小结

从本章中得到的一个体会应该是:没有计算机系统时安全的。我们应该假定计算机系统一直处于受攻击的状态,攻击者或者想控制计算机,或者想访问上面的数据。为帮助设计一个安全的系统,在产品设计的开始就必须注意安全的问题。测试员仅能测试软件的安全性,软件安全必须先计划、评审、设计,然后才是测试。使用具有反复性的软件开发过程,例如螺旋模式,可以确保在整个开发过程中安全的问题被再次提到。

跟踪最新的计算机安全问题的最有参考价值的网站是www.securifocus.com。如果在负责软件安全的测试,或者甚至没有,定期浏览该网站是个好办法,看看黑客们在干什么,以及他们是如何破坏大大小小的系统的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《软件测试》第十三章 软件安全测试 的相关文章

  • “揭秘性能测试工具:优化软件性能的关键秘籍“

    性能测试工具的设计宗旨是为了模拟用户对软件应用程序或系统的各种操作 旨在评估关键的性能指标 包括响应时间 吞吐量 并发能力和资源利用率 通过这些工具模拟的多用户环境 我们能够产生与实际工作负载相似的条件 并监测系统在这种情况下的性能表现 一
  • 外包干了2个月,技术退步明显...

    先说一下自己的情况 大专生 18年通过校招进入武汉某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 最佳利用Mock提升测试效率的7个技巧!

    再聊这个问题之前 我们先了解一下公司技术架构的演变过程 这样我们才能真正体会到我们为什么要使用 Mock功能 单体应用 在早期 大部分公司的应用技术栈主要可以分为两大类 LAMP Linux Apache MySQL PHP 和 MVC S
  • 软件测试|Python openpyxl库使用指南

    简介 我们之前介绍过 python在自动化办公方面可以大放异彩 因为Python有许多的第三方库 其中有很多库就支持我们对office软件进行操作 熟练的使用Python对office进行操作 可以实现自动化办公 极大提升我们的工作效率 本
  • Python接口自动化测试处理不同接口间参数依赖

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 小白也能学会的创建Git仓库实操

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 软件测试/测试开发/全日制/测试管理丨Redis内存数据库

    Redis是一种开源 内存中的数据结构存储系统 它提供了高性能 灵活性和丰富的数据结构 以下是Redis内存数据库的基本介绍 键值存储 Redis基于键值对的存储模型 其中每个键都与一个特定的值相关联 这种简单的数据模型使其易于使用和理解
  • Selenium小技巧!

    Chrome DevTools 简介 Chrome DevTools 是一组直接内置在基于 Chromium 的浏览器 如 Chrome Opera 和 Microsoft Edge 中的工具 用于帮助开发人员调试和研究网站 借助 Chro
  • RF自动化环境安装+自动化实例解析

    RF定义 通用型的 自动测试框架 绝大部分的软件的的自动化系统都可以采用它 特点 测试数据文件 Test Data 对应一个个的测试用例 测试数据文件里面使用的功能小模块叫关键字 由测试库 Test Library Robot Framew
  • Jmeter 性能-并发量计算

    并发概念 指网站在同一时间访问的人数 人数越大瞬间带宽要求更高 服务器并发量分为 业务并发用户数 最大并发访问数 系统用户数 同时在线用户数 估算业务并发量的公式 C nL T C C 3 C的平方根 说明 C是平均的业务并发用户数 n是l
  • 测试工程师能否作为一份「终身职业」?30岁+怎么办?

    讨论 测试工程师可否作为一份终生的职业 这是我在论坛看到的一个讨论 你的答案是什么呢 我希望大家能认真思考后给出一个属于自己的答案 无论你是新手入门 还是资深专家 回答这个问题请不要凭一腔热血 也不用过分消极 别总和钱挂钩 平心而论即可 就
  • 测试用例评审流程优化

    测试用例 评审是QA日常工作流程中的关键一环 是QA同学完善测试用例 交流测试经验的好机会 负责组内测试用例建设以来 作者对于评审流程做了一些优化工作 本文作者将整个优化过程中的心得体会做了一个总结 希望能给大家带来帮助 01 原始流程 1
  • 软件测试|深入了解Python中的super()函数用法

    简介 Python中的super 函数是一种强大的工具 用于在子类中调用父类的方法 它在面向对象编程中非常有用 可以让你轻松地扩展和重用现有的类 本文将详细介绍super 函数的用法 并提供一些示例来帮助你更好地理解它的功能 什么是supe
  • 软件测试|SQLAlchemy环境安装与基础使用

    简介 SQLAlchemy 是一个强大的 Python 库 用于与关系型数据库进行交互 它提供了高度抽象的对象关系映射 ORM 工具 允许使用 Python 对象来操作数据库 而不必编写原生SQL查询 本文将介绍如何安装 SQLAlchem
  • 软件测试|Selenium StaleElementReferenceException 异常分析与解决

    简介 Selenium 是一个流行的自动化测试工具 用于模拟用户与网页交互 然而 当我们在使用 Selenium 时 可能会遇到一个常见的异常 即 StaleElementReferenceException 这个异常通常在我们尝试与网页上
  • 软件测试|使用matplotlib绘制平行坐标系图

    简介 绘制平行坐标系图 Parallel Coordinates Plot 是一种用于可视化多维数据的强大方法 在这篇文章中 我们将介绍如何使用Matplotlib库创建平行坐标系图 以及如何解释和定制这种图表 我们将使用一个示例数据集来演
  • 新手也能看懂的【前端自动化测试入门】

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 甜蜜而简洁 —— 深入了解Pytest插件pytest-sugar

    在日常的软件开发中 测试是确保代码质量的关键步骤之一 然而 对于测试报告的生成和测试结果的可读性 一直以来都是开发者关注的焦点 Pytest插件 pytest sugar 以其清晰而美观的输出 为我们提供了一种愉悦的测试体验 本文将深入介绍
  • 做测试不会 SQL?超详细的 SQL 查询语法教程来啦!

    前言 作为一名测试工程师 工作中在对测试结果进行数据比对的时候 或多或少要和数据库打交道的 要和数据库打交道 那么一些常用的sql查询语法必须要掌握 最近有部分做测试小伙伴表示sql查询不太会 问我有没有sql查询语法这一块的文档可以学习
  • 一文从0到1手把手教学UI自动化测试之数据驱动!

    在UI的自动化测试中 我们需要把测试使用到的数据分离到文件中 如果单纯的写在我们的测试模块里面 不是一个好的设计 所以不管是什么类型的自动化测试 都是需要把数据分离出来的 当然分离到具体的文件里面 文件的形式其实有很多的 这里主要说明JSO

随机推荐

  • 使用SqlBulkCopy大批量导入数据

    实际的开发可能会遇到数据大批量插入数据的问题 若是一条条的循环倒数效率非常低下 这个较好的解决方案 1 2 protected void Button1 Click object sender EventArgs e 3 4 5 DateT
  • android 使用SurfaceFlinger 服务的流程分析,基于4.4(三)----图像的输出过程

    经过前面两篇的介绍 现在可以分析surfaceflinger 的处理UI buffer的流程了 目录 一 onMessageReceived 1 handleMessageTransaction 2 handleMessageInvalid
  • 百度飞桨(厦门)人工智能产业赋能中心签约,共创人工智能产业协同服务新生态...

    9月8日 第二十三届中国国际投资贸易洽谈会在厦门正式开幕 当日 厦门市思明区政府和火炬管委会 与百度正式签约 联手共建百度飞桨 厦门 人工智能产业赋能中心 思明区委书记林重阳 厦门市工信局副局长 大数据局长许文恭 厦门市科技局副局长黄颖 火
  • R手册(Tidy+Transform)--tidyr

    文章目录 Reshape Data Split or Unit Cells Handle Missing Values tidyr Easily tidy data with spread and gather functions Resh
  • 【Java八股文总结】之计算机网络

    文章目录 计算机网络 一 基础 1 网络体系结构 2 HTTP协议 TCP协议 UDP协议比较 3 网络协议 4 WebSocket和Socket的区别 5 常见的端口及其对应的服务 6 从浏览器输入URL到页面展示发生了什么 1 DNS域
  • 刀具补偿资料汇总

    问题描述 采用不同尺寸的刀具加工同一轮廓尺度的零件 为了编程方便和不改变已经制备好的穿孔带 所以数控装置常备有刀具补偿功能 刀具位置补偿 刀具1 刀尖B点为编程起点 刀具2 刀尖C点 备注 刀尖坐标值 Xb Zb C点坐标原点I C点坐标原
  • 苹果如何安装ipa

    懒省事使用爱思助手即可 1 下载cydiaimpactor 官方地址 百度云下载 https pan baidu com s 1rYIG4go fOEHarSjziA1eg 提取码 3b48 2 连上苹果手机 启动cydiaimpactor
  • 【TensorFlow 入门】1、函数基础

    文章目录 一 np random 1 np random RandomState 2 np random uniform 3 np random rand 4 np random RandomState 二 tf reduce 一 np r
  • 忘记宝塔面板安全入口?修改登录入口让你的服务器更加安全!

    宝塔面板新增加了安全入口登录方式 新安装的宝塔面板默认会随机生成一个8位字符的安全目录 阿里云百科网分享宝塔安全入口登录方式 安全入口修改方法及安全入口关闭的方法 什么是安全入口 原来的宝塔登录地址为 http 你的服务器ip 8888 这
  • Python代码实现“FlappyBird”小游戏

    开发工具 Python版本 3 6 4 相关模块 pygame模块 以及一些Python自带的模块 相关文件 关注公众号 Python学习指南 回复 FlappyBird 获取 环境搭建 安装Python并添加到环境变量 pip安装需要的相
  • SpringBoot admin 2.0 详解

    一 什么是Spring Boot Admin Spring Boot Admin是一个开源社区项目 用于管理和监控SpringBoot应用程序 应用程序作为Spring Boot Admin Client向为Spring Boot Admi
  • vue项目中使用echarts和china.js实现中国地图

    在echarts最新的5 4 0版本中 已不能直接引用china js来绘制中国地图 需要我们自己下载china js包 在网上查找资料 大部分是在index html文件中直接引入echarts和china js文件 但我使用这种方法在v
  • 平均池化和最大池化区别

    pooling的结果是使得特征减少 参数减少 但pooling的目的并不仅在于此 pooling目的是为了保持某种不变性 旋转 平移 伸缩等 常用的有mean pooling max pooling和Stochastic pooling三种
  • @RequestBody 500 的原因

    因为 RequestBody是调用目标类的无参构造器 若有有参构造就会报错 因此一般实用RequestBody的类 和 domain不同 应该重新配置一个包来存放此类 类 且之赋予他们get set方法
  • VTK教程1--------VTK在win10下的安装

    VTK的安装 本文在win10操作系统下 安装了VTK8 1 2 下文是安装顺序 事先准备三个软件 1 Visual Studio2017 community 该版本可以免费使用 2 CMake 本文使用的版本是cmake 3 13 1 w
  • XREAL 联合创始人吴克艰谈AR:下一代计算平台及其关键技术

    编者按 一种行业观点是 AR或是未来十年 三十年的革命性技术 是下一代计算平台 近半个世纪 我们总能听到苹果在AR行业的创新动作 开辟了新的硬件范式 AR VR行业为苹果不断欢呼的同时 激发了人们的好奇心 究竟 人类在戴上AR眼镜的那一瞬间
  • 【C++】内存分区&引用

    内存分区 首先我们要了解 内存区域大概分为四个区域 1 代码区 这里主要存放我们写的代码的二进表达式 即CPU可以看懂的机械指令 这个区域有两个特征 只读和共享 前者可以保证代码的不会被随意修改 后者可以保证相同代码多次阅读不需要创建多个副
  • linux-kali 2020.3.3 虚拟机 环境 下载安装

    一 所需环境配置文件下载 1 虚拟机 这次配置环境使用的vmware版本为15 5 0 虚拟机大家可以自行在相关微信公众号上搜索破解版 按照其上进行安装 如下图 如果需要也可以vm官方网站上进行下载相关软件 直接下载对应版本即可 vm官网链
  • python argument 1 must be 2-item sequence, not int

    在继续python学习的时候 发现报错了 出现错误argument 1 must be 2 item sequence not int 明明我是照着书打的 为什么会出现错误呢 import pygame import sys from se
  • 《软件测试》第十三章 软件安全测试

    软件测试 第十三章 软件安全测试 13 0 前言 13 1 战争游戏 电影 13 2 了解动机 13 3 威胁模式分析 13 4 软件安全是一项功能吗 软件漏洞是一个缺陷吗 13 5 了解缓冲区溢出 13 6 使用安全的字符串函数 13 7