注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络操作系统Windows一个都不能有:软件的19个致命安全漏洞

一个都不能有:软件的19个致命安全漏洞

一个都不能有:软件的19个致命安全漏洞

定 价:¥38.00

作 者: (美)豪沃、勒伯兰克、维加
出版社: 清华大学出版社
丛编项: 安全技术经典译丛
标 签: 暂缺

ISBN: 9787302138044 出版时间: 2006-11-01 包装: 平装
开本: 16 页数: 252 字数:  

内容简介

  我们通常期望计算机可以按照我们的指示去执行任务,在现实生活中,我们通过使用软件来完成这些期望。目前计算机及其软件都变得非常的复杂,从我们点击鼠标到看到期望的结果这一过程中,可能经过了多层软件。为了充分利用计算机平台的能力,我们通常要依赖于这些软件层自身执行的正确性。对于这些软件层来说,每一层都可能出现问题,软件运行的结果并不是作者所需要的,或者至少不是计算机操作者需要的。这些漏洞为我们的系统引入了一定的不确定因素,随之而来的是重大的安全漏洞。这些漏洞有些比较简单,比如软件或系统崩溃(可用于拒绝服务攻击),或者缓冲区溢出(攻击者可以以此来替换应用程序的代码,从而执行任意的命令)。本书本着小巧、易读、实用的原则,涵盖了目前流行的编程语言和运行平台,覆盖了最为常见的与软件安全相关的19个致命漏洞。该书采用理论和实践相结合的方式,对于每个漏洞都给出了详细的描述、产生的原理、查找的方法、弥补的措施等内容,同时,对于每个漏洞,作者还精选了系统中实际出现的例子加以说明,使其更直观,令读者印象更为深刻。另外,在弥补措施中,作者结合多种不同的语言给出具体的代码弥补方案,从而更增强了实用性。

作者简介

  本书提供作译者介绍Michael Howard,Microsoft公司安全工程组的高级安全项目管理经理,同时也是获奖书籍Writing Secure Code的作者之一。他还是IEEE Security&Privacy Magazine杂志“Basic Training”栏目作者之一、美国国家网络安全伙伴任务小组为国土安全部编写的“Processes to Produce Secure Software”一文的作者之一。作为微软“安全开发生命周期”的架构师,Michael花费了大量的时间来制定和实施最佳安全实践,促进软件开发过程改进,为普通用户提供更为安全的软件。.David LeBlanc博士目前是...

图书目录

第1章  缓冲区溢出    1
1.1  漏洞概述    1
1.2  受影响的编程语言    2
1.3  漏洞详细解释    2
1.3.1  受漏洞影响的C/C++    5
1.3.2  相关漏洞    8
1.4  查找漏洞模式    8
1.5  在代码审查中查找该漏洞    8
1.6  发现该漏洞的测试技巧    9
1.7  漏洞示例    10
1.7.1  CVE-1999-0042    10
1.7.2  CVE-2000-0389
   — CVE-2000-0392    10
1.7.3  CVE-2002-0842、
     CVE-2003-0095、
     CAN-2003-0096    11
1.7.4  CAN-2003-0352    11
1.8  弥补措施    12
1.8.1  替换危险的字符串
     处理函数    12
1.8.2  审计分配操作    12
1.8.3  检查循环和数组访问    12
1.8.4  使用C++字符串来替
   换C字符串缓冲区    12
1.8.5  使用STL容器替代静
   态数组    13
