互联网企业安全高级指南3.7 如何看待SDL

3.7 如何看待SDL

SDL(安全开发生命周期)优化模型如图3-1所示。

 

图3-1 SDL优化模型

SDL起源于微软,2004年将SDL引入其内部软件开发流程中,目的是减少其软件中的漏洞数量和降低其严重级别。SDL侧重于长期维护、流程改进并能够帮助开发过程应对不断变化的威胁状况。早些年微软的产品安全问题比较多,微软在某一年甚至下令所有产品线开发计划停止半年,全部用于整顿安全问题。起初SDL适用于传统的瀑布模型和螺旋式开发,到了2010年SDL增加了敏捷的部分改进,用于应对互联网下的Web开发,目前SDL的“全貌”如图3-2所示。

 

图3-2 SDL整体框架

基本软件安全培训应涵盖的基础概念如下所示。

安全设计,包括以下主题:

减小攻击面

深度防御

最小权限原则

安全默认设置

威胁建模,包括以下主题:

威胁建模概述

威胁模型的设计意义

基于威胁模型的编码约束

安全编码,包括以下主题:

缓冲区溢出(对于使用 C 和 C++ 的应用程序)

整数算法错误(对于使用 C 和 C++ 的应用程序)

跨站点脚本(对于托管代码和 Web 应用程序)

SQL 注入(对于托管代码和 Web 应用程序)

弱加密

安全测试,包括以下主题:

安全测试与功能测试之间的区别

风险评估

安全测试方法

隐私,包括以下主题:

隐私敏感数据的类型

隐私设计最佳实践

风险评估

隐私开发最佳实践

隐私测试最佳实践

高级概念方面的培训,包括但不限于以下方面:

高级安全设计和体系结构

可信用户界面设计

安全漏洞细节

实施自定义威胁缓解

先看这份培训列表。能把这些彻底讲明白的人其实还是资深工程师以上的人。有人可能觉得我说的夸张了,原因在于大部分互联网公司的研发环境主要是Web,有很多人能把SQL注入、XSS、CSRF这些讲清楚,但问题是这样就算SDL了么?非也,当下热闹的安全大会各种讲攻防的议题,但这些离真正的产品安全设计还差很远,行业的普遍现状是能做入侵检测,能把漏洞修补原理说清楚,但很少有人能把安全架构设计非常体系化的讲清楚。很多人认为SDL在互联网公司无法完全落地的原因是因为DevOps模式下的频繁交付导致SDL显得过于“厚重”,我觉得这只说对了一半,根据大多数互联网公司现行的模式,我加了一个帽子,姑且就叫“攻防驱动修改”吧。


上一篇:直播行业的未来增量:一边内容升级,一边驱动演艺


下一篇:VNCServer,SSH Secure Shell Client,window远程控制linux