当前位置:首页 > 工业技术
构建安全的软件  避免产生软件安全问题的正确方法
构建安全的软件  避免产生软件安全问题的正确方法

构建安全的软件 避免产生软件安全问题的正确方法PDF电子书下载

工业技术

  • 电子书积分:12 积分如何计算积分?
  • 作 者:(美)John Viega,(美)Gary McGraw著;钟向群,王鹏译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2003
  • ISBN:7302065152
  • 页数:344 页
图书介绍:本书以全新视角直面软件安全性问题,其前半部分讲述了软件安全的理论和风险管理的思想,后半部分深入到实现的细节中。
《构建安全的软件 避免产生软件安全问题的正确方法》目录

第1章 软件安全性概论 1

1.1 都是软件惹的祸 1

1.2 安全性问题的处理 4

1.2.1 Bugtraq 6

1.2.2 GERT建议 6

1.2.3 RISKS Digest 6

1.3 影响软件安全性的技术趋势 7

1.4 ilities 10

1.4.1 安全性 11

1.4.2 可靠性 11

1.5 穿透-补丁不是好办法 12

1.6 艺术与工程 13

1.7 安全目标 14

1.7.1 预防 14

1.7.2 跟踪与审计 15

1.7.3 监控 15

1.7.4 保密性和机密性 15

1.7.5 多级安全性 16

1.7.6 匿名性 16

1.7.7 认证 17

1.7.8 完整性 18

1.8 普通软件的安全性陷阱 18

1.9 软件项目的目标 20

1.10 结束语 20

第2章 软件安全性风险管理 22

2.1 软件安全性风险管理概览 22

2.2 安全人员的角色 24

2.3 生命周期中的软件安全人员 25

2.3.1 需求获取 25

2.3.2 风险评估 26

2.3.3 安全性设计 27

2.3.4 实现 28

2.3.5 安全性测试 28

2.4 现实的权衡 29

2.5 思考安全性 30

2.6 软件风险管理的实践 30

2.6.1 当开发误入歧途时 30

2.6.2 当安全性分析误入歧途时 31

2.7 通用准则 32

2.8 结束语 34

第3章 技术的选择 35

3.1 语言的选择 35

3.2 分布式对象平台的选择 38

3.2.1 CORBA 38

3.2.2 DCOM 40

3.2.3 EJB和RMI 41

3.3 操作系统的选择 42

3.4 认证技术 43

3.4.1 基于主机的认证 44

3.4.2 物理权标 45

3.4.3 生物认证 45

3.4.4 密码认证 47

3.4.5 深度防御与认证 47

3.5 结束语 47

第4章 开放源代码与封闭源代码 48

4.1 隐晦的安全性 48

4.1.1 逆向工程 50

4.1.2 代码模糊 51

4.1.3 紧包软件的安全性 52

4.1.4 模糊安全性不是万能的 52

4.2 开放源代码 52

4.3 多眼现象 53

4.3.1 脆弱性检测是困难的 55

4.3.2 其他担心 56

4.4 关于发布密码算法 56

4.5 另外两个开放源代码的谬论 57

4.5.1 Microsoft谬论 57

4.5.2 Java谬论 57

4.6 GNU Mailman的安全性问题 58

4.7 特洛伊木马 59

4.8 开放源代码还是封闭源代码 60

4.9 另一个来自缓冲区溢出的安全性教训 60

4.10 忠告 61

4.11 结束语 62

第5章 软件安全性指导原则 63

5.1 原则1:加固最脆弱的链接 64

5.2 原则2:实行深度防护 66

5.3 原则3:失败安全 67

5.4 原则4:坚持最小优先权原则 69

5.5 原则5:分割 70

5.6 原则6:简单化 71

5.7 原则7:提高保密性 74

5.8 原则8:记住隐藏秘密是很难的 75

5.9 原则9:不要轻信 76

5.10 原则10:利用社会资源 77

5.11 结束语 78

第6章 软件稽核 79

6.1 体系结构的安全性分析 81

6.1.1 攻击树 82

6.1.2 报告分析结果 85

6.2 实现的安全性分析 86

6.2.1 源代码的稽核 86

6.2.2 源代码级的安全性稽核工具 87

6.2.3 在分析中使用RATS 88

6.2.4 软件安全性扫描的效果 90

6.3 结束语 91

第7章 缓冲区溢出 92

7.1 什么是缓冲区溢出 94

7.2 为什么缓冲区溢出是安全性问题 95

7.3 防止缓冲区溢出 97

7.4 主要的陷阱 98

7.5 内部缓冲区溢出 102

7.6 更多的输入溢出 102

7.7 其他风险 103

7.8 测试工具 104

7.9 摧毁堆和堆栈 106

7.10 堆溢出 107

7.11 堆栈溢出 111

7.11.1 破译堆栈 111

7.11.2 趋于无限 117