1.8.6  使用分析工具    13
1.9  其他防御措施    13
1.9.1  栈保护    14
1.9.2  不可执行的栈和堆    14
1.10  其他资源    14
1.11  本章总结    16
第2章  格式化字符串问题    17
2.1  漏洞概述    17
2.2  受影响的编程语言    18
2.3  漏洞详细解释    18
2.3.1  受漏洞影响的C/C++    20
2.3.2  相关漏洞    20
2.4  查找漏洞模式    21
2.5  在代码审查中查找该漏洞    21
2.6  发现该漏洞的测试技巧    21
2.7  漏洞示例    22
2.7.1  CVE-2000-0573    22
2.7.2  CVE-2000-0844    22
2.8  弥补措施    23
2.9  其他防御措施    23
2.10  其他资源    23
2.11  本章总结    24
第3章  整数溢出    25
3.1  漏洞概述    25
3.2  受影响的编程语言    25
3.3  漏洞详细解释    26
3.3.1  受漏洞影响的C和C++    26
3.3.2  受漏洞影响的C#    31
3.3.3  受漏洞影响的Visual Basic和Visual Basic.net    32
3.3.4  受漏洞影响的Java    33
3.3.5  受漏洞影响的Perl    34
3.4  查找漏洞模式    35
3.5  在代码审查中查找漏洞    35
3.5.1  C/C++    35
3.5.2  C#    37
3.5.3  Java    37
3.5.4  Visual Basic和Visual
     Basic.NET    38
3.5.5  Perl    38
3.6  发现该漏洞的测试技巧    38
3.7  漏洞示例    38
3.7.1  在Windows脚本引擎中
     存在的漏洞可以导致
     任意代码执行    38
3.7.2  在SOAPParameter的对象
     构造函数中存在整数溢出    39
3.7.3  在HTR块编码中存在的
     堆溢出可以导致Web
     服务器遭到入侵    39
3.8  弥补措施    39
3.9  其他防御措施    41
3.10  其他资源    41
3.11  本章总结    42
第4章  SQL注入    43
4.1  漏洞概述    43
4.2  受影响的编程语言    44
4.3  漏洞详细解释    44
4.3.1  受漏洞影响的C#    44
4.3.2  受漏洞影响的PHP    45
4.3.3  受漏洞影响的Perl/CGI    46
4.3.4  受漏洞影响的Java
     和JDBC    46
4.3.5  受漏洞影响的SQL    47
4.3.6  相关漏洞    48
4.4  查找漏洞模式    49
4.5  在代码审查中查找该漏洞    49
4.6  发现该漏洞的测试技巧    50
4.7  漏洞示例    52
4.7.1  CAN-2004-348    52
4.7.2  CAN-2002-0554    52
4.8  弥补措施    52
4.8.1  验证所有的输入    52
4.8.2  不要使用字符串连接来
     构造SQL语句    53
4.9  其他防御措施    56
4.10 其他资源    56
4.11  本章总结    57
第5章  命令注入    59
5.1  漏洞概述    59
5.2  受影响的编程语言    59
5.3  漏洞详细解释    59
5.4  查找漏洞模式    61
5.5  在代码审查中查找该漏洞    61
5.6  发现该漏洞的测试技巧    63
5.7  漏洞示例    64
5.7.1  CAN-2001-1187    64
5.7.2  CAN-2002-0652    64
5.8  弥补措施    65
5.8.1  数据验证    65
5.8.2  当检查失败时    67
5.9  其他防御措施    67
5.10  其他资源    68
5.11  本章总结    68
第6章  未能处理错误信息    69
6.1  漏洞概述    69
6.2  受影响的编程语言    69
6.3  漏洞详细解释    69
6.3.1  产生太多的信息    70
6.3.2  忽略了错误信息    70
6.3.3  曲解了错误信息    71
6.3.4  使用了无用的错误值    71
6.3.5  处理了错误的异常    71
6.3.6  处理所有的异常    71
6.3.7  受漏洞影响的C/C++    72
6.3.8  Windows上受漏洞
     影响的C/C++    72
6.3.9  受漏洞影响的C++    73
6.3.10  受漏洞影响的
   C#、VB.NET及Java    73
6.3.11  相关漏洞    74
6.4  查找漏洞模式    74
6.5  在代码审查中查找该漏洞    74
6.6  发现该漏洞的测试技巧    75
6.7  漏洞示例    75
6.8  弥补措施    76
6.8.1  C/C++弥补措施    76
6.8.2  C#、VB.NET和Java
     弥补措施    76
6.9  其他资源    77
6.10  本章总结    77
第7章  跨站脚本    79
7.1  漏洞概述    79
7.2  受影响的编程语言    79
7.3  漏洞详细解释    79
7.3.1  受漏洞影响的
     C/C++ ISAPI应用程序
     或者过滤程序    80
