文档章节

2019测试指南-测试&测试原理

猪鼻子插葱
 猪鼻子插葱
发布于 02/27 09:37
字数 3685
阅读 90
收藏 3

什么是测试?
在Web应用程序的开发生命周期中,需要测试许多东西,但测试实际上意味着什么?Merriam-Webster Dictionary将测试描述为:

  • 进行测试或证明。

  • 进行测试。

  • 根据测试分配站立或评估。

出于本文档的目的,测试是将系统或应用程序的状态与一组标准进行比较的过程。在安全行业中,人们经常根据既不明确也不完整的一套心理标准进行测试。因此,许多外人将安全测试视为黑色艺术。本文档的目的是改变这种看法,并使没有深入安全知识的人更容易在测试中发挥作用。

为何进行测试?
本文档旨在帮助组织了解测试程序的内容,并帮助他们确定在Web应用程序上构建和运行测试程序所需采取的步骤。该指南提供了制作全面的Web应用程序安全程序所需元素的广泛视图。本指南可用作参考指南和方法,以帮助确定现有实践与行业最佳实践之间的差距。本指南允许组织将自己与业界同行进行比较,了解测试和维护软件所需的资源量,或准备审计。本章不涉及如何测试应用程序的技术细节,因为其目的是提供典型的安全组织框架。

什么时候测试?
今天的大多数人都不会测试软件,直到它已经被创建并处于其生命周期的部署阶段(即,代码已经创建并实例化为工作的Web应用程序)。这通常是一种非常无效且成本过高的做法。防止安全漏洞出现在生产应用程序中的最佳方法之一是通过在每个阶段中包含安全性来改进软件开发生命周期(SDLC)。SDLC是强加于软件文物开发的结构。如果当前没有在您的环境中使用SDLC,则应该选择一个!下图显示了通用SDLC模型以及在此类模型中修复安全漏洞的(估计)增加的成本。

公司应检查其整体SDLC,以确保安全性是开发过程中不可或缺的一部分。SDLC应包括安全测试,以确保充分覆盖安全性,并且控制在整个开发过程中都是有效的。

测试什么?
将软件开发视为人员,流程和技术的组合可能会有所帮助。如果这些是“创建”软件的因素,那么这些是必须测试的因素是合乎逻辑的。今天,大多数人通常会测试技术或软件本身。

有效的测试程序应该包含测试的组件:

  •  - 确保有足够的教育和意识;

  • 流程 - 确保有足够的政策和标准,人们知道如何遵循这些政策; 
    技术 - 确保流程在实施过程中有效。

除非采用整体方法,否则仅测试应用程序的技术实现不会发现可能存在的管理或操作漏洞。通过测试人员,策略和流程,组织可以捕获稍后会表现为技术缺陷的问题,从而及早消除错误并确定缺陷的根本原因。同样,仅测试系统中可能存在的一些技术问题将导致不完整且不准确的安全状态评估。

测试原理


在开发测试方法以发现软件中的安全漏洞时,存在一些常见的误解。本章介绍了专业人员在对软件执行安全测试时应考虑的一些基本原则。

没有银色子弹
虽然很容易认为安全扫描器或应用程序防火墙会提供许多防御攻击或识别大量问题,但实际上对于不安全的软件问题没有灵丹妙药。应用程序安全评估软件虽然可用作寻找低调成果的第一步,但在深入评估或提供足够的测试覆盖率方面通常是不成熟和无效的。请记住,安全是一个过程,而不是一个产品。

从战略上思考,而不是战术
在过去的几年中,安全专业人员已经意识到在1990年代普遍存在于信息安全中的补丁和渗透模型的谬误。补丁和渗透模型涉及修复报告的错误,但没有正确调查根本原因。此模型通常与下图所示的漏洞窗口相关联。全球使用的通用软件中漏洞的演变表明该模型的无效性。有关漏洞窗口的更多信息,请参阅[6]。

漏洞研究[7]表明,随着全球攻击者的反应时间,典型的漏洞窗口无法为补丁安装提供足够的时间,因为漏洞被发现与对其开发和释放的自动攻击之间的时间正在减少每年。

