众所周知,软件的安全性如今已得到了前所未有的重视程度。许多企业会将安全性嵌入到应用程序的开发阶段。这样既能有利于整体安全性的遵守,又可以在软件的不同层面上创建多个安全性检查点。
接下来九脑汇学院给大家分享一篇软件安全开发流程,值得各位收藏学习!
安全开发流程(Security Development Flow),即安全的软件开发流程(Software Development Flow with Security),是以交付安全的软件产品为目标的软件设计过程,包括安全的概要设计或方案设计、安全编码、安全测试、安全部署(发布)。
微软为了提升公司研发的操作系统和各类办公软件的安全,提出了SDL security development lifecycle(安全开发生命周期),即从安全角度指导软件开发过程的管理模式。SDL是一个安全保证的过程,重点是软件开发,它在开发的所有阶段都引入了安全和隐私的原则。
以下是微软SDL流程框架图:
SDL大致如下,包括了以下七个阶段:
1、安全培训(training):(安全培训体系)安全意识+安全测试+安全开发+安全运维+安全产品;提升团队安全意识,对齐安全要求
2、需求分析(requirements):建立安全需求管理、安全质量标准、安全与隐私风险评估,确定安全需求和投入占比,寻找安全嵌入的最优方式 。
3、系统设计(design): 确定设计要求,分析攻击面,威胁建模
4、实现(implementation):使用标准的工具,弃用不安全的函数,静态分析(安全开发规范+代码审计)
5、验证(verification):黑白盒测试、动态安全测试、Fuzz测试、攻击面评审
6、发布(release):制定安全事件响应计划、周期性安全评估
7、响应(response):执行安全应急响应计划BUG跟踪
培训的内容应包括以下方面:
Part 1:安全设计:包括减小攻击面、深度防御、最小权限原则、服务器安全配置等
Part 2:威胁建模:概述、设计意义、基于威胁建模的编码约束
Part 3:安全编码:缓冲区溢出(针对C/C++)、整数算法错误(针对C/C++)、XSS/CSRF(对于Web类应用)、SQL注入(对于Web类应用)、弱加密
Part 4:安全测试:安全测试和黑盒测试的区别、风险评估、安全测试方法(代码审计、fuzz等)
Part 5:隐私与敏感数据:敏感数据类型、风险评估、隐私开发和测试的最佳实践
Part 6:高级概念:高级安全概念、可信用户界面设计、安全漏洞细节、自定义威胁缓解
根据微软的SDL流程框架,我们看出软件安全开发是软件开发的必然趋势,即必须要将安全纳入到传统软件开发流程的每个环节。