目录
译者序
序
前言
第1章 为什么安全是软件的问题
1.1 概述
1.2 问题系统复杂性:软件与背景并存
1.3 软件保证和软件安全工序和条例在软件安全中的作用
1.4 软件安全的威胁
1.5 软件不安全的来源
1.6 早期检测软件安全漏洞的好处为软件安全设计案例:当前状态
1.7 软件安全开发管理
1.7.1 我该提出哪些安全策略问题
1.7.2 软件安全的风险管理框架
1.7.3 开发周期中的软件安全条例
1.8 小结
第2章 安全软件的构成
2.1 概述
2.2 定义安全软件的属性
2.2.1 安全软件的核心属性
2.2.2 安全软件的相关属性
2.3 如何改善软件的安全属性
2.3.1 防御者视角
2.3.2 攻击者视角
2.4 如何确定所需的安全属性
2.4.1 构建安全保证案例
2.4.2 安全保证案例的例子
2.4.3 将保证案例融入到软件开发周期中
2.4.4 其他安全保证相关和合法的工作
2.4.5 维持保证案例并从中获益
2.5 小结
第3章 安全软件的需求工程
3.1 概述
3.1.1 需求工程的重要性
3.1.2 质量需求
3.1.3 安全需求工程
3.2 误用和滥用案例
3.2.1 安全不是一套功能
3.2.2 想想你不能做什么
3.2.3 构建有用的误用案例
3.2.4 一个误用的例子
3.3 SQUARE过程模型
3.3.1 SQUARE的简单描述
3.3.2 工具
3.3.3 预期结果
3.4 SQUARE样本输出
3.4.1 SQUARE各个步骤的输出
3.4.2 SQUARE的最终结果
3.5 需求启发
3.5.1 各种启发式方法概览
3.5.2 启发评估标准
3.6 需求排序
3.6.1 确定候选的排序方法
3.6.2 排序方法的比较
3.6.3 需求排序的一些建议
3.7 小结
第4章 软件安全的架构和设计
4.1 概述
4.1.1 架构和设计的重要性
4.1.2 问题和挑战
4.2 软件架构和设计安全条例:架构风险分析
4.2.1 软件特性描述
4.2.2 威胁分析
4.2.3 架构性漏洞评估
4.2.4 确定风险可能性
4.2.5 确定风险影响
4.2.6 风险降低计划
4.2.7 架构风险分析简要回顾
4.3 架构和设计的软件安全知识:安全原则、安全方针和攻击模式
4.3.1 安全原则
4.3.2 安全方针
4.3.3 攻击模式
4.4 小结
第5章 安全编码和测试
5.1 概述
5.2 代码分析
5.2.1 常见软件编码漏洞
5.2.2 源码审查
5.3 编码条例安全编码的附加信息
5.4 软件安全测试
5.4.1 比较软件测试和软件安全测试
5.4.2 功能测试
5.4.3 基于风险的测试
5.5 软件开发前后考虑安全测试
5.5.1 单元测试
5.5.2 测试库文件和可执行文件
5.5.3 集成测试
5.5.4 系统测试
5.5.5 软件安全测试的附件信息来源
5.6 小结
第6章 安全性和复杂性:系统集成的挑战
6.1 概述
6.2 安全故障
6.2.1 错误分类
6.2.2 攻击者行为
6.3 从功能和攻击者视角看安全分析:两个例子
6.3.1 Web服务:功能视角
6.3.2 Web服务:攻击者视角
6.3.3 身份管理:功能视角
6.3.4 身份管理:攻击者视角
6.3.5 身份管理和软件开发
6.4 系统复杂性驱动和安全
6.4.1 更广泛的故障
6.4.2 增量式开发和渐进式开发
6.4.3 冲突或目标改变的复杂性
6.5 深层技术问题的复杂性
6.6 小结
第7章 软件安全的控制和管理
7.1 概述
7.2 控制和安全
7.2.1 安全控制的定义
7.2.2 有效的安全控制和管理的特征
7.3 采用一种企业级的软件安全框架
7.3.1 常见的陷阱
7.3.2 设计方案框架
7.3.3 定义方向
7.4 多高的安全性才足够
7.4.1 定义充分的安全性
7.4.2 软件安全风险管理框架
7.5 安全管理和项目管理
7.5.1 项目规模
7.5.2 项目计划
7.5.3 资源
7.5.4 估计所需资源的性质和持续周期
7.5.5 项目和产品风险
7.5.6 软件安全的度量
7.6 条例的成熟度
7.6.1 保护信息
7.6.2 审计部的任务
7.6.3 操作性恢复与收敛
7.6.4 法律的角度
7.6.5 软件工程师的角度
7.6.6 规范
7.7 小结
第8章 开始
8.1 从哪里开始
8.2 写在最后
术语表
参考文献
· · · · · · (
收起)