7.3.2  受漏洞影响的ASP    81
7.3.3  受漏洞影响的
     ASP.NET表单    81
7.3.4  受漏洞影响的JSP    81
7.3.5  受漏洞影响的PHP    81
7.3.6  受漏洞影响的使用
     Perl的CGI程序    82
7.3.7  受漏洞影响的mod_perl    82
7.4  查找漏洞模式    82
7.5  在代码审查中查找该漏洞    83
7.6  发现该漏洞的测试技巧    84
7.7  漏洞示例    85
7.7.1  IBM Lotus Domino跨站
     脚本和HTML注入漏洞    85
7.7.2  Oracle HTTP服务器的
  “isqlplus”输入验证漏洞
     允许远程用户实施跨站
     脚本攻击    85
7.7.3  CVE-2002-0840    85
7.8  弥补措施    85
7.8.1  ISAPI C/C++弥补措施    86
7.8.2  ASP弥补措施    86
7.8.3  ASP.NET表单弥补措施    87
7.8.4  JSP弥补措施    87
7.8.5  PHP弥补措施    89
7.8.6  CGI弥补措施    89
7.8.7  mod_perl弥补措施    90
7.8.8  关于HTML编码的
     注意事项    90
7.9  其他防御措施    91
7.10  其他资源    91
7.11  本章总结    92
第8章  未能保护好网络流量    93
8.1  漏洞概述    93
8.2  受影响的编程语言    94
8.3  漏洞详细解释    94
8.4  查找漏洞模式    96
8.5  在代码审查中查找漏洞    96
8.6  发现该漏洞的测试技巧    99
8.7  漏洞示例    99
8.7.1  TCP/IP    100
8.7.2  电子邮件协议    100
8.7.3  电子商务    100
8.8  弥补措施    101
8.9  其他防御措施    104
8.10  其他资源    104
8.11  本章总结    104
第9章  使用Magic URL及隐藏
    表单字段    105
9.1  漏洞概述    105
9.2  受影响的编程语言    105
9.3  漏洞详细解释    105
9.3.1  Magic URL    106
9.3.2  隐藏表单字段    106
9.3.3  相关漏洞    106
9.4  查找漏洞模式    107
9.5  在代码审查中查找该漏洞    107
9.6  发现该漏洞的测试技巧    108
9.7  漏洞示例    109
9.7.1  CAN-2000-1001    109
9.7.2  MaxWebProtal隐藏表单
     字段修改    109
9.8  弥补措施    109
9.8.1  攻击者浏览数据    110
9.8.2  攻击者重放数据    110
9.8.3  攻击者预测数据    112
9.8.4  攻击者更改数据    113
9.9  其他防御措施    114
9.10  其他资源    114
9.11  本章总结    114
第10章  未能正确使用SSL和TLS    115
10.1  漏洞概述    115
10.2  受影响的编程语言    115
10.3  漏洞详细解释    116
10.4  查找漏洞模式    118
10.5  在代码审查查找该漏洞    119
10.6  发现该漏洞的测试技巧    120
10.7  漏洞示例    121
10.7.1  电子邮件客户端    121
10.7.2  Safari Web浏览器    121
10.7.3  Stunnel SSL代理    122
10.8  弥补措施    122
10.8.1  选择协议版本    123
10.8.2  选择加密套件    124
10.8.3  确保证书的有效性    124
10.8.4  验证主机名    126
10.8.5  检查证书撤销    126
10.9  其他防御措施    128
10.10  其他资源    129
10.11  本章总结    129
第11章  使用基于弱口令的系统    131
11.1  漏洞概述    131
11.2  受影响的编程语言    131
11.3  漏洞详细解释    131
11.4  查找漏洞模式    133
11.5  在代码审查中查找该漏洞    134
11.5.1  口令内容策略    134
11.5.2  口令修改和重置    134
11.5.3  口令协议    135
11.5.4  口令处理和存储    135
11.6  发现该漏洞的测试技巧    136
11.7  漏洞示例    136
11.7.1  CVE-2005-1505    136
11.7.2  CVE-2005-0432    137
11.7.3  TENEX漏洞    137
11.7.4  Paris Hilton劫持    138
11.8  弥补措施    138
11.8.1  多方式认证    138
11.8.2  存储以及检查口令    139
11.8.3  选择协议的原则    142
11.8.4  口令重置的原则    142
11.8.5  口令选择的原则    143
11.8.6  其他原则    144
11.9  其他防御措施    144
11.10  其他资源    145
11.11  本章总结    145
第12章  未能安全地存储和
         保护数据    147
