《软件安全实现 安全编程技术》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:郭克华,王伟平编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302222613
  • 页数:269 页
图书介绍:本书共16章,内容包括基本安全、应用安全编程、数据保护编程以及安全和性能测试。

第1章 安全编程概述 1

1.1 软件的安全问题 1

1.1.1 任何软件都是不安全的 1

1.1.2 软件不安全性的几种表现 3

1.1.3 软件不安全的原因 4

1.2 在软件开发生命周期中考虑安全问题 6

1.2.1 软件设计阶段威胁建模 7

1.2.2 安全代码的编写 9

1.2.3 软件的安全性测试 9

1.2.4 漏洞响应和产品的维护 10

1.3 本书的内容 10

1.3.1 编程中的安全 10

1.3.2 针对信息安全的编程 11

1.3.3 其他内容 12

小结 12

练习 12

参考文献 12

第2章 内存安全 13

2.1 缓冲区溢出 13

2.1.1 缓冲区 13

2.1.2 缓冲区溢出 16

2.1.3 缓冲区溢出案例 18

2.1.4 堆溢出 22

2.1.5 缓冲区溢出攻击 23

2.1.6 防范方法 25

2.2 整数溢出 25

2.2.1 整数的存储方式 25

2.2.2 整数溢出 26

2.2.3 解决方案 31

2.3 数组和字符串问题 31

2.3.1 数组下标问题 31

2.3.2 字符串格式化问题 32

小结 34

练习 34

参考文献 35

第3章 线程/进程安全 36

3.1 线程机制 36

3.1.1 为什么需要线程 36

3.1.2 线程机制和生命周期 39

3.2 线程同步安全 39

3.2.1 线程同步 39

3.2.2 案例分析 40

3.2.3 解决方案 42

3.3 线程协作安全 45

3.3.1 线程协作 45

3.3.2 案例分析 45

3.3.3 解决方案 47

3.4 线程死锁安全 49

3.4.1 线程死锁 49

3.4.2 案例分析 50

3.4.3 解决方案 52

3.5 线程控制安全 53

3.5.1 安全隐患 53

3.5.2 案例分析 53

3.5.3 解决方案 55

3.6 进程安全 56

3.6.1 进程概述 56

3.6.2 进程安全问题 56

小结 57

练习 57

参考文献 57

第4章 异常/错误处理中的安全 58

4.1 异常/错误的基本机制 58

4.1.1 异常的出现 58

4.1.2 异常的基本特点 60

4.2 异常捕获中的安全 61

4.2.1 异常的捕获 61

4.2.2 异常捕获中的安全 63

4.3 异常处理中的安全 66

4.3.1 finally的使用安全 66

4.3.2 异常处理的安全 70

4.4 面向过程异常处理中的安全问题 73

4.4.1 面向过程的异常处理 73

4.4.2 安全准则 76

小结 76

练习 77

第5章 输入安全 78

5.1 一般性讨论 78

5.1.1 输入安全概述 78

5.1.2 预防不正确的输入 80

5.2 几种典型的输入安全问题 82

5.2.1 数字输入安全问题 83

5.2.2 字符串输入安全问题 83

5.2.3 环境变量输入安全问题 84

5.2.4 文件名安全问题 85

5.3 数据库输入安全问题 86

5.3.1 数据库概述 86

5.3.2 数据库的恶意输入 86

5.3.3 账户和口令问题 87

小结 88

练习 88

参考文献 89

第6章 国际化安全 90

6.1 国际化的基本机制 90

6.1.1 国际化概述 90

6.1.2 国际化过程 91

6.2 国际化中的安全问题 94

6.2.1 字符集 94

6.2.2 字符集转换 95

6.2.3 I18N缓冲区溢出问题 99

6.3 推荐使用Unicode 100

小结 101

练习 101

参考文献 101

第7章 面向对象中的编程安全 102

7.1 面向对象概述 102

7.1.1 面向对象基本原理 102

7.1.2 面向对象的基本概念 103

7.2 对象内存分配与释放 104

7.2.1 对象分配内存 104

7.2.2 对象内存释放 105

7.2.3 对象线程安全 109

7.2.4 对象序列化安全 110

7.3 静态成员安全 111

7.3.1 静态成员的机理 111

7.3.2 静态成员需要考虑的安全问题 112

7.3.3 利用单例提高程序性能 112

小结 114

练习 114

第8章 Web编程安全 115

8.1 Web概述 115

8.1.1 Web运行的原理 115

8.1.2 Web编程 116

8.2 避免URL操作攻击 117

8.2.1 URL的概念及其工作原理 117

8.2.2 URL操作攻击 118

8.2.3 解决方法 119

8.3 页面状态值安全 120

8.3.1 URL传值 120

8.3.2 表单传值 122

8.3.3 Cookie方法 125

8.3.4 session方法 128

8.4 Web跨站脚本攻击 134

