OWASP 测试指南 4.0-OWASP 测试项目

       OWASP测试项目已经发展了许多年。通过这个项目,我们希望帮助人们了解自己的Web应用程序, 什么是测试 , 为什么要测试 , 什么时间 , 在哪里 以及  如何测试 WEB应用程序。这个项目是发布一个完整的测试框架,而不是仅仅提供一个简单的漏洞检查列表或者问题的简单药方。人们可以根据需要建立自己的或符合其它进程的测试程序。测试指南详细的介绍了一般测试框架以及实践中该框架的实施技术。
       创作这份测试指南是一项艰巨的任务。要获取大家的一致认可同时发展内容是一个极具挑战的任务。这不仅需要使人们
接受这里所描述的概念,同时使他们能够真正将这些概念应用于自己的环境和文化中。同时,这也是对将目前Web应用测试重点,将渗透测试转变为测试集成于软件开发生命周期过程中的挑战。
       然而,我们已经达到非常满意的结果。许多业内专家和世界上一些大型公司的软件安全负责人共同验证了这个测试框
架。这个测试框架帮助各类组织能够有效针对Web应用程序进行测试以便建立安全可靠软件,而不是简单地强调脆弱点。虽然后者无疑是许多OWASP指南和清单的一个副产品。因此,对于某些测试方法和技术,我们作出了艰难的选择,因为我们都明白并这些方法和技术并不是适用于每一个人。然而,随着时间的推移,OWASP能够在丰富的经验和协商一致的基础上通过宣传和教育达到更高的层次并进行文化变革。
       本指南其余部分的编排如下:本介绍部分涉及测试Web应用程序的先决条件:测试的范围,成功的测试的原则和测试技术。第3章介绍了OWASP测试框架,并说明与软件开发生命周期各个阶段有关的技术和任务。第4章涉及如何对代码的具体脆弱性(例如,SQL注入)进行检查和渗透测试.


0X01 安全衡量

       软件工程的基本原则就是你无法控制那些你无法衡量的[1]。安全测试也一样。不幸的是,安全衡量是一个非常困难的过程。这里我们将不会详细涉及这一话题,因为它自己提供一个指导(详细介绍请参见[2])。
       然而我们需要强调的是,安全衡量标准是关于具体的技术问题(例如,某个漏洞是如何普遍)和这些问题给软件带来的经济影响两大方面。我们发现,大多数技术人员至少能够基本理解安全弱点问题所在,甚至对安全弱点有着更深入的了解。但是可悲的是很少有人能够把这种技术知识转化为货币计算,从而量化应用程序所存在安全漏洞给所有者带来的潜在损失。我们认为直有发生这种情况,CIO们才会制定出一个准确的安全投资回报率,并分配适当的软件安全预算。虽然对不安全软件带来的损失进行估算是一项艰巨的任务,然而最近却已经出现了大量此方面的工作方向。例如,在2002年6月,美国国家标准局(NIST)发表了一份调查报告:由缺乏软件测试而导致的不安全软件给美国经济带来的损失[3]。有趣的是,他们估计,更好的测试基础设施将节省三分之一以上的费用,或约220亿美元一年。最近,学术研究机构也开展了对经济和安全之间联系的研究。(详细信息请参见[4]了解其中的一些努力)。
       本文档中所描述的测试框架鼓励人们对整个发展进程进行安全衡量。人们可以将不安全软件所带来的经济损失与自身业务相联系,从而制定出适当的商业决策(资源)来进行风险管理。请记住:Web应用安全衡量和测试,甚至比其它软件更为重要,因为Web应用程序通过互联网广泛传播给数以百万计的用户使用。

0x02 什么是测试

       在Web应用生命循环发展期间,很多内容都需要测试。我们所说的测试到底是什么意思?Merriam-Webster字典中对测试的介绍如下:
进行检测或证明
实施测试测
在测试的基础上明确其规格和评估结果
        在这份文档中,测试指的是将一套系统/应用程序的状况与一系列标准进行对比的过程。在安全界,人们采用的测试标准往往既没有明确的定义没有完整的架构。出于这个原因和其它原因,许多外界人员将安全测试作为一种黑色艺术。本文档的目的在于改变传统观念,使人们可以在没有深入的安全知识背景的情况下更加轻松地测试。


0x03 为什么要实施测试

        本文档旨在帮助各类组织了解测试项目内容,并帮助他们确定他们需要构建及操作用于测试Web应用程序的步骤。它的目的是对全面的WEB应用安全计划所需的各种因素有一个全面的了解。本指南可作为参考方法来帮助您衡量您现有的做法和行业最佳做法的差距。本指南允许各组织与其同行进行比较,了解进行软件测试和维护或者进行审计所需资源的规模。本章不对如何测试一个应用程序的技术细节进行详细讨论,旨在提供一个典型的安全组织框架。对应用程序进行测试的技术细节,将作为渗透测试或代码审查部分,将在余下的章节进行详细讨论。


0x04 什么时候测试

      大多数人都会在软件建立以及进入生命周期中的部署阶段(即代码已创建或已实例化为一个正在工作的Web应用程序)才开始对软件进行测试。这是一种无效的成本高昂的测试行为。最佳的方法之一是将安全测试融入到软件开发生命周期(SDLC)每一个阶段以防止安全漏洞的出现。软件开发生命周期是指软件设计的构建块程。如果软件开发生命周期并不适用于你目前正在使用的开发环境,现在正是时候挑选一个!下图显示一个通用软件开发生命周期模型,以及在这样一种模式下修复安全漏洞所增加的费用(估计数)。

      软件开发公司应对其总体软件开发生命周期进行检查,确保安全是开发进程中不可分割的一部分。软件开发生命周期应包含安全测试内容以确保在整个开发进程安全被充分涵盖并得到有效控制。


0x05 测试什么

         将软件开发当作是人、过程和技术相结合的整体的想法是有益的。如果这些都是“创造”软件的因素,那幺我们认为必须对所有这些因素进行测试。然而目前大多数测试工程师所测试的仅仅是技术或软件本身。
一个有效的测试计划应包括以下测试部分:
人员 – 确保其经历足够的知识水平和意识;
过程 – 确保有足够的政策和标准,人们知道如何遵循这些政策;
技术 – 确保某一进程已经被有效的执行。
          除非采用这样的整体测试方法,否则只测试应用的技术执行将不能涵盖到目前可能存在的管理或运营漏洞。通过对人员,策略以及过程进行测试,企业或组织可以提前获知那些后来才会自行凸现出来的技术缺陷,从而能尽早消除缺陷并查明缺陷产生的根源。同样,在一个系统之只对一些技术问题进行测试,将导致不完整不准确的安全现状评估Fidelity国家金融信息安全负责人DenisVerdon,在2004年纽约举行的OWASP应用安全大会中为这种误解提出了一个很好的比喻[5]:“如果将一辆汽车比作一个应用程序……那么目前的应用安全测试则象征了汽车的正面碰撞测试。汽车并没有进行翻滚测试,或紧急情况下的稳定性测试,制动效能测试,侧面碰撞测试以及防窃措施测试。


欢迎大家分享更好的思路,热切期待^^_^^ !

你可能感兴趣的:(技术译文,信息安全理论)