12.1  漏洞概述    147
12.2  受影响的编程语言    147
12.3  漏洞详细解释    147
12.3.1  采用脆弱的访问控制机
    制“保护”秘密数据    148
12.3.2  受漏洞影响的访问控制    149
12.3.3  代码中内嵌秘密数据    151
12.3.4  相关漏洞    151
12.4  查找漏洞模式    151
12.5  在代码审查中查找漏洞    152
12.6  发现该漏洞的测试技巧    153
12.7  漏洞示例    155
12.7.1  CVE-2000-0100    155
12.7.2  CAN-2002-1590    155
12.7.3  CVE-1999-0886    155
12.7.4  CAN-2004-0311    156
12.7.5  CAN-2004-0391    156
12.8  弥补措施    156
12.8.1  使用操作系统的
    安全技术    157
12.8.2  C/C++ Windows 2000以
       及更新版本的弥补措施    157
12.8.3  ASP.NET 1.1以及更新
    版本的弥补措施    159
12.8.4  C# .NET Framework 2.0
    弥补措施    159
12.8.5  C/C++ Mac OS X 10.2
    以及更新版本的
    弥补措施    159
12.8.6  无需操作系统支持的
    弥补措施(不在代码
    中保存秘密数据)    160
12.8.7  Java和Java KeyStore
    的注意事项    162
12.9  其他防御措施    163
12.10  其他资源    164
12.11  本章总结    165
第13章  信息泄漏    167
13.1  漏洞概述    167
13.2  受影响的编程语言    167
13.3  漏洞详细解释    168
13.3.1  旁路    168
13.3.2  TMI:太多的信息!    169
13.3.3  信息流安全模型    171
13.3.4  受漏洞影响的C#(以
    及其他的编程语言)    173
13.3.5  相关漏洞    173
13.4  查找漏洞模式    173
13.5  在代码审查中查找该漏洞    173
13.6  发现该漏洞的测试技巧    175
13.7  漏洞示例    175
13.7.1  Dan Bernstein的
    AES定时攻击    175
13.7.2  CAN-2005-1411    176
13.7.3  CAN-2005-1133    176
13.8  弥补措施    177
13.8.1  C#(以及其他编程语言)
    弥补措施    177
13.8.2  本地网络的弥补措施    178
13.9  其他防御措施    178
13.10  其他资源    178
13.11  本章总结    179
第14章  不恰当的文件访问    181
14.1  漏洞概述    181
14.2  受影响的编程语言    182
14.3  漏洞详细解释    182
14.3.1  在Windows上受
    漏洞影响的C/C++    182
14.3.2  受漏洞影响的C/C++    183
14.3.3  受漏洞影响的Perl    183
14.3.4  受漏洞影响的Python    183
14.3.5  相关漏洞    184
14.4  查找漏洞模式    184
14.5  在代码审查中查找该漏洞    184
14.6  发现该漏洞的测试技巧    185
14.7  漏洞示例    186
14.7.1  CAN-2005-0004    186
14.7.2  CAN-2005-0799    186
14.7.3  CAN-2004-0452和
    CAN-2004-0448    186
14.7.4  CVE-2004-0115
    Microsoft的Mac
    版Virtual PC    186
14.8  弥补措施    187
14.8.1  Perl弥补措施    187
14.8.2  *nix上C/C++的
    弥补措施    187
14.8.3  Windows上C/C++的
    弥补措施    188
14.8.4  获取用户临时文件
    的目录    188
