软件安全开发:属性驱动模式 7121287501,9787121287503

配送至
$ $ USD 美元

编辑推荐

在日益严峻的信息安全背景下,软件的安全性已经成为信息安全问题的重中之重。《软件安全开发:属性驱动模式》针对信息安全领域这一核心问题,站在软件开发过程控制的视角,从系统工程基本理论思想出发,借鉴当前国际先进的软件安全开发的理论和方法,提出安全属性驱动的软件开发方法。《软件安全开发:属性驱动模式》的特点是既注重系统性和科学性,又注重实用性,系统性地介绍软件开发生命周期全过程的安全质量保证方法,可作为软件开发组织者、系统分析师、软件架构师、软件设计人员、开发人员、测试人员、系统运维人员以及软件相关专业的在校大学生和研究生学习与实践的较好的参考书。

作者简介

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.4ISO/IEC2703425
2.4McGraw的软件安全开发模型26
2.4.1McGraw的七个接触点模型BSI26
2.4.2软件安全开发成熟度模型BSIMM27
2.5OWASP的软件安全开发模型30
2.5.1CLASP30
2.5.2SAMM33
2.6NIST的软件安全开发生命周期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.18Java虚拟机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.4Fuzzing测试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.3SQL注入缺陷控制测试226
6.7.4XSS脚本攻击控制测试227
6.7.5抗抵赖控制测试227
6.7.6假冒控制测试228
6.7.7失效控制测试228
6.7.8优先权提升控制测试228
6.7.9抗逆向工程保护测试229
6.7.10Web应用漏洞测试229
6.8测试过程模型230
6.8.1软件安全测试基本过程230
6.8.2V模型231
6.8.3W模型231
6.8.4X模型232
6.8.5H模型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

文摘

版权页:



2.风险驱动的软件安全架构设计
风险分析与控制是信息安全管理的核心内容,风险驱动的软件安全设计也是当前系统安全领域重点关注的方法。它的核心思想是开发者能够以合理的成本快速地构建高质量的软件,主要解决两个方面的问题:①以风险为中心。根据风险分析的结果,运用最小的架构技术集合去缓解最紧迫的风险,这与软件安全设计的经济性原则相符合。②合乎逻辑的设计。风险识别、风险优先级排序、安全技术选择以及对风险的缓解和控制程度,这些活动都是由人来进行操作的,分析过程包含了个人的主观因素,因而分析结果千差万别。然而无论采用哪一种方案,风险分析的可评估属性都使得人们可以依据统一的标准对这些方案给出较为客观的评价结果,从而选择那些更符合业务逻辑并且可以满足安全需求的系统安全设计方案。
3.属性驱动的软件安全架构设计
我们的目的是将安全属性嵌入到软件开发生命周期的各个阶段,最终实现软件的总体安全目标。站在这个全局性的视角,属性驱动的软件安全设计属于提升架构的设计范畴,即要通过结构化的系统设计方法,将安全属性提升到系统架构层面,然后通过对代码模块的管理,保证系统安全需求的实现。
由于应用软件业务目标千差万别,开发时间要求通常又比较紧迫,一下子实现提升架构设计难度非常大,可以选择从专注架构开始的设计策略,由安全属性需求推动系统逻辑结构设计,逐步将安全属性提升到架构设计中。攻击面评估、威胁建模、风险分析以及安全需求都是安全架构设计应该考虑的内容。
4.3.3攻击面评估
一个软件或应用程序的攻击面是对软件漏洞被威胁利用的度量,即入口点和出口点的脆弱性被恶意攻击者利用的程度。
ISBN7121287501,9787121287503
出版社电子工业出版社
作者宋明秋
尺寸16