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

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

  • 进行测试或证实。网络

  • 进行测试。架构

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

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

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

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

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

测试什么?
将软件开发视为人员,流程和技术的组合可能会有所帮助。若是这些是“建立”软件的因素,那么这些是必须测试的因素是合乎逻辑的。今天,大多数人一般会测试技术或软件自己。设计

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

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

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

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

测试原理


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

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

从战略上思考,而不是战术
在过去的几年中,安全专业人员已经意识到在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部门,审计和合规性。

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

相关文章
相关标签/搜索