SDL介绍
当我们需要建造一座大楼的时候需要一些步骤,包括选址、设计、建造、验收、装修等等。为了规范这些活动,在建筑上有一系列的标准来帮助我们规避其中的安全风险,如选址的时候要考虑地震火灾等,建造的时候要考虑承重等等
为什么要用SDL?
1、可以减少安全问题和隐私问题的数量
2、降低残留漏洞的安全风险,SDL可以规范公司web应用的开发流程,指导和协助项目进行安全规划,通过web 应用开发过程中的,需求分析、代码检查、应用安全测试等,减少web应用的漏洞,提升web应用的安全性,
SDL是什么?
安全开发生产周期(Security Development Lifecycle),SDL从源头降低安全风险,符合Secure at the Source 的战略思想,最早是来自于微软,在微软内部推行之后使得Windows核心软件的漏洞大大减少
SDL由那几个阶段组成?
1、培训:使得所有相关工作人员有相关的工作技能
2、需求:从用户角度分析用户需求,确定用户需要满足那些功能,包括安全需求。
3、设计:将各个功能进行分解和规划,并且设计相应的实现方式,
4、实施:其实就是敲代码的过程。
5、验证:对功能进行验证和测试。
6、发布:产品的上线或者交付。
7、响应:产品上线之后,对各类安全事件和其它事件进行响应和处理的过程。比如我们的应用用到了str2框架,当str2爆发漏洞时,就要进行相应的响应和处理。
SDL流程在每个阶段需要做那些和安全相关的事情?
核心安全培训是指所有安全的基础,绝大多数的安全问题都是由于设计、开发、测试人员缺乏安全意识和相关的安全知识所引起的,所以对相关的人员进行培训相当重要,进行培训时可以分为不同的角色,例如开发偏重于安全编码、测试人员更加偏重于安全测试、运维人员偏重于安全意识教育和安全运营。
需求阶段需要充分的考虑,确保所有的需求得到确认。包括安全需求分析,比如我们的应用是怎样认证的,时通过最普通的账号密码还是证书,是通过base64还是其他的,我们的认证需要加密吗?权限是怎么做的?审计是怎么做的?第二块要考虑的内容是审计要求和bug数量,这是确保安全和隐私质量的重要指标,在需求阶段就要制定好这个最低的标准,然后在后面严格执行和遵从。现在隐私也越来越受到用户的重视,产品中要考虑会不会涉及到用户的隐私数据,例如身份证号、银行卡、手机号等等,并且根据隐私评估来设计相应的评级,比如我们涉及到了身份证号,就要考虑在存储和传输的过程中进行加密。
在设计阶段就像建造大楼的时候画的图纸,在这一阶段应该着重考虑安全和隐私问题,并尽可能的避免安全引起的需求变更。攻击面分析和威胁建模是从两个不同的角度考虑安全问题的,攻击面分析是从应用和系统本身的弱点出发,尽可能地减小本身可以暴露的漏洞和弱点,实施最小权限原则,系统加固、关闭不需要的服务,卸载不需要的组件等等,就像在大楼建设过程中可有可无的窗户可以不建。而威胁建模是从威胁来源,即外在的一些威胁的可能来考虑这些东西,明确攻击可能来自那些方面,做到知己知彼,
在实施阶段程序员需要和安全团队进行沟通,包括如何正确的配置和使用id、编译器、连接器等相关的工具。同时许多常用函数可能存在一些安全隐患,例如一些伪随机函数、级别较低的安全加密算法都应该被禁用,这些应该禁用的函数或API列表都应该由安全团队来提供。静态代码分析由大量的现成的工具可以使用,也可以和人工相结合。
验证阶段由QA出手,首先可以使用动态分析对前面的静态分析进行合理的补充,用于测试环节验证程序的安全性。而模糊测试主要是通过发送大量的输入,查看输出来判断是否存在安全漏洞,绝大部分的网络扫面器都是这个原理,最后在验证阶段需要重新进行威胁建模和攻击面分析,有助于我们分析由于需求变更而引入的新的安全问题。
到了发布阶段需要建立安全事件响应计划,并且进行演练,保证发生事情的时候能够按部就班的处理,不至于手忙脚乱。最终安全评析是发布之前仔细检查应用所执行二点所有安全活动,得到一个最终的结果,用于判断和上报管理层。而发布存档同样非常重要,可以为应急响应和产品升级提供帮助。
小结
SDL即安全开发生命周期,是一种应用开发在各个阶段融入各种安全活动和控制措施来提升web应用的安全,降低安全漏洞修复成本的一种工程化的方法。
更多推荐
所有评论(0)