在补丁和穿透模型中有几个不正确的假设。许多用户认为补丁会干扰正常操作,并可能破坏现有应用程序。假设所有用户都知道新发布的补丁也是错误的。因此,产品的所有用户都不会应用修补程序,因为他们认为修补可能会干扰软件的工作方式,或者因为他们缺乏有关修补程序存在的知识。

必须在软件开发生命周期(SDLC)中构建安全性,以防止应用程序中出现重复出现的安全问题。开发人员可以通过制定适合并在开发方法中工作的标准,策略和指南,为SDLC构建安全性。应使用威胁建模和其他技术来帮助为最危险的系统部分分配适当的资源。 

SDLC是王者
SDLC是一个为开发人员所熟知的过程。通过将安全性集成到SDLC的每个阶段,它允许采用整体的应用程序安全性方法,利用组织内部已有的过程。请注意,虽然各个阶段的名称可能会根据组织使用的SDLC模型而发生变化,但原型SDLC的每个概念阶段都将用于开发应用程序(即定义,设计,开发,部署,维护)。每个阶段都有安全考虑因素,应该成为现有流程的一部分,以确保具有成本效益和全面的安全计划。

存在几种安全的SDLC框架,它们提供描述性和规范性建议。一个人是否采取描述性或规定性建议取决于SDLC流程的成熟度。从本质上讲,说明性建议显示了安全SDLC应该如何工作,描述性建议显示了它在现实世界中的使用方式。两者都有自己的位置。例如,如果您不知道从哪里开始,则说明性框架可以提供可以在SDLC中应用的潜在安全控制菜单。然后,描述性建议可以通过展示对其他组织有效的方法来帮助推动决策过程。描述性安全SDLC包括BSIMM-V; 规范性安全SDLC包含OWASP的开放软件保障成熟度模型(OpenSAMM)和ISO / IEC 27034第1-8部分,  
早期测试和经常测试
当在SDLC早期检测到错误时,可以更快地以更低的成本解决问题。在这方面,安全性错误与功能性或基于性能的错误没有什么不同。实现这一目标的关键步骤是教育开发和QA团队了解常见的安全问题以及检测和预防这些问题的方法。虽然新的库,工具或语言可以帮助设计更好的程序(安全漏洞更少),但新的威胁不断出现,开发人员必须意识到影响他们正在开发的软件的威胁。安全测试教育还可以帮助开发人员从攻击者的角度获得适当的思维模式来测试应用程序。这允许每个组织将安全问题视为其现有职责的一部分。 
了解安全范围了解
给定项目需要多少安全性非常重要。应该给予要保护的信息和资产一个分类,说明如何处理它们(例如,机密,秘密,绝密)。应与法律委员会进行讨论,以确保满足任何特定的安全要求。在美国,要求可能来自联邦法规,如Gramm-Leach-Bliley法案[8],或州法律,如加州SB-1386 [9]。对于位于欧盟国家/地区的组织,可能适用特定国家/地区的法规和欧盟指令。例如,指令96/46 / EC4 [10]规定,无论申请是什么,都必须谨慎处理申请中的个人数据。 
培养正确的心态
成功测试应用程序的安全漏洞需要“开箱即用”。正常用例将在用户以预期方式使用应用程序时测试应用程序的正常行为。良好的安全测试需要超出预期,并且像攻击者试图破解应用程序一样思考。创造性思维可以帮助确定哪些意外数据可能导致应用程序以不安全的方式失败。它还可以帮助发现Web开发人员所做的假设并非总是如此,以及如何将其颠覆。 
理解主题
任何良好的安全计划中的第一个主要计划之一应该是要求准确记录应用程序。架构,数据流图,用例等应该用正式文档编写并提供给我们审查。技术规范和应用程序文档应包括不仅列出所需用例,而且还列出任何特定不允许的用例的信息。最后,至少有一个基本的安全基础设施是很好的,它允许监视和趋势对组织的应用程序和网络(例如,IDS系统)的攻击。 
使用正确的工具
虽然我们已经说过没有银弹工具,但工具确实在整个安全计划中起着关键作用。有一系列开源和商业工具可以自动执行许多日常安全任务。这些工具可以通过协助安全人员完成任务来简化和加快安全过程。但是,重要的是要准确理解这些工具能够做什么和不能做什么,以便它们不会被超卖或错误地使用。 
细节决定成败
至关重要的是,不要对应用程序进行表面的安全性审查,并认为它是完整的。这将灌输一种虚假的信心感,这种信心可能与没有首先进行安全审查一样危险。仔细审查调查结果并清除报告中可能存在的任何误报至关重要。报告不正确的安全性查找通常会破坏安全报告其余部分的有效消息。应该注意验证应用程序逻辑的每个可能部分都已经过测试,并且针对可能的漏洞探索了每个用例场景。 
使用源代码时可用
虽然黑盒渗透测试结果可以令人印象深刻并且有助于演示生产环境中漏洞的暴露程度,但它们并不是保护应用程序最有效或最有效的方法。动态测试很难测试整个代码库,特别是在存在许多嵌套条件语句的情况下。如果应用程序的源代码可用,则应在安全人员执行审查时向他们提供帮助。可以发现应用程序源中的漏洞,这些漏洞在黑匣子参与期间会被遗漏。  
制定指标
良好的安全计划的一个重要部分是能够确定事情是否变得更好。跟踪测试约定的结果非常重要,并开发能够揭示组织内应用程序安全趋势的指标。

