《软件安全技术》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:陈波,于泠编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2018
  • ISBN:9787111601005
  • 页数:388 页
图书介绍:本书介绍在软件开发的过程中从根本上提高软件安全性的基本技术。全书分4个部分15章。第1部分软件安全概述,第2~4部分分别针对3大类软件安全威胁:软件自身的安全(软件漏洞)、恶意代码以及软件侵权展开。第2部分软件安全开发,包括软件漏洞概述、典型软件漏洞分析、Web漏洞分析以及软件新型漏洞分析等4章,还包括软件安全开发模型,以及软件安全开发生命周期每一个环节中的安全技术共6章。第3部分恶意代码防护共两章,分别介绍恶意代码分析基本技术,以及恶意代码法律防治措施和技术防治技术。第4部分软件侵权保护共两章,分别介绍开源软件及其安全性、软件知识产权法律保护和技术保护措施。本书可作为信息安全专业、计算机专业、软件工程等专业的教材,也适用于软件开发人员、软件架构师、软件测试等从业人员,也可供注册软件生命周期安全师、注册软件安全专业人员、注册信息安全专业人员、以及计算机软件开发人员或编程爱好者参考和使用。

第1章 软件安全概述 1

1.1 软件安全的重要性 1

【案例1】零日攻击、网络战与软件安全 1

【案例1思考与分析】 2

1.2 软件面临的安全威胁 6

1.2.1 软件漏洞 6

1.2.2 恶意代码 7

1.2.3 软件侵权 8

1.3 软件安全的概念 8

1.3.1 软件安全的一些定义 8

1.3.2 用信息安全的基本属性理解软件安全 9

1.3.3 软件安全相关概念辨析 12

1.4 软件安全的研究内容 16

1.4.1 软件安全是信息安全保障的重要内容 16

1.4.2 软件安全的主要方法和技术 18

1.5 思考与实践 20

1.6 学习目标检验 21

第2章 软件漏洞概述 22

2.1 软件漏洞的概念 22

2.1.1 信息安全漏洞 22

2.1.2 软件漏洞 23

2.1.3 软件漏洞成因分析 26

2.2 软件漏洞标准化管理 28

2.2.1 软件漏洞的分类 29

2.2.2 软件漏洞的分级 30

2.2.3 软件漏洞管理国际标准 32

2.2.4 软件漏洞管理国内标准 35

2.3 漏洞管控的思考 37

【案例2-1】白帽黑客的罪与罚 37

【案例2-2】阿里巴巴月饼门 37

【案例2-1和案例2-2思考与分析】 38

2.4 思考与实践 41

2.5 学习目标检验 42

第3章 Windows系统典型漏洞分析 43

3.1 内存漏洞 43

3.1.1 内存结构及缓冲区溢出 43

3.1.2 栈溢出漏洞及利用分析 44

3.1.3 堆溢出漏洞及利用分析 55

3.1.4 格式化字符串漏洞及利用分析 59

3.2 Windows安全漏洞保护分析 63

3.2.1 栈溢出检测选项/GS 63

3.2.2 数据执行保护DEP 64

3.2.3 地址空间布局随机化ASLR 66

3.2.4 安全结构化异常处理SafeSEH 67

3.2.5 增强缓解体验工具包EMET 68

【案例3】Windows安全漏洞保护技术应用 69

【案例3思考与分析】 69

3.3 思考与实践 73

3.4 学习目标检验 74

第4章 Web漏洞分析 75

4.1 Web基础 75

4.1.1 Web基本架构 75

4.1.2 一次Web访问过程分析 76

4.2 Web漏洞概述 77

4.3 SQL注入漏洞 80

4.3.1 漏洞原理及利用 81

4.3.2 漏洞防护的基本措施 84

【案例4-1】SQL注入漏洞源代码层分析 85

【案例4-1思考与分析】 86

4.4 XSS跨站脚本漏洞 93

4.4.1 漏洞原理及利用 93

