目录
在我们的应用程序中,构建安全性被普遍认为是成熟公司的一个重要优先事项。但即便如此,在开发的早期阶段,它仍然经常被忽视,使得安全成本在过程的后期成倍增加。在这篇文章中,我们将分解SDLC,探索如何在每个阶段用有限的资源增加安全性。
特别的,我想在开篇就进行说明,这篇文章是一个详细的指南。如果你想找一些有趣的流行语和一些俏皮的小帖子,那么这篇文章可能不适合你。但是,如果你是来学习如何保护应用程序的,那么就让我们马上开始吧!
一、分解SDLC
当然,对于SDLC的步骤和不同的项目方法(如瀑布、精益和敏捷)来改变我们对它们的看法存在争议。但是在所有这些方法中,我们在项目开始和每个新功能的开发上基本遵循相同的5个步骤。接下来,我们将分解这些阶段,并一一探索其中具体的安全需求
- Stage1:Planning&Analysis——计划和分析定义应用程序的需求,包括功能性的和非功能性的。
- Stage2:Design——设计将业务需求转化为技术执行计划。
- Stage3:Implementation——实施将计划转化为应用程序或组件。
- Stage4:Testing&Integration——测试和集成确保一切都在以功能性和非功能性的方式工作。
- Stage5:Maintenance——维护应用程序完成后,我们需要投入生产,确保应用程序按预期运行。
二、计划&分析Planning&Analysis
当开始一个新项目时,在我们编写任何代码之前。通过准确定义这个项目、sprint或特性的需求来制定计划是至关重要的。更重要的是,计划就像所有的步骤一样,不是在项目开始的时候一次性完成的。二是在每一个步骤、每一个新特性或者sprint中重复完成的。每次我们做计划的时候,都必须包括安全措施。
在计划阶段所犯的安全错误可以内置到应用程序的逻辑和公司的文化中,这些都是非常昂贵的纠正措施。
-
培训、理解
培训是创建注重安全的应用程序文化的第一步。这并不意味着我们必须让所有开发人员都成为安全专家,然后才允许他们编写第一行代码。但是,如果开发人员在一开始都不知道什么是不安全的代码,以及是什么从根本上使应用程序易受攻击,那么他们就无法编写安全代码。这方面最常用的工具之一是OWASP top10 。OWASP top10是一个针对开发人员和web应用程序安全的权威list。它代表了关于web应用程序最关键的安全风险的广泛共识。
在计划阶段,我们还必须就关键的安全要素达成一致(并对每个人进行培训)。例如,开发人员将如何处理、共享和存储机密(数字凭证)?谁可以访问生产环境?安全测试的过程是什么?我们要用什么工具?
与开发团队分享安全性的重要性是非常关键的。这将使得培训更加有效,并鼓励团队更深入的研究这些课题。最有效的方法是展示现实生活中web应用程序如何被利用的真实例子。一些工具使用BeEF等工具,来展示XSS如何被用来采取恶意行动。例如,打开网络摄像头、访问额外数据或绕过身份认证。
-
滥用案例
滥用案例是一种展示方式,我们可以借此理解攻击者的一些想法,并开始了解他们的目标可能是什么。如果你想要熟悉这些案例,那么就必须了解我们的需求和目标。滥用案例是攻击事件的另外一面,他们都遵循一些相同的原则的路径。
在这里,我们需要考虑和讨论恶意用户将如何尝试和使用我们的应用程序。一个好的滥用案例应该包含三个要素:
- 对案例的书面描述
- 关于案例的对话使其细节更加具体化
- 传达和记录细节的测试,可用于确定案例何时完成
你可能想知道为什么我们在这个过程中如此强调这一点,毕竟我们没有构建任何新东西来让每个人都意识到安全的重要性。如果我们可以让每个人以他们独特的逻辑来思考安全问题,那么就可以从代码的第一行开始将安全性构建