14.8.5  .NET代码弥补措施    188
14.9  其他防御措施    189
14.10  其他资源    189
14.11  本章总结    189
第15章  轻信网络域名解析    191
15.1  漏洞概述    191
15.2  受影响的编程语言    191
15.3  漏洞详细解释    192
15.3.1  受漏洞影响的应用程序    194
15.3.2  相关漏洞    194
15.4  查找漏洞模式    195
15.5  在代码审查中查找该漏洞    195
15.6  发现该漏洞的测试技巧    195
15.7  漏洞示例    196
15.7.1  CVE-2002-0676    196
15.7.2  CVE-1999-0024    196
15.8  弥补措施    197
15.9  其他资源    198
15.10  本章总结    198
第16章  竞争条件    199
16.1  漏洞概述    199
16.2  受影响的编程语言    199
16.3  漏洞详细解释    199
16.3.1  受漏洞影响的代码    201
16.3.2  相关漏洞    201
16.4  查找漏洞模式    202
16.5  在代码审查中查找该漏洞    202
16.6  发现该漏洞的测试技巧    203
16.7  漏洞示例    204
16.7.1  CVE-2001-1349    204
16.7.2  CAN-2003-1073    204
16.7.3  CVE-2000-0849    204
16.8  弥补措施    205
16.9  其他防御措施    206
16.10  其他资源    206
16.11  本章总结    207
第17章  未认证的密钥交换    209
17.1  漏洞概述    209
17.2  受影响的语言    209
17.3  漏洞详细解释    209
17.4  查找漏洞模式    211
17.5  在代码审查中查找该漏洞    211
17.6  发现该漏洞的测试技巧    212
17.7  漏洞示例    212
17.7.1  Novell Netware MITM
    攻击    212
17.7.2  CAN-2004-0155    212
17.8  弥补措施    213
17.9  其他防御措施    213
17.10  其他资源    213
17.11  本章总结    214
第18章  密码学强度随机数    215
18.1  漏洞概述    215
18.2  受影响的编程语言    215
18.3  漏洞详细解释    215
18.3.1  受漏洞影响的非
    密码学生成器    216
18.3.2  受漏洞影响的
    密码字生成器    216
18.3.3  受漏洞影响的真
    随机数生成器    217
18.3.4  相关漏洞    218
18.4  查找漏洞模式    218
18.5  在代码审查中查找该漏洞    218
18.5.1  什么时候应该
    使用随机数    218
18.5.2  查找使用PRNG
    的地方    218
18.5.3  判断CRNG是否
    正确地播种    219
18.6  发现该漏洞的测试技巧    220
18.7  漏洞示例    220
18.7.1  Netscape浏览器    220
18.7.2  OpenSSL问题    221
18.8  弥补措施    221
18.8.1  Windows    221
18.8.2  .NET代码    222
18.8.3  UNIX    222
18.8.4  Java    223
18.8.5  重放数字流    223
18.9  其他防御措施    224
18.10  其他资源    224
18.11  本章总结    224
第19章  不良可用性    225
19.1  漏洞概述    225
19.2  受影响的语言    225
19.3  漏洞详细解释    225
19.3.1  谁是您的用户?    226
19.3.2  雷区:向您的用户呈现安全相关的信息    227
19.3.3  相关漏洞    227
19.4  查找漏洞模式    227
19.5  在代码审查中寻找该漏洞    227
19.6  发现该漏洞的测试技巧    228
19.7  漏洞示例    228
19.7.1  SSL/TLS证书认证    228
19.7.2  Internet Explorer 4.0
    根证书安装    229
19.8  弥补措施    230
19.8.1  简化UI以便用户参与    230
19.8.2  为用户做出安全决策    230
19.8.3  使有选择的松弛安全策
    略变得简单    231
19.8.4  明确指出后果    232
19.8.5  提供可操作性    235
19.8.6  提供集中管理    235
19.9  其他资源    235
19.10  本章总结    236
附录A  19个致命漏洞与OWASP
    的“前10名”漏洞的
    对应关系    237
附录B  “要”与“不要”提示总结    239
译者术语表    247

本目录推荐