本书本着小巧、易读、实用的原则,涵盖了目前流行的编程语言和运行平台,覆盖了最为常见的与软件安全相关的19个致命漏洞。该书采用理论和实践相结合的方式,对于每个漏洞都给出了详细的描述、产生的原理、查找的方法、弥补的措施等内容,同时,对于每个漏洞,作者还精选了系统中实际出现的例子加以说明,使其更直观,令读者印象更为深刻。另外,在弥补措施中,作者结合多种不同的语言给出具体的代码弥补方案,从而更增强了实用性。
网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 一个都不能有--软件的19个致命安全漏洞/安全技术经典译丛 |
分类 | |
作者 | (美)豪沃//勒伯兰克//维加 |
出版社 | 清华大学出版社 |
下载 | |
简介 | 编辑推荐 本书本着小巧、易读、实用的原则,涵盖了目前流行的编程语言和运行平台,覆盖了最为常见的与软件安全相关的19个致命漏洞。该书采用理论和实践相结合的方式,对于每个漏洞都给出了详细的描述、产生的原理、查找的方法、弥补的措施等内容,同时,对于每个漏洞,作者还精选了系统中实际出现的例子加以说明,使其更直观,令读者印象更为深刻。另外,在弥补措施中,作者结合多种不同的语言给出具体的代码弥补方案,从而更增强了实用性。 目录 第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 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。