2013 年,雅虎!遭受了一次数据泄露,暴露了30 亿条(而不是10 亿条)数据记录。这种和其他代价高昂的违规行为的核心是漏洞。与雅虎的情况一样,即使是最大的玩家也可能会忽略其技术堆栈中的关键弱点。因此,软件开发人员需要特别小心,尤其是因为开发团队负责的解决方案可能会破坏原本安全的系统——破坏声誉并扼杀收入。但是,在采用软件作为分层技术的概念时,您可以系统地减少或消除漏洞。继续阅读以了解如何操作。
作为分层技术和安全性的软件如何相交
有些人可能倾向于将安全性归于事后才考虑,例如,“这就是我们所做的。我们如何确保它的安全?” 但是,使用软件分层视图背后的原则,您可以优先考虑安全性,并在整个开发生命周期中增强和维护它。
关键要素:质量
将安全性识别为软件质量保证元素的一部分,因为分层技术将其置于开发过程的前沿和中心。软件分层视图的好处之一是每个原则在开发过程中的各个点不断重申,尤其是质量。将安全性作为质量标准会迫使您的团队在各个阶段一次又一次地重新评估您的应用程序的安全性。
如何将安全性纳入每个开发阶段
不管你是使用敏捷还是瀑布来驱动你的开发,生命周期的核心元素通常是相同的:
- 规划和概念化
- 设计与建筑
- 执行
- 测试和错误缓解
- 发布和产品维护
以下是如何在每个阶段合并安全原则和功能:
规划和概念化
在规划和概念化阶段,您可以:
- 通过提出以下问题来定义项目的安全目标,例如“最有可能针对此应用程序施加哪些威胁,我们如何阻止它们?”
- 确定相关的合规标准。其中可能包括《健康保险流通与责任法案》(HIPAA)、《通用数据保护条例》(GDPR) 等。
- 根据技术和监管标准,组织您的应用程序满足其安全目标所需的清单。
- 为参与项目的开发人员和其他人提供培训。最好不要假设他们拥有所需的知识,尽早解决差距可以防止出现问题。
设计与建筑
在设计和架构阶段,您可以:
- 使用威胁建模来识别攻击面和技术。
- 评估设计文档,寻找应用程序代码和基础设施中的潜在安全问题。
- 密切关注可能由于自身弱点或与您的应用程序交互方式而引入漏洞的第三方应用程序。
执行
在实施阶段,程序员正在对应用程序进行实际编码。要在这个关键阶段加入安全性,您可以:
- 提供程序员应避免的常见错误列表,例如不正确地保护未加密的密码。
- 使用静态扫描工具检查新编写的代码并识别漏洞,然后再将其整合到整个应用程序中。
- 手动检查代码以查找漏洞。这可能需要一些时间,但手动审查可以发现自动化系统尚未编程识别的问题。
测试和错误缓解
您不仅可以测试应用程序以查看它在此阶段的运行情况,还可以检查它是否存在漏洞。为此,您可以:
- 使用模拟黑客攻击的动态应用程序扫描工具 (DAST)。您还可以使用交互式应用程序安全测试 (IAST) 工具来减少误报的数量。将 DAST 与 IAST 结合使用,您不仅可以识别漏洞的存在,还可以识别漏洞的来源。
- 模糊测试您的应用程序,这涉及生成随机输入并查看应用程序的运行情况。
- 使用渗透测试,即您邀请第三方安全专家团队来模拟对您的应用程序的攻击。
发布和产品维护
产品上线后,您必须确保客户享受安全的体验。虽然很难控制谁升级到更新、更安全的应用版本,但您可以采取一些措施来增强安全性,例如:
- 监控应用程序的整个生态系统是否存在攻击。
- 创建事件响应策略,概述如果应用程序或其基础设施受到不同类型的攻击,您的安全团队将采取什么措施。
- 执行持续的安全检查。
通过采取这些步骤,您可以保护您的产品、其用户和用户的设备。您还可以保护组织的声誉及其开发团队,同时最大限度地提高最终用户体验。要掌握最新的网络安全发展、工具和策略,您可以联系 IEEE 计算机协会。作为技术前沿的专业人士协会,IEEE 计算机协会是获取最新和最伟大技术见解的动态资源。