17.1 SDL简介
(1)SDL的全称是Security Development Lifecycle,即:安全开发生命周期。SDL过程大致分为16个阶段:培训;安全要求;质量门/bug栏;安全和隐私风险评估;设计要求;减小攻击面;威胁建模;使用指定的工具;弃用不安全的函数;静态分析;动态分析;模糊测试;威胁模型和攻击面评析;事件响应计划;最终安全评析;发布/存档。

17.2 敏捷SDL
(1)敏捷SDL是为敏捷开发设计的。
(2)敏捷SDL的思想其实就是以变化的观点实施安全的工作。
(3)需求和功能可能一直在变化,代码可能也在变化,这要求在实施SDL的时候需要在每个阶段更新威胁模型和隐私策略,在必要的环节迭代模糊测试、代码安全分析等工作。

17.3 SDL实战经验
(1)与项目经理进行充分沟通,排出足够的时间。
(2)规范公司的立项流程,确保所有项目都能通知到安全团队,避免遗漏。
(3)树立安全部门的权威,项目必须由安全部门审核完成后才能发布。
(4)将技术方案写入开发、测试的工作手册中。
(5)给工程师培训安全方案。
(6)记录所有的安全bug,激励程序员编写安全的代码。

17.4 需求分析与设计阶段
(1)需要注意的是“安全功能”和“安全的功能”不一样。
(2)安全功能:产品本身提供给用户的安全功能。
(3)安全的功能:产品具体功能的实现上要做到安全。

17.5 开发阶段
(1)在开发阶段,制定开发规范。
(2)将安全方案写入开发规范中,就真正地让安全方案落了地。

17.6 测试阶段
(1)安全测试,一般分为自动化测试、手动测试。