关于保护SDLC的完整开发人员指南

发布于:2021-02-03 10:45:20

0

158

0

SDLC 开发人员 指南

软件开发生命周期是帮助开发人员以有组织的方式规划和创建软件的一组步骤。它有六个主要步骤:

每一步都有自己需要解决的安全问题。未能解决这些问题可能会导致应用程序充满漏洞,一旦被利用,可能导致停机、收入损失以及客户信息被盗。

这是一个极为常见的问题,在排名前100位的移动应用程序中,90%的应用程序至少被黑客攻击过一次。防止这些问题的最佳机会是在应用程序开发期间,这正是我在本文中分享的技巧可以帮助您的地方。

本指南介绍了生命周期的每个步骤,并重点介绍了为确保应用程序安全而应完成的安全实践/操作。这包括行业工具、技术和资源,您可以使用这些工具、技术和资源来确保您的应用程序在流程结束时是安全的。

概念与规划

这个阶段主要是定义应用程序概念和需求。换言之,重要的是要确保你有一个坚实的大纲,什么需要做,你有一个高层次的理解,你将如何实现这一点。

概述安全性和法规遵从性要求:概述应用程序的技术和法规要求。对于技术要求,这将包括确保对存储中的数据和传输中的数据进行适当的加密。

术语“监管要求”是指理解软件将存储和传输的数据类型,例如,财务信息、支付卡信息、医疗保健和个人识别信息。

每种类型的数据都有特定的处理、收集、存储和传输规则。因此,您需要了解您正在收集的信息以及需要如何处理这些信息。

安全意识培训:如果您正在开发团队中工作,您应该有时间检查安全要求。

如果你是一个经理或团队负责人,你有责任组织这件事。如果你只是一个开发人员,这是你应该向你的团队领导提出的要求。这可以确保您和团队中的每个人都了解应用程序的需求。

查看第三方软件组件:第三方组件通常用于提高软件开发速度和添加有用的功能。但是,它们可能会在您的软件中引入漏洞,在应用程序中使用这些组件之前需要对这些漏洞进行评估。

您可以通过对正在使用的库进行一些研究来开始此评估,这将允许您查看报告了哪些问题。对于更正式的验证,有些公司(如veracode)提供了在线指南和软件解决方案,用于评估第三方软件的安全问题。

建筑与设计

架构和设计阶段是设计一个应用程序,该应用程序要满足规划阶段详细列出的所有需求。

威胁建模:这是了解应用程序可能的攻击场景,并提出阻止它们成功的控制措施。一个常见的例子是SQL注入,它将SQL查询提交到输入表单中,从数据库中提取数据。

确保安全设计:您要检查应用程序的设计是否遵循软件开发中常见的最佳实践,例如为敏感信息添加保护并确保法规遵从性。在这里您可以找到10个软件开发最佳实践的列表。

实施

实现是创建应用程序、调试和创建要测试的应用程序的第一个版本的过程。这个阶段的目标是创建一个稳定的应用程序。

使用安全编码指导原则:这些指导原则将警告您程序员犯的常见错误,使您能够避免这些错误,并节省大量时间。一些常见的错误包括存储未加密的密码。在这里,您可以找到CERT提供的十大安全编码实践的综合列表。

静态扫描:静态应用程序扫描工具(SAST)可以扫描新编写的代码中的漏洞,而无需运行应用程序。您可以在编写代码时使用它们来检查bug,并在第一个版本之前纠正它们。下面是六个SAST工具,您可以考虑将其用于您的软件。

手动代码检查:在完成应用程序的第一个版本后,应该由熟悉软件开发中的安全漏洞的高级开发人员进行手动代码检查。自动化工具的速度要快得多,但它们仍然可能忽略一些重要问题,因此执行手动检查仍然非常有益。

测试和错误修复

此阶段的目的是发现并修复工作应用程序中的错误。这个阶段包括运行应用程序并使用不同类型的输入来查看应用程序如何响应。

模糊化和动态扫描:动态应用程序扫描工具(DAST)通过在运行时模拟攻击来测试漏洞。模糊化包括使用自动化工具根据特定模式生成随机输入,以检查应用程序是否能够正确处理这些输入。在这里您可以找到一些流行的DAST工具的列表。

渗透测试:渗透测试包括雇佣专业的安全研究人员尝试入侵您的应用程序,以便找到任何使其进入您的应用程序的漏洞。你可以雇佣个别的公司/团队,也可以使用bug赏金计划来众包这一步。

测试环境停用:一旦不再需要测试环境,就应该将其脱机或删除(如果是虚拟机)。通常,这是由DevOps或IT团队监督的。

对于测试环境来说,访问internet以允许开发人员连接并完成他们的工作是很常见的。然而,有时即使在项目完成后,系统仍然保持在线。

由于该环境没有被任何人使用,因此它将保持未修补状态。面对互联网,它将成为黑客们的一大攻击目标,这是可以理解的。

发布和维护

这是应用程序向其目标用户启动的阶段。即使应用程序是实时的,这并不意味着工作已经完成。应用程序需要在其生命周期中进行维护和改进,并且需要修复可能的错误。

正在进行的安全检查和修补程序:公司的安全团队或独立供应商应定期进行安全检查。之后,每当发现安全问题时,就需要创建并发布修复程序。

这些检查不需要无限期地进行,但应该在应用程序发布后至少持续几年。此外,当您计划停止支持应用程序时,应该提前向用户发出声明。

生命的终结

生命周期结束指的是不再受其开发人员支持的软件。这意味着将没有更多的补丁,更新,或错误修复提供。包含敏感数据的应用程序还需要删除这些数据,以防止由于旧的和不安全的应用程序而导致数据泄露。任何没有针对安全相关缺陷进行更新的应用程序都不应被视为安全的。

数据保留:政府和监管机构定义了不同类型数据的保留要求。确认保留要求并确保在删除应用程序之前适当地存储数据,这一点很重要。

数据处理:在应用程序生命周期结束时,应安全删除所有敏感信息,包括所有个人信息、加密密钥或API访问密钥。此处的目的是确保对所有信息保密,防止数据泄露。以下是正确处理数据的一些技巧。

为最佳产品解决每个阶段的安全问题

软件开发生命周期是一个广泛流行的模板,每个步骤都有自己的要求,需要完成这些要求才能确保应用程序的安全。

应用商店中超过90%的顶级应用程序至少被黑客攻击过一次,这表明目前开发应用程序的过程并不十分安全。在本指南中,我为您提供了与开发周期的每个步骤相关的活动的安全提示。遵循这些提示,您可以确保应用程序不太可能出现安全问题。

首先在规划阶段,目标是根据技术和法规要求正确规划应用程序。接下来,您需要基于安全的最佳实践来设计应用程序。您还需要实施适当的手动和自动测试,并让主题专家对您的应用程序进行审查。如果您缺乏内部专业知识或资金来雇佣安全专业人员进行测试,您可以使用具有成本效益的bug赏金计划方法。

一旦应用程序发布,就需要定期检查并修补新的bug。当它的生命周期结束时,您需要保留的信息必须得到保护,所有剩余的信息都需要进行处理以防止数据泄漏。