2019独角兽企业重金招聘Python工程师标准>>>

什么是测试?
在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部门,审计和合规性。

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

转载于:https://my.oschina.net/u/3447023/blog/3015329

2019测试指南-测试测试原理相关推荐

  1. 《Nmap渗透测试指南》目录—导读

    内容提要 Nmap渗透测试指南 本书专门介绍Nmap渗透测试的有关内容,全书共分12章,从最基础的Nmap下载.安装开始介绍,由浅入深地对Nmap的功能作了完整详细的说明.同时书中还包括了大量的实践案 ...

  2. R80.10Checkup威胁分析——测试指南

    R80.10Checkup威胁分析--测试指南 <<解决方案中心>> 1.简介 3 2.优点 3 4.准备工作 5 软件要求 5 硬件要求 5 客户环境和需求 6 网络连接 6 ...

  3. 《Nmap渗透测试指南》—第6章6.4节IP欺骗

    本节书摘来自异步社区<Nmap渗透测试指南>一书中的第6章6.4节IP欺骗,作者 商广明,更多章节内容可以访问云栖社区"异步社区"公众号查看. 6.4 IP欺骗 表6. ...

  4. 《Nmap渗透测试指南》—第1章1.2节Windows下安装Nmap

    本节书摘来自异步社区<Nmap渗透测试指南>一书中的第1章1.2节Windows下安装Nmap,作者 商广明,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1. ...

  5. 普通话书籍计算机辅助,计算机辅助普通话水平测试指南

    普通话是汉民族的共同语,是规范化的现代汉语.普通话水平测试是推广普通话工作的重要组成部分,普通话水平测试工作的健康开展必将对社会的语言生活产生深远影响. 宁夏作为中国西北区域一个少数民族地区,进行普通 ...

  6. 《安全测试指南》——配置管理测试【学习笔记】

    配置管理测试 1.网路和基础设置配置测试(OTG-CONFIG-001) 测试方法:已知服务器漏洞(APache.IIS等).略. 2.应用平台配置测试(OTG-CONFIG-002) 测试方法: a ...

  7. 《安全测试指南》——信息收集测试【学习笔记】

    [信息收集测试] 1.搜索引擎信息收集(OTG-INFO-001) 通过搜索引擎收集以下: · 网络拓扑图和配置 · 管理员和其他员工的归档文章和邮件 · 登录过程和用户名的格式 · 用户名和密码 · ...

  8. 《Nmap渗透测试指南》—第2章2.2节使用Zenmap进行扫描

    本节书摘来自异步社区<Nmap渗透测试指南>一书中的第2章2.2节使用Zenmap进行扫描,作者 商广明,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 ...

  9. 「原理」AB测试-详细过程和原理解读

    这篇我们来详细讲讲AB测试的原理和具体的过程. AB测试原理简介 AB测试最核心的原理,就四个字:假设检验.检验我们提出的假设是否正确.对应到AB测试中,就是检验实验组&对照组,指标是否有显著 ...

最新文章

  1. 10.Redis 性能测试
  2. DIET:Dual Intent and Entity Transformer
  3. 最佳的七十五个网络分析和安全工具
  4. linux 查看磁盘分区,文件系统,使用情况的命令和相关工具介绍,Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍df...
  5. Html.RenderPartial与Html.RenderAction
  6. 身体容易缺少的微量元素
  7. Activity隐式启动IntentFilter
  8. git两个账号切换_多个git账号之间的切换
  9. 语言列表导出xlxs_学习五分钟,掌握一种新语言。
  10. 大众CEO迪斯承认芯片仍短缺
  11. cas单点登录学习:cas服务端与客户端的搭建
  12. 19-random猜数
  13. VC6.0下载和安装教程
  14. python可视化(2-1)绘图对象(条形图、直方图、柏拉图)
  15. 强化学习入门1—多臂老虎机Multi-armed Bandits
  16. DBL_EPSILON和 FLT_EPSILON的用法
  17. promise.all的使用
  18. Day21 jQuery 基础二
  19. Ecplise捕捉异常的快捷键
  20. 阅读报告Implementing arbitrary coined two-dimensional quantum walks via bulk optical interferometry

热门文章

  1. Web服务(Apache、Nginx、Tomcat、Jetty)与应用(LAMP、CMS-WordPressGhost、Jenkins、Gitlab)
  2. EMV内核使用中的常见问题
  3. C++实践参考——OOP版电子词典
  4. Power BI for Office 365(八)共享查询
  5. 雪儿--北京欢迎你!!!
  6. 当摄影师的山寨版奥巴马(转载)
  7. java泛型学习一:解惑继承
  8. 致敬金庸:武侠版编程语言...Java像张无忌还是令狐冲?
  9. android home没有设置,android - 无法找到'ANDROID_HOME'环境变量
  10. springboot创建单个对象