




本书是针对软件专业人士编写的技术指南,适合那些希望更好理解软件安全原则、学习如何实践软件安全设计和实施的专业人员进行阅读。
本书共有13章,分为三大部分,即概念、设计和实施。
具体内容包括:
第一部分(第1~5章)为全书提供了概念基础,涉及信息安全和隐私基础概述、威胁建模、对可识别威胁进行防御性缓解的通用战略、安全设计模式,以及使用标准的加密库来缓解常见的风险。
第二部分(第6~7章)分别从设计者和审查员的角度讨论了如何使软件设计变得安全的指导,以及可以应用哪些技术来实现安全性。
第三部分(第8~13章)涵盖了实施阶段的安全性,在有了一个安全的设计后,这一部分将会解释如何在不引入额外漏洞的情况下进行软件开发。
作者简介:
Loren Kohnfelder 从事编程行业已经超过 50 年时间了,他在麻省理工学院攻读硕士研究生期间发表的论文“关于一项实用的公钥加密系统(Towards a Practical Public-Key Cryptosystem)” (1978)首次描述了数字证书以及公共密钥体系结构(PKI) 的基础。他的软件从业经历包括各式各样的编程类工作,如编写各种打孔卡、磁盘控制器驱动、 链接加载器(linking loader)、电子游戏,以及半导体研究实验室的设备控制软件。在微软供职期间, 他回归了安全工作, 加盟了微软的 IE 浏览器团队,之后又加入了.NET 平台安全团队,参与了全行业首个主动安全进程方法的设计。最近他加盟了谷歌公司,曾担任安全团队的软件工程师,此后又参与组建了隐私团队,对大型商业系统进行了百次以上的安全设计审查。
目录:
第一部分 概念 2
第1章 基础 4
1.1 理解安全 4
1.2 信任 5
1.3 经典原则 10
第2章 威胁 20
2.1 对抗性视角 21
2.2 四个问题 22
2.3 威胁建模 22
2.4 隐私方面的考量因素 34
2.5 无处不在的威胁建模 34
第3章 缓解 36
3.1 解决威胁 36
3.2 结构性的缓解战略 37
3.3 访问策略与访问控制 40
3.4 接口 41
3.5 通信 42
3.6 存储 42
第4章 模式 44
4.1 设计属性 45
4.2 暴露最少信息 47
4.3 强力执行 52
4.4 冗余 55
4.5 信任与责任 57
4.6 反模式 60
第5章 密码学 64
5.1 加密工具 64
5.2 随机数 65
5.3 消息认证代码 66
5.4 对称加密 69
5.5 非对称加密 71
5.6 RSA 密码系统 71
5.7 数字签名 72
5.8 数字证书 74
5.9 密钥交换 74
5.10 使用加密 76
第二部分 设计 78
第6章 安全的设计 80
6.1 在设计中集成安全性 81
6.2 建立缓解措施 86
6.3 将隐私融入设计 87
6.4 规划整个软件生命周期 88
6.5 权衡取舍 88
6.6 设计的简洁性 89
第7章 安全设计审查 91
7.1 SDR 流程 91
7.2 SDR 流程 92
7.3 评估设计安全性 96
7.4 处理分歧 100
7.5 练习 103
第三部分 实施 104
第8章 安全地编程 106
8.1 挑战 107
8.2 研究: GotoFail 112
8.3 编码漏洞 115
8.4 非常嫌疑犯 117
第9章 低级编码缺陷 119
9.1 算数漏洞 120
9.2 内存访问漏洞 128
第10章 不受信任的输入 137
10.1 输入验证 137
10.2 字符串漏洞 141
10.3 注入攻击漏洞 143
10.4 缓解注入攻击 149
第11章 WEB 安全 151
11.1 建立在框架之上 152
11.2 Web 安全模型 152
11.3 常见的 Web 漏洞 159
11.4 更多的漏洞和缓解措施 164
第12章 安全测试 166
12.1 什么是安全测试? 166
12.2 对 GotoFail 漏洞执行安全测试 167
12.3 编写安全测试用例 170
12.4 模糊测试 173
12.5 安全回归测试 174
12.6 可用性测试 176
12.7 安全测试的最佳实践 178
第13章 安全部署最佳实践 180
13.1 代码质量 180
13.2 依赖关系 183
13.3 漏洞分类 186
13.4 维护一个安全的开发环境 189
后记 192
附录 A 设计文档示例 202
附录 B 词汇表 214
附录 C 练习 220
附录 D 备忘单 224
点击下载