图书介绍
软件安全的24宗罪 编程缺陷与修复之道PDF|Epub|txt|kindle电子书版本网盘下载
![软件安全的24宗罪 编程缺陷与修复之道](https://www.shukui.net/cover/7/30262709.jpg)
- 董艳,包战,程文俊著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302226345
- 出版时间:2010
- 标注页数:306页
- 文件大小:24MB
- 文件页数:329页
- 主题词:软件开发-安全技术
PDF下载
下载说明
软件安全的24宗罪 编程缺陷与修复之道PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第Ⅰ部分 Web应用程序漏洞3
第1章 SQL注入3
1.1 漏洞概述3
1.2 CWE参考4
1.3 受影响的编程语言5
1.4 漏洞详述5
1.4.1 关于LINQ的注意事项5
1.4.2 受漏洞影响的C5
1.4.3 受漏洞影响的PHP6
1.4.4 受漏洞影响的Perl/CGI7
1.4.5 受漏洞影响的Python7
1.4.6 受漏洞影响的Ruby on Rails& 8
1.4.7 受漏洞影响的Java和JDBC 8
1.4.8 受漏洞影响的C/C++9
1.4.9 受漏洞影响的SQL10
1.4.10 相关漏洞11
1.5 查找漏洞模式11
1.6 在代码审查期间查找该漏洞12
1.7 发现该漏洞的测试技巧12
1.8 漏洞示例14
1.8.1 CVE-2006-495315
1.8.2 CVE-2006-459216
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 使用URLScan22
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或类型026
2.4.2 反射XSS,非持续XSS或类型127
2.4.3 存储XSS,持续XSS或类型228
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-07 12 Microsoft Exchange 5.5 Outlook Web Access XSS39
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 cookie49
2.11.2 对标记的属性使用双引号50
2.11.3 考虑使用ASP.NET的ViewStateUserKey50
2.11.4 考虑使用ASP.NET的ValidateRequest50
2.11.5 使用ASP.NET安全运行时引擎的安全性能51
2.11.6 考虑使用OWASP CSRFGuard51
2.11.7 使用Apache::TaintRequest51
2.11.8 使用UrlScan51
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和HTML58
3.5 查找漏洞模式58
3.6 在代码审查期间查找该漏洞59
3.7 发现该漏洞的测试技巧59
3.8 漏洞示例60
3.8.1 Microsoft ISA Server XSS CVE-2003-052660
3.8.2 Windows Vista Sidebar CVE-2007-3033和CVE-2007-303260
3.8.3 Yahoo!Instant Messenger ActiveX控件CVE-2007-451561
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 URL66
4.4.2 可预计的Cookie66
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
第Ⅱ部分 实现漏洞77
第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-004286
5.8.2 CVE-2000-0389~CVE-2000-039287
5.8.3 CVE-2002-0842、CVE-2003-0095、CAN-2003-009687
5.8.4 CAN-2003-035288
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-057398
6.8.2 CVE-2000-084498
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 受漏洞影响的C108
7.4.3 受漏洞影响的Visual Basic和Visual Basic .NET110
7.4.4 受漏洞影响的Java110
7.4.5 受漏洞影响的Perl111
7.5 查找漏洞模式112
7.6 在代码审查期间查找漏洞112
7.6.1 C/C++112
7.6.2 C114
7.6.3 Java114
7.6.4 Visual Basic和Visual Basic .NET114
7.6.5 Perl115
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 使用SafeInt119
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 忽略STL125
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和Java136
9.4.5 有漏洞的Ruby137
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-1187146
10.8.2 CAN-2002-0652146
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_mremap155
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-4638166
12.8.2 CVE-2005-1133167
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-0379176
13.8.2 CVE-2008-2958176
13.8.3 CVE-2001-1349176
13.8.4 CAN-2003-1073176
13.8.5 CVE-2000-0849177
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 有漏洞的信任DNS195
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 X208
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-0100218
17.8.2 CVE-2005-1411218
17.8.3 CVE-2004-0907218
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-2198227
18.8.2 CVE-2008-1472227
18.8.3 CVE-2008-5697227
18.9 弥补措施228
18.9.1 移动代码容器的弥补措施228
18.9.2 移动代码的弥补措施229
18.10 其他防御措施229
18.11 其他资源229
18.12 本章小结230
第Ⅲ部分 加密漏洞233
第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 Ahead241
19.8.2 要修改的Microsoft Office密码241
19.8.3 Adobe Acrobat加密241
19.8.4 WU-ftpd核心转储242
19.8.5 CVE-2005-1505242
19.8.6 CVE-2005-0432242
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支持的Windows257
20.9.3 .NET代码258
20.9.4 UNIX258
20.9.5 Java259
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 未使用salt267
21.4.8 未使用随机IV268
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的脆弱KDF272
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
第Ⅳ部分 联网漏洞281
第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/IP286
22.8.2 电子邮件协议286
22.8.3 电子商务286
22.9 弥补措施287
22.10 其他防御措施287
22.11 其他资源287
22.12 本章总结288
第23章 未能正确使用PKI,尤其是SSL289
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-4680293
23.8.2 CVE-2008-2420293
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-0676304
24.8.2 CVE-1999-0024305
24.9 弥补措施305
24.10 其他资源306
24.11 本章小结306