第1部分 对SDL的需求
第1章 适可而止:威胁正在悄然改变 3
1.1 遍布安全和隐私冲突的世界 5
1.2 影响安全的另一因素:可靠性 8
1.3 事关质量 10
1.4 主要的软件开发商为什么需要开发更安全的软件 11
1.5 内部软件开发人员为什么需要开发更安全的软件 12
1.6 小型软件开发者为什么需要开发更安全的软件 12
1.7 总结 13
参考文献 13
第2章 当前软件开发方法不足以生成安全的软件 17
2.1 “只要给予足够的关注,所有的缺陷都将无处遁形” 18
2.1.1 审核代码的动力 18
2.1.2 理解安全bug 19
2.1.3 人员数量 19
2.1.4 “关注越多”越容易失去要点 20
2.2 专利软件开发模式 21
2.3 敏捷开发模式 22
2.4 通用评估准则 22
2.5 总结 23
参考文献 24
第3章 微软SDL简史 27
3.1 前奏 27
3.2 新威胁,新对策 29
3.3 Windows 2000和Secure Windows Initiative 30
3.4 追求可度量性:贯穿Windows XP 32
3.5 安全推进和最终安全评审(FSR) 33
3.6 形成软件安全开发生命周期 36
3.7 持续的挑战 37
参考文献 38
第4章 管理层的SDL 41
4.1 成功的承诺 41
4.1.1 微软的承诺 41
4.1.2 你是否需要SDL? 43
4.1.3 有效承诺 45
4.2 管理SDL 48
4.2.1 资源 48
4.2.2 项目是否步入正轨? 50
4.3 总结 51
参考文献 51
第2部分 软件安全开发生命周期过程
第5章 第0阶段:教育和意识 55
5.1 微软安全教育简史 56
5.2 持续教育 58
5.3 培训交付类型 60
5.4 练习与实验 61
5.5 追踪参与度与合规度 62
5.6 度量知识 63
5.7 实现自助培训 63
5.8 关键成功因子与量化指标 64
5.9 总结 65
参考文献 65
第6章 第1阶段:项目启动 67
6.1 判断软件安全开发生命周期是否覆盖应用 67
6.2 任命安全顾问 68
6.2.1 担任开发团队与安全团队之间沟通的桥梁 69
6.2.2 召集开发团队举行SDL启动会议 70
6.2.3 对开发团队的设计与威胁模型进行评审 70
6.2.4 分析并对bug进行分类,如安全类和隐私类 70
6.2.5 担任开发团队的安全传声筒 71
6.2.6 协助开发团队准备最终安全审核 71
6.2.7 与相应安全团队协同工作 71
6.3 组建安全领导团队 71
6.4 确保在bug跟踪管理过程中包含有安全与隐私类bug 72
6.5 建立“bug标准” 74
6.6 总结 74
参考文献 74
第7章 第2阶段:定义并遵从设计最佳实践 75
参考文献 90
第8章 第3阶段:产品风险评估 93
第9章 第4阶段:风险分析 101
第10章 第5阶段:创建安全文档、工具以及客户最佳实践 133
第11章 第6阶段:安全编码策略 143
第12章 第7阶段:安全测试策略 153
第13章 第8阶段:安全推进活动 169
第14章 第9阶段:最终安全评审 181
第15章 第10阶段:安全响应规划 187
第16章 第11阶段:产品发布 215
第17章 第12阶段:安全响应执行 217
第3部分 SDL
参考资料
第18章 在敏捷模式中集成SDL 225
参考文献 239
第19章 SDL违禁函数调用 241
第20章 SDL最低加密标准 251
第21章 SDL必备工具以及编译器选项 259