跳过内容

C1:定义安全要求

该控制措施的新版本已发布!

您正在查看的是OWASP十大主动控制措施的2018年旧版本。您可以在OWASP十大主动控制措施 2024中的C4:从一开始就处理安全问题找到有关同一控制措施的信息!

描述

安全需求是对所需安全功能的说明,确保软件的众多不同安全属性之一得到满足。安全需求源自行业标准、适用法律以及过去漏洞的历史记录。安全需求定义了新功能或现有功能的补充,以解决特定的安全问题或消除潜在漏洞。

安全需求为应用程序提供了经过审查的安全功能基础。标准安全需求允许开发人员重用安全控制和最佳实践的定义,而非为每个应用程序创建自定义安全方法。这些经过审查的安全需求为过去发生的安全问题提供了解决方案。需求的存在是为了防止过去的安全故障重演。

OWASP ASVS

OWASP应用程序安全验证标准 (ASVS) 是可用安全需求和验证标准的目录。OWASP ASVS 可以成为开发团队详细安全需求的来源。

安全需求根据共享的高阶安全功能被分为不同的类别。例如,ASVS 包含认证、访问控制、错误处理/日志记录和Web服务等类别。每个类别都包含一组需求,这些需求以可验证的陈述形式列出了该类别的最佳实践。

通过用户故事和误用案例增强需求

ASVS需求是基本的、可验证的陈述,可以通过用户故事和误用案例进行扩展。用户故事或误用案例的优势在于,它将应用程序与用户或攻击者对系统所做的确切操作联系起来,而不是描述系统向用户提供了什么。

以下是ASVS 3.0.1中一项需求的扩展示例。ASVS 3.0.1的“认证验证需求”部分中,需求2.19侧重于默认密码。

2.19 Verify there are no default passwords in use for the application framework 
    or any components used by the application (such as "admin/password").

该需求既包含验证不存在默认密码的操作,也附带了应用程序中不应使用默认密码的指导。

用户故事侧重于系统用户、管理员或攻击者的视角,并根据用户希望系统为他们做什么来描述功能。用户故事的形式是“作为一名用户,我可以做x、y和z”。

As a user, I can enter my username and password to gain access to the application.
As a user, I can enter a long password that has a maximum of 1023 characters.

当故事侧重于攻击者及其行为时,它被称为误用案例。

As an attacker, I can enter in a default username and password to gain access.

这个故事包含与ASVS传统需求相同的信息,并增加了用户或攻击者的详细信息,以帮助使需求更具可测试性。

实施

成功使用安全需求涉及四个步骤。该过程包括发现/选择、文档化、实施,然后确认应用程序中新安全特性和功能的正确实施。

发现与选择

该过程始于安全需求的发现和选择。在此阶段,开发人员从ASVS等标准来源理解安全需求,并选择要在应用程序的给定发布版本中包含哪些需求。发现和选择的目的是为本次发布或冲刺选择可管理数量的安全需求,然后为每个冲刺持续迭代,随时间推移增加更多的安全功能。

调查与文档化

在调查和文档化阶段,开发人员根据新的安全需求集审查现有应用程序,以确定应用程序当前是否满足需求,或者是否需要进行一些开发工作。这项调查最终形成审查结果的文档。

实施阶段

确定需要开发后,开发人员现在必须以某种方式修改应用程序,以添加新功能或消除不安全的选项。在此阶段,开发人员首先确定满足需求所需的设计,然后完成代码更改以满足该需求。

测试

应创建测试用例来确认新功能的存在,或反驳先前不安全选项的存在。

防止的漏洞

安全需求定义了应用程序的安全功能。从应用程序生命周期开始就内置更好的安全性,可以防止多种类型的漏洞。

参考资料