新書推薦:
《
股市趋势技术分析(原书第11版)
》
售價:NT$
1010.0
《
汉匈战争全史
》
售價:NT$
454.0
《
恶的哲学研究(社会思想丛书)
》
售價:NT$
500.0
《
不止江湖
》
售價:NT$
449.0
《
天才留步!——从文艺复兴到新艺术运动(一本关于艺术天才的鲜活故事集,聚焦艺术史的高光时刻!)
》
售價:NT$
704.0
《
双城史
》
售價:NT$
505.0
《
冯友兰和青年谈心系列:不是问题的问题(哲学大师冯友兰和年轻人谈心,命运解读)
》
售價:NT$
254.0
《
月与蟹(青鲤文库)荣获第144届直木奖,天才推理作家经典作品全新译本。一部青春狂想曲,带你登上心理悬疑之巅。
》
售價:NT$
230.0
|
編輯推薦: |
在日益严峻的信息安全背景下,软件的安全性已经成为信息安全问题的重中之重。本书针对信息安全领域这一核心问题,站在软件开发过程控制的视角,从系统工程基本理论思想出发,借鉴当前国际*的软件安全开发的理论和方法,提出安全属性驱动的软件开发方法。
|
內容簡介: |
在日益严峻的信息安全背景下,软件的安全性已经成为信息安全问题的重中之重。本书针对信息安全领域这一核心问题,站在软件开发过程控制的视角,从系统工程基本理论思想出发,借鉴当前国际先进的软件安全开发的理论和方法,提出安全属性驱动的软件开发方法。全书以软件安全属性为核心,将安全属性贯穿于软件开发生命周期的每一个阶段,通过对软件开发生命周期全过程的安全质量管理和控制,以期减少开发过程中可能产生的各种漏洞,提高软件产品的本质安全性。全书共分为6章,第1章是软件安全开发相关的基本概念,第2章介绍了软件安全开发方法的历史演化进程以及一些典型的软件安全开发模型,第3章基于需求工程原理阐述了软件安全属性需求获取方法,第4章从系统架构角度出发阐述了软件安全架构的设计方法以及相关安全技术,第5章介绍了软件开发编码过程中的安全问题,第6章对于软件安全性测试进行了全面的阐述。本书的特点是既注重系统性和科学性,又注重实用性,系统性地介绍软件开发生命周期全过程的安全质量保证方法,可作为软件开发组织者、系统分析师、软件架构师、软件设计人员、开发人员、测试人员、系统运维人员以及软件相关专业的在校大学生和研究生学习与实践的较好的参考书。
|
關於作者: |
2014.8 获得国际注册信息系统审计师(CISA)认证2012.8 获得国际注册信息系统安全专家(CISSP)认证2009-2010 英国牛津大学互联网研究所访问学者
|
目錄:
|
第1章 理解软件安全开发1
1.1 信息安全面临的困境1
1.2 软件安全基本概念2
1.2.1 软件定义2
1.2.2 软件安全错误2
1.2.3 软件安全的定义3
1.3 软件安全属性刻画4
1.3.1 保密性4
1.3.2 完整性5
1.3.3 可用性5
1.3.4 认证性6
1.3.5 授权6
1.3.6 可记账性审计性7
1.3.7 抗抵赖性7
1.3.8 可控性8
1.3.9 可信性8
1.4 信息产品的安全性评估标准8
1.5 系统安全工程9
1.6 系统安全工程能力成熟度模型10
1.7 属性驱动的软件安全开发的基本思想11
1.7.1 软件安全开发方法11
1.7.2 软件定义安全11
1.7.3 属性驱动的软件安全开发方法14
1.8 本章小结14
第2章 将安全嵌入软件开发整个生命周期16
2.1 系统安全开发方法的进化史16
2.2 软件安全开发模型17
2.2.1 启发式软件安全开发模型17
2.2.2 软件安全生命周期开发模型18
2.3 微软的SDL模型20
2.3.1 传统的系统开发瀑布模型20
2.3.2 软件安全开发生命周期模型SDL20
2.3.3 敏捷的SDL23
2.3.4 ISOIEC 2703425
2.4 McGraw的软件安全开发模型26
2.4.1 McGraw的七个接触点模型BSI26
2.4.2 软件安全开发成熟度模型BSIMM27
2.5 OWASP的软件安全开发模型30
2.5.1 CLASP30
2.5.2 SAMM33
2.6 NIST的软件安全开发生命周期34
2.7 属性驱动的软件安全开发生命周期模型36
2.8 本章小结36
第3章 软件安全需求分析37
3.1 概述37
3.1.1 基本内涵37
3.1.2 安全需求的来源39
3.1.3 软件安全需求的内容39
3.2 核心软件安全需求40
3.2.1 保密性需求40
3.2.2 完整性需求42
3.2.3 可用性需求43
3.2.4 认证需求44
3.2.5 授权需求46
3.2.6 可记账性审计需求50
3.3 通用软件安全需求51
3.3.1 安全架构需求51
3.3.2 会话管理需求51
3.3.3 错误和例外管理需求52
3.3.4 配置参数管理需求52
3.4 运维安全需求52
3.4.1 环境部署需求53
3.4.2 归档需求54
3.4.3 反盗版需求54
3.5 其他安全需求55
3.5.1 顺序和时间需求55
3.5.2 国际性需求55
3.5.3 采购需求56
3.6 软件安全需求获取方法57
3.6.1 软件安全需求获取的概念57
3.6.2 头脑风暴57
3.6.3 问卷调查和访谈58
3.6.4 策略分解58
3.6.5 数据分类60
3.6.6 主客体关系矩阵62
3.6.7 使用用例和滥用案例建模62
3.7 软件安全需求跟踪矩阵63
3.8 本章小结64
第4章 软件安全保障设计65
4.1 概述65
4.1.1 软件安全设计的概念65
4.1.2 软件安全设计的基本原则65
4.1.3 平衡安全设计原则71
4.2 属性驱动的软件安全设计72
4.3 软件安全架构设计73
4.3.1 康威定律73
4.3.2 软件安全架构的设计方法74
4.3.3 攻击面评估75
4.3.4 威胁建模75
4.3.5 风险分析82
4.3.6 软件架构的选择86
4.3.7 软件架构的安全考虑92
4.3.8 与现有架构的集成93
4.4 基于核心安全需求的软件安全设计94
4.4.1 保密性设计94
4.4.2 完整性设计99
4.4.3 可用性设计101
4.4.4 认证设计102
4.4.5 授权设计103
4.4.6 可记账性审计设计103
4.5 其他安全需求设计104
4.5.1 接口安全设计104
4.5.2 互联互通性106
4.6 软件安全技术106
4.6.1 认证106
4.6.2 身份管理107
4.6.3 凭证管理109
4.6.4 流控制112
4.6.5 防火墙和网络代理113
4.6.6 中间件114
4.6.7 排队基础设施和技术114
4.6.8 日志与审计114
4.6.9 入侵检测系统115
4.6.10 入侵防御系统116
4.6.11 数据丢失保护116
4.6.12 虚拟化117
4.6.13 数字版权管理118
4.6.14 可信计算120
4.6.15 数据库安全121
4.6.16 编程语言环境128
4.6.17 公共语言运行库130
4.6.18 Java虚拟机131
4.6.19 编译器选项132
4.6.20 操作系统安全132
4.6.21 嵌入式系统安全133
4.7 安全架构与设计检查134
4.8 本章小结135
第5章 编写安全的代码136
5.1 概述136
5.1.1 漏洞的基本概念136
5.1.2 漏洞分类137
5.1.3 漏洞产生的原因138
5.1.4 通用软件漏洞数据库139
5.1.5 软件安全编码实践与控制141
5.2 常见软件漏洞类型分析与防御方法142
5.2.1 缓冲区溢出142
5.2.2 注入缺陷145
5.2.3 认证和会话管理149
5.2.4 跨站脚本攻击XSS152
5.2.5 不安全的直接对象引用154
5.2.6 安全配置错误156
5.2.7 敏感数据泄露157
5.2.8 加密机制本身的安全问题162
5.2.9 缺少功能级检查163
5.2.10 跨站请求伪造CSRF164
5.2.11 使用已知漏洞组件167
5.2.12 未经验证的重定向和转发167
5.2.13 文件攻击168
5.2.14 竞争条件171
5.2.15 边信道攻击172
5.3 软件安全编码实践174
5.3.1 输入验证174
5.3.2 标准化176
5.3.3 数据净化177
5.3.4 错误处理178
5.3.5 安全的API178
5.3.6 内存管理179
5.3.7 例外管理182
5.3.8 会话管理183
5.3.9 配置参数管理183
5.3.10 安全启动184
5.3.11 加密机制的安全保护184
5.3.12 并发控制186
5.3.13 标签化187
5.3.14 沙箱188
5.3.15 防篡改技术188
5.4 软件安全编码保证过程190
5.4.1 选择安全的编程语言190
5.4.2 版本(配置)管理190
5.4.3 代码分析191
5.4.4 代码评审192
5.4.5 构建安全的软件编译环境194
5.5 本章小结195
第6章 软件安全测试196
6.1 概述196
6.1.1 软件安全测试的定义和目的196
6.1.2 软件安全测试的基本内涵196
6.1.3 软件安全测试框架199
6.1.4 软件安全测试方法200
6.1.5 从攻击者角度思考201
6.2 软件安全功能测试201
6.2.1 保密性测试201
6.2.2 完整性测试202
6.2.3 可用性测试205
6.2.4 认证性测试206
6.2.5 授权测试207
6.2.6 可记账性审计测试207
6.3 软件安全漏洞测试208
6.3.1 攻击面验证208
6.3.2 环境测试208
6.3.3 模拟测试209
6.4 其他测试210
6.4.1 性能测试210
6.4.2 可扩展性测试211
6.4.3 隐私测试211
6.5 软件安全功能测试方法212
6.5.1 单元测试212
6.5.2 集成测试213
6.5.3 回归测试213
6.5.4 系统测试214
6.5.5 逻辑测试214
6.5.6 用户接收测试215
6.6 软件安全漏洞测试方法216
6.6.1 源代码测试216
6.6.2 白盒测试216
6.6.3 黑盒测试217
6.6.4 Fuzzing测试218
6.6.5 扫描219
6.6.6 渗透测试222
6.6.7 静态测试224
6.6.8 动态测试225
6.7 几种重要的软件安全漏洞控制测试225
6.7.1 输入验证测试225
6.7.2 缓冲区溢出控制测试226
6.7.3 SQL注入缺陷控制测试226
6.7.4 XSS脚本攻击控制测试227
6.7.5 抗抵赖控制测试227
6.7.6 假冒控制测试228
6.7.7 失效控制测试228
6.7.8 优先权提升控制测试228
6.7.9 抗逆向工程保护测试229
6.7.10 Web应用漏洞测试229
6.8 测试过程模型230
6.8.1 软件安全测试基本过程230
6.8.2 V模型231
6.8.3 W模型231
6.8.4 X模型232
6.8.5 H模型232
6.8.6 前置测试模型233
6.8.7 基于软件开发生命周期的测试234
6.9 测试数据的管理236
6.9.1 漏洞报告和跟踪238
6.9.2 漏洞影响评估与修复242
6.10 常见的软件安全测试工具242
6.11 本章小结242
附录A 软件安全开发生命周期模型243
附录B 常见的HTTP状态代码和原因解释245
附录C 用于输入验证的正则表达式语法247
附录D 常用软件测试工具249
参考文献251
|
|