4.4.2 漏洞防护的基本措施 97

【案例4-2】XSS漏洞源代码层分析 98

【案例4-2思考与分析】 98

4.5 CSRF跨站请求伪造漏洞 104

4.5.1 漏洞原理及利用 104

4.5.2 漏洞防护的基本措施 105

4.6 其他Web漏洞 107

4.6.1 命令执行漏洞原理及利用 107

4.6.2 文件包含漏洞原理及利用 107

4.6.3 文件上传漏洞原理及利用 108

4.7 思考与实践 109

4.8 学习目标检验 112

第5章 软件安全开发模型 113

5.1 软件开发模型 113

5.1.1 软件生命周期 113

5.1.2 软件过程与软件开发模型 114

5.2 软件安全开发模型 116

5.2.1 微软的软件安全开发生命周期模型 116

5.2.2 McGraw的软件内建安全开发模型 123

5.2.3 NIST的软件安全开发生命周期模型 125

5.2.4 OWASP的软件安全开发模型 126

5.2.5 软件安全开发模型特点比较 130

【案例5】Web应用漏洞消减模型设计 132

【案例5思考与分析】 132

5.3 思考与实践 134

5.4 学习目标检验 135

第6章 软件安全需求分析 137

6.1 软件需求分析与软件安全需求分析 137

6.1.1 软件需求分析的主要工作 137

6.1.2 软件安全需求分析的主要工作 138

6.2 软件安全需求的来源 140

6.2.1 软件安全需求的来源分类 140

6.2.2 软件安全遵从性需求 141

6.3 软件安全需求的获取 149

6.3.1 软件安全需求获取相关方 149

6.3.2 软件安全需求获取方法 149

【案例6】一个在线学习系统的安全需求分析 152

【案例6思考与分析】 152

6.4 思考与实践 158

6.5 学习目标检验 159

第7章 软件安全设计 160

7.1 软件设计与软件安全设计 160

7.1.1 软件设计的主要工作 160

7.1.2 软件安全设计的主要工作 161

7.2 软件安全设计原则 163

7.2.1 经典安全设计原则条目 163

7.2.2 安全设计原则介绍 165

7.3 软件安全功能设计 170

7.3.1 一个基本Web应用系统的安全功能设计 170

7.3.2 基于安全模式的软件安全设计 176

7.4 威胁建模 178

7.4.1 威胁建模的概念 178

7.4.2 威胁建模的过程 180

【案例7】对一个简单的Web应用系统进行威胁建模 188

【案例7思考与分析】 188

7.5 思考与实践 191

7.6 学习目标检验 192

第8章 软件安全编码 193

8.1 软件安全编码概述 193

8.1.1 软件安全编码的主要工作 193

8.1.2 软件安全编码的基本原则 195

8.2 开发语言的安全性 197

8.2.1 C语言安全编码 197

8.2.2 Java语言安全编码 199

8.3 安全编码实践 201

8.3.1 输入验证 201

8.3.2 数据净化 202

8.3.3 错误信息输出保护 203

8.3.4 数据保护 204

8.3.5 其他安全编码实践 206

【案例8】基于OpenSSL的C/S安全通信程序 207

【案例8思考与分析】 208

8.4 思考与实践 211

8.5 学习目标检验 213

第9章 软件安全测试 214

9.1 软件测试与软件安全测试 214

9.1.1 软件测试的主要工作 214

9.1.2 软件安全测试的主要工作 215

9.2 软件安全功能测试 218

9.3 代码分析 221

9.3.1 代码静态分析与代码动态分析的概念 221

9.3.2 源代码静态分析的一般过程 223

9.3.3 源代码静态分析工具 224

9.4 模糊测试 226

9.4.1 模糊测试的概念 226

9.4.2 模糊测试过程 228

9.4.3 模糊测试工具 230

9.5 渗透测试 231

9.5.1 渗透测试的概念 231

9.5.2 渗透测试过程 232