8.4.1 跨站脚本攻击的原理 134

8.4.2 跨站脚本攻击的危害 140

8.4.3 防范方法 141

8.5 SQL注入 144

8.5.1 SQL注入的原理 144

8.5.2 SQL注入攻击的危害 149

8.5.3 防范方法 150

8.6 避免Web认证攻击 152

8.6.1 Web认证攻击概述 152

8.6.2 Web认证攻击防范 152

小结 153

练习 153

第9章 权限控制 154

9.1 权限控制概述 154

9.1.1 权限控制分类 154

9.1.2 用户认证方法 155

9.2 权限控制的开发 156

9.2.1 开发思想 156

9.2.2 基于代理模式的权限控制开发 157

9.2.3 基于AOP的权限控制开发 159

9.3 单点登录 159

9.3.1 单点登录概述 159

9.3.2 单点登录中账号管理 160

9.3.3 单点登录实现 161

9.4 权限控制的管理 162

小结 163

练习 163

第10章 远程调用和组件安全 165

10.1 远程调用安全 165

10.1.1 远程调用概述 165

10.1.2 安全问题 168

10.2 ActiveX安全 169

10.2.1 ActiveX概述 169

10.2.2 安全问题 170

10.3 JavaApplet安全 171

10.3.1 JavaApplet概述 171

10.3.2 安全问题 172

10.4 DCOM安全 172

10.4.1 DCOM概述 172

10.4.2 安全问题 173

10.5 EJB安全 174

10.5.1 EJB概述 174

10.5.2 开发安全的EJB 174

10.6 CORBA安全 176

10.6.1 CORBA概述 176

10.6.2 CORBA安全概述 177

小结 177

练习 178

参考文献 178

第11章 避免拒绝服务攻击 179

11.1 拒绝服务攻击 179

11.2 几个拒绝服务攻击的案例 180

11.2.1 程序崩溃攻击 180

11.2.2 资源不足攻击 182

11.2.3 恶意访问攻击 184

小结 188

练习 188

参考文献 188

第12章 数据的加密保护 189

12.1 加密概述 189

12.1.1 加密的应用 189

12.1.2 常见的加密算法 190

12.2 实现对称加密 192

12.2.1 用Java实现DES 192

12.2.2 用Java实现3DES 195

12.2.3 用Java实现AES 197

12.3 实现非对称加密 198

12.3.1 用Java实现RSA 198

12.3.2 DSA算法 201

12.4 实现单向加密 201

12.4.1 用Java实现MD5 201

12.4.2 用Java实现SHA 202

12.4.3 用Java实现消息验证码 203

12.5 密钥安全 204

12.5.1 随机数安全 205

12.5.2 密钥管理安全 207

小结 208

练习 208

参考文献 209

第13章 数据的其他保护 210

13.1 数据加密的限制 210

13.2 密码保护与验证 211

13.3 内存数据的保护 214

13.3.1 避免将数据写入硬盘文件 214

13.3.2 从内存擦除数据 217

13.4 注册表安全 217

13.4.1 注册表简介 217

13.4.2 注册表安全 218

13.5 数字水印 218

13.5.1 数字水印简介 218

13.5.2 数字水印的实现 219

13.6 软件版权保护 220

小结 221

练习 221

第14章 数字签名 222

14.1 数字签名概述 222

14.1.1 数字签名的应用 222

14.1.2 数字签名的过程 223

14.2 实现数字签名 224

14.2.1 用RSA实现数字签名 225

14.2.2 用DSA实现数字签名 226

14.3 利用数字签名解决实际问题 228

14.3.1 解决篡改问题 228

14.3.2 解决抵赖问题 232

小结 234

练习 234

第15章 软件安全测试 235

15.1 软件测试概述 235

15.1.1 软件测试的概念 235

15.1.2 软件测试的目的和意义 236

15.1.3 软件测试方法 236

15.2 针对软件安全问题的测试 238

15.2.1 软件安全测试的必要性 238

15.2.2 软件安全测试的过程 239

15.3 安全审查 242

15.3.1 代码的安全审查 242

15.3.2 配置复查 242

15.3.3 文档的安全审查 243

小结 244

练习 244

参考文献 244

第16章 程序性能调优 245

16.1 数据优化 245

16.1.1 优化变量赋值 245

16.1.2 优化字符串 246

16.1.3 选择合适的数据结构 248

16.1.4 使用尽量小的数据类型 249

16.1.5 合理使用集合 249

16.2 算法优化 250

16.2.1 优化基本运算 250

16.2.2 优化流程 252

16.3 应用优化 255

16.3.1 优化异常处理 255

16.3.2 单例 257

16.3.3 享元 257

16.3.4 延迟加载 259

16.3.5 线程同步中的优化 259

16.4 数据库的优化 260

16.4.1 设计上的优化 260

16.4.2 SQL语句优化 262

16.4.3 其他优化 266

小结 266

练习 266