好的指标将显示: 

  • 如果需要更多的教育和培训;

  • 如果开发团队没有明确理解特定的安全机制;

  • 如果每个月发现的安全相关问题总数正在下降。

可以从可用源代码以自动方式生成的一致度量标准还将帮助组织评估为减少软件开发中的安全性错误而引入的机制的有效性。度量标准不易开发,因此使用OWASP Metrics项目和其他组织提供的标准度量标准是一个很好的起点。
记录测试结果
为了完成测试过程,重要的是要生成正式记录,记录测试操作采取的操作,执行人员,执行时间以及测试结果的详细信息。明智的做法是就报告的可接受格式达成一致,这对所有相关方都有用,可能包括开发人员,项目管理,业务所有者,IT部门,审计和合规性。

业务所有者应清楚地确定报告存在重大风险的位置,并足以获得后续缓解措施的支持。开发人员还应清楚地向开发人员说明受漏洞影响的确切功能以及用开发人员理解的语言解决问题的相关建议。该报告还应允许另一个安全测试人员重现结果。编写报告不应该对安全测试程序本身造成过重负担。安全测试人员通常不会因其创造性写作技能而闻名,并且就复杂报告达成一致可能会导致测试结果无法正确记录的情况。使用安全测试报告模板可以节省时间并确保准确一致地记录结果,

© 著作权归作者所有

猪鼻子插葱
粉丝 1
博文 44
码字总数 172746
作品 0
崇明
高级程序员
私信 提问
API 标准化成为技术团队面临的最大挑战

调查表明,API 标准化成为了技术团队面临的最大挑战。 SmartBear 发布了 2019 年 API 状态报告“The State of API 2019”,此报告旨在为 API 行业建立关于软件团队在 2019 年规划、设计、开发...

h4cd
02/07
1K
1
2019测试指南-web应用程序安全测试(一)

什么是Web应用程序安全测试? 安全测试是通过有条不紊地验证和验证应用程序安全控制的有效性来评估计算机系统或网络的安全性的方法。Web应用程序安全性测试仅侧重于评估Web应用程序的安全性。...

猪鼻子插葱
03/04
54
0
A Year Of Books - 2016 Javaer书单

A Year Of Books – 2016 Javaer书单 (PS:欢迎留言推荐,很多来自白衣大哥的推荐) 1. OS & Networking 《编码 : 隐匿在计算机软硬件背后的语言》 《Linux内核设计与实现 第3版》 《WireShark...

泥沙砖瓦浆木匠
2016/04/25
151
2
F2etest-web 的 Docker 化之路(Linux 篇)

前言 F2etest 是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案,优势是: 10 倍以上硬件利用率,降低企业运营成本; 提供非常棒的桌面用户体验,极大的提高测试效率; 浏...

undead25
05/07
0
0
欢迎加入 Android Q 测试版计划!

欢迎加入 Android Q 测试版计划!此计划将为您提供针对下一个 Android 版本实现您的应用兼容性以及开发应用所需的一切。它是一款免费软件,您只需下载测试版 SDK 和工具即可立即使用。 硬件和...

Android_开发者
04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部