9.5.3 渗透测试工具 233

【案例9】Web应用安全测试与安全评估 234

【案例9思考与分析】 235

9.6 思考与实践 238

9.7 学习目标检验 240

第10章 软件安全部署 241

10.1 软件部署与安全 241

10.1.1 软件部署的主要工作 241

10.1.2 软件安全部署的主要工作 243

10.2 软件安装配置安全与运行安全 243

10.2.1 软件安装配置安全 243

10.2.2 软件运行安全 244

10.3 软件运行环境安全配置与运行安全 245

10.3.1 基础环境软件的安全配置 245

10.3.2 基础环境软件漏洞监测与修复 246

【案例10】SSL/TIS协议的安全实现与安全部署 246

【案例10思考与分析】 246

10.4 思考与实践 248

10.5 学习目标检验 248

第11章 恶意代码分析基础 249

11.1 计算机启动过程 249

11.1.1 计算机初始化启动过程及其安全性分析 249

11.1.2 操作系统启动过程及其安全性分析 252

11.2 程序的生成和运行 255

11.2.1 程序生成和运行的典型过程 255

11.2.2 编译/链接与程序的构建 256

11.2.3 加载与程序的运行 258

11.3 PE文件 259

11.3.1 PE文件的概念 259

11.3.2 PE文件的结构 260

11.3.3 地址映射 262

11.3.4 导入函数地址表和导入表 265

【案例11-1】构造一个PE格式的可执行文件 270

【案例11-1思考与分析】 271

11.4 程序的逆向分析 280

11.4.1 逆向工程 280

11.4.2 逆向工程相关工具及应用 285

【案例11-2】OllyDbg逆向分析应用 290

【案例11-2思考与分析】 290

【案例11-3】IDA逆向分析应用 295

【案例11-3思考与分析】 295

11.5 思考与实践 302

11.6 学习目标检验 304

第12章 恶意代码防治 305

12.1 恶意代码机理分析 305

12.1.1 计算机病毒 305

12.1.2 蠕虫 307

12.1.3 木马 308

12.1.4 后门 312

12.1.5 Rootkit 313

12.1.6 勒索软件 315

12.1.7 恶意代码技术的发展 316

【案例12】WannaCry勒索软件分析 317

【案例12思考与分析】 318

12.2 恶意代码涉及的法律问题与防治管理 321

12.2.1 恶意代码涉及的法律问题 321

12.2.2 恶意代码防治管理 329

12.3 面向恶意代码检测的软件可信验证 331

12.3.1 软件可信验证模型 332

12.3.2 特征可信验证 332

12.3.3 身份(来源)可信验证 334

12.3.4 能力(行为)可信验证 336

12.3.5 运行环境可信验证 340

12.4 思考与实践 341

12.5 学习目标检验 343

第13章 开源软件及其安全性 344

13.1 开源软件概述 344

13.1.1 软件分类 344

13.1.2 开源软件的概念 346

13.1.3 开源软件受到追捧的原因 350

13.2 开源软件的知识产权 351

13.2.1 开源软件涉及的主要权益 351

13.2.2 开源软件的授权模式 353

【案例13】主流开源许可证应用分析 356

【案例13思考与分析】 357

13.3 开源软件的安全性反思 357

13.4 思考与实践 360

13.5 学习目标检验 360

第14章 软件知识产权保护 362

14.1 软件知识产权的法律保护 362

14.1.1 软件的知识产权 362

14.1.2 软件知识产权的法律保护途径 363

【案例14-1】对iOS系统越狱行为的分析 365

【案例14-1思考与分析】 366

14.2 软件版权的技术保护 366

14.2.1 软件版权的技术保护目标及基本原则 366

14.2.2 软件版权保护的基本技术 367

【案例14-2】.NET平台下的软件版权保护 374

【案例14-2思考与分析】 375

14.2.3 云环境下的软件版权保护 378

14.3 思考与实践 382

14.4 学习目标检验 383

参考文献 385