http://www.china-pub.com/51451&ref=browse#ml
基本信息
原书名: 24 Deadly Sins of Software Security: Programming Flaws and How to Fix Them
原出版社: McGraw-Hill Osborne Media
作者: (美)Michael Howard David LeBlanc John Viega [作译者介绍]
译者: 董艳;包战;程文俊[同译者作品]
丛书名: 安全技术经典译丛
出版社:清华大学出版社
ISBN:9787302226345
上架时间:2010-6-18
出版日期:2010 年6月
开本:16开
页码:306
版次:1-1
所属分类: 计算机 > 安全 > 综合
编辑推荐
由著名软件安全专家编写的安全漏洞专业书籍
发现和修复各种安全漏洞的最佳指导
丰富的安全漏洞示例以及修复措施
作者长期实践经验的总结
目录
第Ⅰ部分 Web应用程序漏洞
第1章 SQL注入 3
1.1 漏洞概述 3
1.2 CWE参考 4
1.3 受影响的编程语言 5
1.4 漏洞详述 5
1.4.1 关于LINQ的注意事项 5
1.4.2 受漏洞影响的C# 5
1.4.3 受漏洞影响的PHP 6
1.4.4 受漏洞影响的Perl/CGI 7
1.4.5 受漏洞影响的Python 7
1.4.6 受漏洞影响的Ruby on Rails 8
1.4.7 受漏洞影响的Java和JDBC 8
1.4.8 受漏洞影响的C/C++ 9
1.4.9 受漏洞影响的SQL 10
1.4.10 相关漏洞 11
1.5 查找漏洞模式 11
1.6 在代码审查期间查找该漏洞 12
1.7 发现该漏洞的测试技巧 12
1.8 漏洞示例 14
.1.8.1 CVE-2006-4953 15
1.8.2 CVE-2006-4592 16
1.9 弥补措施 16
1.9.1 验证所有的输入 16
1.9.2 使用prepared语句构造SQL语句 16
1.9.3 C#弥补措施 17
1.9.4 PHP 5.0 以及MySQL 1.1或者以后版本的弥补措施 17
1.9.5 Perl/CGI弥补措施 18
1.9.6 Python弥补措施 19
1.9.7 Ruby on Rails弥补措施 19
1.9.8 使用JDBC的Java弥补措施 19
1.9.9 ColdFusion弥补措施 20
1.9.10 SQL弥补措施 20
1.10 其他防御措施 22
1.10.1 加密敏感数据、PII数据或机密数据 22
1.10.2 使用URLScan 22
1.11 其他资源 22
1.12 本章小结 24
第2章 与Web服务器相关的漏洞(XSS、XSRF和响应拆分) 25
2.1 漏洞概述 25
2.2 CWE参考 26
2.3 受影响的编程语言 26
2.4 漏洞详述 26
2.4.1 基于DOM的XSS或类型0 26
2.4.2 反射XSS,非持续XSS或类型1 27
2.4.3 存储XSS,持续XSS或类型2 28
2.4.4 HTTP响应拆分 29
2.4.5 伪造跨站点请求 31
2.4.6 受漏洞影响的Ruby on Rails(XSS) 32
2.4.7 受漏洞影响的Ruby on Rails(响应拆分) 32
2.4.8 受漏洞影响的使用Python编写的CGI应用程序(XSS) 32
2.4.9 受漏洞影响的使用Python编写的CGI应用程序(响应拆分) 32
2.4.10 受漏洞影响的ColdFusion(XSS) 33
2.4.11 受漏洞影响的ColdFusion(响应拆分) 33
2.4.12 受漏洞影响的C/C++ ISAPI(XSS) 33
2.4.13 受漏洞影响的C/C++ ISAPI(响应拆分) 33
2.4.14 受漏洞影响的ASP(XSS) 34
2.4.15 受漏洞影响的ASP(响应拆分) 34
2.4.16 受漏洞影响的ASP.NET(XSS) 34
2.4.17 受漏洞影响的ASP.NET(响应拆分) 34
2.4.18 受漏洞影响的JSP(XSS) 34
2.4.19 受漏洞影响的JSP(响应拆分) 35
2.4.20 受漏洞影响的PHP(XSS) 35
2.4.21 受漏洞影响的PHP(响应拆分) 35
2.4.22 受漏洞影响的使用Perl的CGI (XSS) 35
2.4.23 受漏洞影响的mod_perl(XSS) 35
2.4.24 受漏洞影响的mod_perl(响应拆分) 36
2.4.25 受漏洞影响的HTTP请求(XSRF) 36
2.5 查找漏洞模式 36
2.6 在代码审查期间查找XSS漏洞 36
2.7 发现该漏洞的测试技巧 38
2.8 漏洞示例 39
2.8.1 CVE-2003-0712 Microsoft Exchange 5.5 Outlook Web Access XSS 39
2.8.2 CVE-2004-0203 Microsoft Exchange 5.5 Outlook Web Access响应拆分 39
2.8.3 CVE-2005-1674 Help Center Live(XSS和XSRF) 40
2.9 弥补措施(XSS和响应拆分) 40
2.9.1 Ruby on Rails弥补措施(XSS) 40
2.9.2 ISAPI C/C++弥补措施(XSS) 40
2.9.3 Python弥补措施(XSS) 41
2.9.4 ASP弥补措施(XSS) 42
2.9.5 ASP.NET Web表单弥补措施(XSS) 42
2.9.6 ASP.NET Web表单弥补措施(RS) 43
2.9.7 JSP弥补措施 43
2.9.8 PHP弥补措施(XSS) 45
2.9.9 CGI弥补措施(XSS) 45
2.9.10 mod_perl弥补措施(XSS) 46
2.10 弥补步骤(XSRF) 47
2.10.1 关于超时的注意事项 47
2.10.2 XSRF和POST与GET的注意事项 47
2.10.3 Ruby on Rails弥补措施(XSRF) 48
2.10.4 ASP.NET Web表单弥补措施(XSRF) 48
2.10.5 HTML编码的非严格用法 48
2.11 其他防御措施 49
2.11.1 使用HttpOnly cookie 49
2.11.2 对标记的属性使用双引号 50
2.11.3 考虑使用ASP.NET的ViewStateUserKey 50
2.11.4 考虑使用ASP.NET的ValidateRequest 50
2.11.5 使用ASP.NET安全运行时引擎的安全性能 51
2.11.6 考虑使用OWASP CSRFGuard 51
2.11.7 使用Apache::TaintRequest 51
2.11.8 使用UrlScan 51
2.11.9 设置默认的字符集 51
2.12 其他资源 52
2.13 本章小结 53
第3章 与Web客户端相关的漏洞(XSS) 55
3.1 漏洞概述 55
3.2 CWE资源 56
3.3 受影响的编程语言 56
3.4 漏洞详述 56
3.4.1 有漏洞的gadget的秘密 57
3.4.2 受漏洞影响的JavaScript和HTML 58
3.5 查找漏洞模式 58
3.6 在代码审查期间查找该漏洞 59
3.7 发现该漏洞的测试技巧 59
3.8 漏洞示例 60
3.8.1 Microsoft ISA Server XSS CVE-2003-0526 60
3.8.2 Windows Vista Sidebar CVE-2007-3033和CVE-2007-3032 60
3.8.3 Yahoo! Instant Messenger ActiveX控件CVE-2007-4515 61
3.9 弥补措施 61
3.9.1 不要相信输入 61
3.9.2 用更安全的结构替代不安全的结构 62
3.10 其他弥补措施 63
3.11 其他资源 63
3.12 本章小结 63
第4章 使用Magic URL、可预计的cookie及隐藏表单字段 65
4.1 漏洞概述 65
4.2 CWE参考 65
4.3 受影响的编程语言 65
4.4 漏洞详述 66
4.4.1 Magic URL 66
4.4.2 可预计的Cookie 66
4.4.3 隐藏的表单字段 67
4.4.4 相关漏洞 67
4.5 查找漏洞模式 67
4.6 在代码审查期间查找该漏洞 67
4.7 发现该漏洞的测试技巧 68
4.8 漏洞示例 69
4.9 弥补措施 70
4.9.1 攻击者浏览数据 70
4.9.2 攻击者重放数据 70
4.9.3 攻击者预测数据 71
4.9.4 攻击者更改数据 72
4.10 其他防御措施 73
4.11 其他资源 73
4.12 本章小结 73
第Ⅱ部分 实 现 漏 洞
第5章 缓冲区溢出 77
5.1 漏洞概述 77
5.2 CWE参考 78
5.3 受影响的编程语言 78
5.4 漏洞详述 79
5.4.1 64位的含义 82
5.4.2 受漏洞影响的C/C++ 82
5.4.3 相关漏洞 84
5.5 查找漏洞模式 85
5.6 在代码审查期间查找该漏洞 85
5.7 发现该漏洞的测试技巧 85
5.8 漏洞示例 86
5.8.1 CVE-1999-0042 86
5.8.2 CVE-2000-0389~CVE-2000-0392 87
5.8.3 CVE-2002-0842、CVE-2003-0095、CAN-2003-0096 87
5.8.4 CAN-2003-0352 88
5.9 弥补措施 88
5.9.1 替换危险的字符串处理函数 88
5.9.2 审计分配操作 89
5.9.3 检查循环和数组访问 89
5.9.4 使用C++字符串来替换C字符串缓冲区 89
5.9.5 使用STL容器替代静态数组 89
5.9.6 使用分析工具 89
5.10 其他防御措施 90
5.10.1 栈保护 90
5.10.2 不可执行的栈和堆 90
5.11 其他资源 91
5.12 本章小结 92
第6章 格式化字符串问题 93
6.1 漏洞概述 93
6.2 CWE参考 94
6.3 受影响的编程语言 94
6.4 漏洞详述 94
6.4.1 受漏洞影响的C/C++ 96
6.4.2 相关漏洞 97
6.5 查找漏洞模式 97
6.6 在代码审查期间查找该漏洞 97
6.7 发现该漏洞的测试技巧 97
6.8 漏洞示例 98
6.8.1 CVE-2000-0573 98
6.8.2 CVE-2000-0844 98
6.9 弥补措施 98
6.10 其他防御措施 99
6.11 其他资源 99
6.12 本章小结 100
第7章 整数溢出 101
7.1 漏洞概述 101
7.2 CWE参考 101
7.3 受影响的编程语言 102
7.4 漏洞详述 102
7.4.1 受漏洞影响的C和C++ 102
7.4.2 受漏洞影响的C# 108
7.4.3 受漏洞影响的Visual Basic 和Visual Basic .NET 110
7.4.4 受漏洞影响的Java 110
7.4.5 受漏洞影响的Perl 111
7.5 查找漏洞模式 112
7.6 在代码审查期间查找漏洞 112
7.6.1 C/C++ 112
7.6.2 C# 114
7.6.3 Java 114
7.6.4 Visual Basic和Visual Basic .NET 114
7.6.5 Perl 115
7.7 发现该漏洞的测试技巧 115
7.8 漏洞示例 115
7.8.1 在Apple Mac OS X的SearchKit API中的多个整数溢出 115
7.8.2 Google Android SDK中的整数溢出 115
7.8.3 在Windows脚本引擎中存在的漏洞可以导致任意代码执行 116
7.8.4 HTR块编码中的堆溢出可以导致Web服务器遭到入侵 116
7.9 弥补措施 116
7.9.1 执行数学计算 116
7.9.2 不使用技巧 117
7.9.3 编写类型转换 118
7.9.4 使用SafeInt 119
7.10 其他防御措施 120
7.11 其他资源 120
7.12 本章小结 120
第8章 C++灾难 121
8.1 漏洞概述 121
8.2 CWE参考 121
8.3 受影响的编程语言 122
8.4 漏洞详述 122
8.4.1 有漏洞的delete调用 122
8.4.2 有漏洞的复制构造函数 123
8.4.3 有漏洞的构造函数 124
8.4.4 有漏洞的没有重新初始化 124
8.4.5 忽略STL 125
8.4.6 有漏洞的指针初始化 125
8.5 查找漏洞模式 126
8.6 在代码审查期间查找该漏洞 126
8.7 发现该漏洞的测试技巧 127
8.8 漏洞示例 127
8.9 弥补措施 127
8.9.1 new和delete不匹配的弥补措施 127
8.9.2 复制构造函数的弥补措施 127
8.9.3 构造函数初始化的弥补措施 128
8.9.4 重新初始化的弥补措施 129
8.9.5 STL弥补措施 129
8.9.6 未初始化指针的弥补措施 129
8.10 其他防御措施 129
8.11 其他资源 130
8.12 本章小结 130
第9章 捕获异常 131
9.1 漏洞概述 131
9.2 CWE参考 131
9.3 受影响的编程语言 131
9.4 漏洞详述 131
9.4.1 有漏洞的C++异常 132
9.4.2 有漏洞的结构化异常处理(SEH) 134
9.4.3 有漏洞的信号处理 136
9.4.4 有漏洞的C#、VB.NET和Java 136
9.4.5 有漏洞的Ruby 137
9.5 查找漏洞模式 137
9.6 在代码审查期间查找该漏洞 137
9.7 查找漏洞的测试技术 138
9.8 漏洞示例 139
9.9 弥补措施 139
9.9.1 C++弥补措施 139
9.9.2 SEH弥补措施 139
9.9.3 信号处理程序的弥补措施 140
9.10 其他资源 140
9.11 本章小结 140
第10章 命令注入 141
10.1 漏洞概述 141
10.2 CWE参考 141
10.3 受影响的编程语言 142
10.4 漏洞详述 142
10.5 查找漏洞模式 144
10.6 在代码审查期间查找该漏洞 144
10.7 发现该漏洞的测试技巧 145
10.8 漏洞示例 145
10.8.1 CAN-2001-1187 146
10.8.2 CAN-2002-0652 146
10.9 弥补措施 146
10.9.1 数据验证 147
10.9.2 当检查失败时 149
10.10 其他防御措施 149
10.11 其他资源 149
10.12 本章小结 150
第11章 未能正确处理错误 151
11.1 漏洞概述 151
11.2 CWE参考 151
11.3 受影响的编程语言 151
11.4 漏洞详细解释 152
11.4.1 产生太多的信息 152
11.4.2 忽略了错误 152
11.4.3 曲解了错误 153
11.4.4 使用了无用的返回值 153
11.4.5 使用了无错误的返回值 153
11.4.6 受漏洞影响的C/C++ 153
11.4.7 Windows上受漏洞影响的C/C++ 154
11.4.8 相关漏洞 155
11.5 查找漏洞模式 155
11.6 在代码审查期间查找该漏洞 155
11.7 发现该漏洞的测试技巧 155
11.8 漏洞示例 155
11.8.1 CVE-2007-3798 tcpdump print-bgp.c缓冲区溢出漏洞 155
11.8.2 CAN-2004-0077 Linux内核do_mremap 155
11.9 弥补措施 156
11.10 其他资源 156
11.11 本章小结 157
第12章 信息泄漏 159
12.1 漏洞概述 159
12.2 CWE参考 160
12.3 受影响的编程语言 160
12.4 漏洞详述 160
12.4.1 旁路 160
12.4.2 TMI:太多信息 161
12.4.3 信息流安全模型 163
12.4.4 受漏洞影响的C#(以及其他编程语言) 164
12.4.5 相关漏洞 165
12.5 查找漏洞模式 165
12.6 在代码审查期间查找该漏洞 165
12.7 发现该漏洞的测试技巧 166
12.8 漏洞示例 166
12.8.1 CVE-2008-4638 166
12.8.2 CVE-2005-1133 167
12.9 弥补措施 167
12.9.1 C#(以及其他编程语言)的弥补措施 168
12.9.2 本地网络的弥补措施 168
12.10 其他防御措施 168
12.11 其他资源 169
12.12 本章小结 170
第13章 竞态条件 171
13.1 漏洞概述 171
13.2 CWE参考 171
13.3 受影响的编程语言 172
13.4 漏洞详述 172
13.4.1 受漏洞影响的代码 173
13.4.2 相关漏洞 174
13.5 查找漏洞模式 174
13.6 在代码审查期间查找该漏洞 174
13.7 发现该漏洞的测试技巧 175
13.8 漏洞示例 176
13.8.1 CVE-2008-0379 176
13.8.2 CVE-2008-2958 176
13.8.3 CVE-2001-1349 176
13.8.4 CAN-2003-1073 176
13.8.5 CVE-2000-0849 177
13.9 弥补措施 177
13.10 其他防御措施 179
13.11 其他资源 179
13.12 本章小结 179
第14章 不良可用性 181
14.1 漏洞概述 181
14.2 CWE参考 181
14.3 受影响的编程语言 182
14.4 漏洞详述 182
14.4.1 谁是您的用户 182
14.4.2 雷区:向用户呈现安全信息 183
14.4.3 相关漏洞 183
14.5 查找漏洞模式 183
14.6 在代码审查期间查找该漏洞 184
14.7 发现该漏洞的测试技巧 184
14.8 漏洞示例 184
14.8.1 SSL/TLS证书认证 185
14.8.2 Internet Explorer 4.0根证书安装 185
14.9 弥补措施 186
14.9.1 简化UI以便用户参与 186
14.9.2 为用户做出安全决策 186
14.9.3 易于有选择地放宽安全策略 187
14.9.4 明确指出后果 188
14.9.5 提供可操作性 189
14.9.6 提供集中管理 189
14.10 其他资源 190
14.11 本章小结 191
第15章 不易更新 193
15.1 漏洞概述 193
15.2 CWE参考 193
15.3 受影响的编程语言 193
15.4 漏洞详述 194
15.4.1 有漏洞的附加软件安装 194
15.4.2 有漏洞的访问控制 194
15.4.3 有漏洞的提示疲劳 194
15.4.4 有漏洞的无知 194
15.4.5 有漏洞的无通知更新 194
15.4.6 有漏洞的一次更新一个系统 195
15.4.7 有漏洞的强制重启动 195
15.4.8 有漏洞的难以打补丁 195
15.4.9 有漏洞的缺乏恢复计划 195
15.4.10 有漏洞的信任DNS 195
15.4.11 有漏洞的信任补丁服务器 195
15.4.12 有漏洞的更新签名 195
15.4.13 有漏洞的打开更新包 196
15.4.14 有漏洞的用户应用程序的更新 196
15.5 查找漏洞模式 196
15.6 在代码审查期间查找漏洞 197
15.7 发现漏洞的测试技巧 197
15.8 漏洞示例 197
15.8.1 苹果公司的QuickTime更新 197
15.8.2 Microsoft SQL Server 2000补丁 197
15.8.3 谷歌的Chrome浏览器 197
15.9 弥补措施 198
15.9.1 安装附带软件的弥补措施 198
15.9.2 访问控制的弥补措施 198
15.9.3 提示疲劳的弥补措施 198
15.9.4 用户无知的弥补措施 198
15.9.5 无通知更新的弥补措施 199
15.9.6 一次更新一个系统的弥补措施 199
15.9.7 强制重启动的弥补措施 199
15.9.8 难以打补丁的弥补措施 199
15.9.9 缺乏恢复计划的弥补措施 200
15.9.10 轻信DNS的弥补措施 200
15.9.11 轻信补丁服务器的弥补措施 200
15.9.12 更新签名的弥补措施 200
15.9.13 打开更新包的弥补措施 201
15.9.14 用户应用程序更新的弥补措施 201
15.10 其他防御措施 201
15.11 其他资源 202
15.12 本章小结 202
第16章 执行代码的权限过大 203
16.1 漏洞概述 203
16.2 CWE参考 203
16.3 受影响的编程语言 203
16.4 漏洞详述 204
16.5 查找漏洞模式 205
16.6 在代码审查期间查找漏洞 205
16.7 发现漏洞的测试技巧 205
16.8 漏洞示例 206
16.9 弥补措施 206
16.9.1 Windows、C和C++ 206
16.9.2 Linux、BSD和Mac OS X 208
16.9.3 .NET代码 209
16.10 其他防御措施 209
16.11 其他资源 209
16.12 本章小结 210
第17章 未能安全地存储数据 211
17.1 漏洞概述 211
17.2 CWE参考 211
17.3 受影响的编程语言 211
17.4 漏洞详述 212
17.4.1 在存储的数据上采用脆弱的访问控制 212
17.4.2 受漏洞影响的访问控制 213
17.4.3 已存储数据的弱加密 215
17.4.4 相关漏洞 215
17.5 查找漏洞模式 215
17.6 在代码审查期间查找漏洞 216
17.7 发现该漏洞的测试技巧 216
17.8 漏洞示例 218
17.8.1 CVE-2000-0100 218
17.8.2 CVE-2005-1411 218
17.8.3 CVE-2004-0907 218
17.9 弥补措施 218
17.9.1 Windows上C++的弥补措施 219
17.9.2 Windows上C#的弥补措施 220
17.9.3 C/C++的弥补措施(GNOME) 220
17.10 其他防御措施 221
17.11 其他资源 221
17.12 本章小结 221
第18章 移动代码的漏洞 223
18.1 漏洞概述 223
18.2 CWE参考 224
18.3 受影响的编程语言 225
18.4 漏洞详述 225
18.4.1 有漏洞的移动代码 225
18.4.2 有漏洞的移动代码容器 225
18.4.3 相关的漏洞 225
18.5 查找漏洞模式 226
18.6 在代码审查期间查找漏洞 226
18.7 发现该漏洞的测试技巧 227
18.8 漏洞示例 227
18.8.1 CVE-2006-2198 227
18.8.2 CVE-2008-1472 227
18.8.3 CVE-2008-5697 227
18.9 弥补措施 228
18.9.1 移动代码容器的弥补措施 228
18.9.2 移动代码的弥补措施 229
18.10 其他防御措施 229
18.11 其他资源 229
18.12 本章小结 230
第Ⅲ部分 加 密 漏 洞
第19章 使用基于弱密码的系统 233
19.1 漏洞概述 233
19.2 CWE参考 233
19.3 受影响的编程语言 234
19.4 漏洞详述 234
19.4.1 密码泄露 234
19.4.2 允许使用弱密码 235
19.4.3 密码迭代 235
19.4.4 不要求改变密码 235
19.4.5 默认密码 235
19.4.6 重放攻击 235
19.4.7 存储密码而不是密码验证器 236
19.4.8 对密码验证器的暴力攻击 236
19.4.9 泄露某个失败源自不正确的用户或密码 237
19.4.10 在线攻击 237
19.4.11 返回遗忘的密码 237
19.4.12 相关漏洞 237
19.5 查找漏洞模式 238
19.5.1 密码泄露 238
19.5.2 允许弱密码 238
19.5.3 迭代密码 238
19.5.4 从不改变密码 238
19.5.5 默认密码 238
19.5.6 重放攻击 238
19.5.7 对密码验证器进行暴力攻击 239
19.5.8 存储密码而不是密码验证器 239
19.5.9 在线攻击 239
19.5.10 返回遗忘的密码 239
19.6 在代码审查期间查找该漏洞 239
19.7 发现该漏洞的测试技巧 240
19.7.1 密码泄露 240
19.7.2 重放攻击 240
19.7.3 暴力攻击 240
19.8 漏洞示例 241
19.8.1 Zombies Ahead 241
19.8.2 要修改的Microsoft Office密码 241
19.8.3 Adobe Acrobat加密 241
19.8.4 WU-ftpd核心转储 242
19.8.5 CVE-2005-1505 242
19.8.6 CVE-2005-0432 242
19.8.7 TENEX漏洞 242
19.8.8 Sarah Palin雅虎电子邮件入侵 243
19.9 弥补措施 243
19.9.1 密码泄露的弥补措施 243
19.9.2 弱密码的弥补措施 243
19.9.3 迭代密码的弥补措施 243
19.9.4 密码改变的弥补措施 244
19.9.5 默认密码的弥补措施 244
19.9.6 重放攻击的弥补措施 244
19.9.7 密码验证器的弥补措施 244
19.9.8 在线暴力攻击的弥补措施 245
19.9.9 登录信息泄露的弥补措施 246
19.9.10 忘记密码的弥补措施 246
19.10 其他防御措施 246
19.11 其他资源 246
19.12 本章小结 247
第20章 弱随机数 249
20.1 漏洞概述 249
20.2 CWE参考 249
20.3 受影响的编程语言 250
20.4 漏洞详述 250
20.4.1 受漏洞影响的非密码生成器 250
20.4.2 受漏洞影响的密码生成器 251
20.4.3 受漏洞影响的真随机数生成器 251
20.4.4 相关漏洞 252
20.5 查找漏洞模式 252
20.6 在代码审查期间查找该漏洞 252
20.6.1 什么时候应该使用随机数 252
20.6.2 查找使用PRNG的地方 253
20.6.3 判断CRNG是否正确地播种 253
20.7 发现该漏洞的测试技巧 254
20.8 漏洞示例 254
20.8.1 TCP/IP序列号 254
20.8.2 ODF文档加密标准 255
20.8.3 CVE-2008-0166 Debian“随机”密钥的生成 255
20.8.4 Netscape浏览器 256
20.9 弥补措施 256
20.9.1 Windows、C和C++ 256
20.9.2 带TPM支持的Windows 257
20.9.3 .NET代码 258
20.9.4 UNIX 258
20.9.5 Java 259
20.9.6 重放数字流 259
20.10 其他防御措施 260
20.11 其他资源 260
20.12 本章小结 261
第21章 使用错误的密码技术 263
21.1 漏洞概述 263
21.2 CWE参考 264
21.3 受影响的编程语言 264
21.4 漏洞详述 264
21.4.1 使用自制的加密算法 264
21.4.2 在高级协议可用时,从低级算法中创建一个协议 264
21.4.3 使用脆弱的密码基元 265
21.4.4 不正确地使用密码基元 265
21.4.5 使用错误的密码基元 267
21.4.6 使用错误的通信协议 267
21.4.7 未使用salt 267
21.4.8 未使用随机IV 268
21.4.9 使用脆弱的密钥派生函数 268
21.4.10 未提供完整性检查 268
21.4.11 不使用敏捷加密 268
21.4.12 相关的漏洞 269
21.5 查找漏洞模式 269
21.6 在代码审查期间查找漏洞 269
21.6.1 使用自制的加密算法(VB.NET和C++) 269
21.6.2 在高级协议可用时,从低级算法中创建一个协议 270
21.6.3 使用脆弱的密码基元(C#和C++) 270
21.6.4 不正确地使用密码基元(Ruby、C#和C++) 271
21.6.5 使用错误的密码基元 271
21.6.6 使用错误的通信协议 271
21.7 发现该漏洞的测试技巧 272
21.8 漏洞示例 272
21.8.1 数字证书和脆弱的散列 272
21.8.2 Microsoft Office XOR困惑 272
21.8.3 Adobe Acrobat和Microsoft Office的脆弱KDF 272
21.9 弥补措施 273
21.9.1 使用自制加密算法的弥补措施 273
21.9.2 在高级协议可用时,从低级算法中创建一个协议的弥补措施 273
21.9.3 使用脆弱的密码基元的弥补措施 273
21.9.4 不正确地使用密码基元的弥补措施 274
21.9.5 使用错误的密码基元的弥补措施 275
21.9.6 未使用salt的弥补措施 275
21.9.7 未使用随机IV的弥补措施 275
21.9.8 使用脆弱的密钥派生函数的弥补措施 275
21.9.9 未提供完整性检查的弥补措施 276
21.9.10 不使用敏捷加密的弥补措施 276
21.9.11 使用错误通信协议的弥补措施 277
21.10 其他防御措施 277
21.11 其他资源 277
21.12 本章小结 277
第IV部分 联 网 漏 洞
第22章 未能保护好网络通信 281
22.1 漏洞概述 281
22.2 CWE参考 282
22.3 受影响的编程语言 282
22.4 漏洞详述 282
22.5 查找漏洞模式 285
22.6 在代码审查期间查找漏洞 285
22.7 发现该漏洞的测试技巧 285
22.8 漏洞示例 286
22.8.1 TCP/IP 286
22.8.2 电子邮件协议 286
22.8.3 电子商务 286
22.9 弥补措施 287
22.10 其他防御措施 287
22.11 其他资源 287
22.12 本章总结 288
第23章 未能正确使用PKI,尤其是SSL 289
23.1 漏洞概述 289
23.2 CWE参考 290
23.3 受影响的编程语言 290
23.4 漏洞详述 290
23.5 查找漏洞模式 291
23.6 在代码审查期间查找该漏洞 291
23.7 发现该漏洞的测试技巧 292
23.8 漏洞示例 293
23.8.1 CVE-2007-4680 293
23.8.2 CVE-2008-2420 293
23.9 弥补措施 294
23.10 其他防御措施 297
23.11 其他资源 297
23.12 本章小结 297
第24章 轻信网络域名解析 299
24.1 漏洞概述 299
24.2 CWE参考 299
24.3 受影响的编程语言 299
24.4 漏洞详述 300
24.4.1 受漏洞影响的应用程序 302
24.4.2 相关漏洞 303
24.5 查找漏洞模式 303
24.6 在代码审查期间查找该漏洞 303
24.7 发现该漏洞的测试技巧 304
24.8 漏洞示例 304
24.8.1 CVE-2002-0676 304
24.8.2 CVE-1999-0024 305
24.9 弥补措施 305
24.10 其他资源 306
24.11 本章小结 306
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!