7.12 攻击代码 126

7.12.1 UNIX漏洞检测代码 127

7.12.2 在Windows中的情况 133

7.13 结束语 133

第8章 访问控制 134

8.1 UNLX的访问控制模式 134

8.1.1 UMLX是怎样控制权限的 135

8.1.2 修改文件属性 136

8.1.3 修改文件的归属 138

8.1.4 umask命令 139

8.1.5 程序接口 139

8.1.6 Setuid编程 141

8.2 Windows NT中的访问控制 145

8.3 分割 147

8.4 细化的特权 149

8.5 结束语 150

第9章 竞争状态 151

9.1 什么是竞争状态 151

9.2 检查时间与使用时间 154

9.2.1 攻破Passwd 156

9.2.2 避免TOCTOU问题 158

9.3 安全访问文件 160

9.4 临时文件 163

9.5 锁定文件 164

9.6 其他竞争状态 165

9.7 结束语 166

第10章 随机与惟定 167

10.1 伪随机数发生器 167

10.1.1 PRNG示例 169

10.1.2 Blum-Blum-Shub PRNG 170

10.1.3 Tiny PRNG 171

10.1.4 攻击PRNG 171

10.1.5 在在线游戏中作弊 172

10.1.6 PRNG的统计测试 173

10.2 熵的收集和估计 174

10.2.1 硬件方案 174

10.2.2 软件方案 176

10.2.3 糟糕的熵收集示例 182

10.3 处理熵 183

10.4 实际应用的随机资源 185

10.4.1 Tiny 186

10.4.2 Windows中的随机数 186

10.4.3 Linux中的随机数 187

10.4.4 Java中的随机数 189

10.5 结束语 190

第11章 密码学的应用 192

11.1 一般建议 192

11.1.1 软件开发人员并不是密码学专家 192

11.1.2 数据的完整性 194

11.1.3 密码出口的有关法律 194

11.2 常用的密码库 195

11.2.1 Cryptilb 195

11.2.2 OpenSSL 196

11.2.3 Crypto++ 197

11.2.4 BSAFE 198

11.2.5 Cryptix 199

11.3 密码术编程 200

11.3.1 加密 200

11.3.2 散列运算 205

11.3.3 公钥密码加密 206

11.3.4 多线程 210

11.3.5 加密cookie 210

11.4 密码散列算法的更多应用 212

11.5 SSL和TLS 213

11.6 使用Stunnel 215

11.7 一次一密 216

11.8 结束语 219

第12章 信任管理和输入的有效性 220

12.1 关于信任 220

12.2 不恰当信任的示例 222

12.2.1 信任是可传递的 222

12.2.2 防御恶意的访问者 225

12.2.3 安全调用另一个程序 228

12.2.4 网页上的危险 231

12.2.5 客户端的安全 233

12.2.6 Perl中的问题 235

12.2.7 格式串攻击 236

12.3 自动探测输入问题 237

12.4 结束语 240

第13章 口令认证 241

13.1 口令的存储 241

13.2 向口令数据库添加用户 244

13.3 口令认证 253

13.4 选择口令 258

13.4.1 更多的建议 259

13.4.2 掷骰子 259

13.4.3 口令短语 264

13.4.4 应用程序选择的口令 264

13.5 一次性口令 266

13.6 结束语 278

第14章 数据库安全性 279

14.1 基础知识 279

14.2 访问控制 280

14.3 在访问控制中使用视图 282

14.4 保护域 284

14.5 抵抗统计攻击 287

14.6 结束语 290

第15章 客户端安全性 292

15.1 版权保护机制 294

15.1.1 许可证文件 301

15.1.2 挫败普通盗版者 302

15.1.3 许可证的其他特性 303

15.1.4 其他版权保护方法 304

15.1.5 对不可信客户机的身份认证 305

15.2 防篡改技术 306

15.2.1 反调试程序方法 306

15.2.2 检查和 307

15.2.3 对滥用的响应 308

15.2.4 引诱 309

15.3 代码迷惑技术 310

15.3.1 基本迷惑技术 310

15.3.2 对部分程序进行加密 311

15.4 结束语 313

第16章 通过防火墙 314

16.1 基本策略 314

16.2 客户机代理 316

16.3 服务器代理 317

16.4 SOCKS 318

16.5 点对点 319

16.6 结束语 321

附录A 密码学基础 322

A.1 密码学的最终目标 322

A.2 对密码术的攻击 324

A.3 密码术的类型 325

A.4 对称密码术 325

A.4.1 对称算法的类型 326

A.4.2 对称算法的安全性 327

A.5 公钥密码术 329

A.6 密码散列算法 333

A.6.1 对散列算法的其他攻击 336

A.6.2 好的散列算法 337

A.7 数字签名 337

A.8 结束语 338

参考文献 339

相关图书
作者其它书籍
返回顶部