书籍详情

软件安全的24宗罪:编程缺陷与修复之道

软件安全的24宗罪:编程缺陷与修复之道

作者:(美)霍华德,(美)勒布朗,(美)维维 著,董艳,包战,程文俊 译

出版社:清华大学出版社

出版时间:2010-06-01

ISBN:9787302226345

定价:¥48.00

购买这本书可以去
内容简介
  软件安全是一个不断变化的主题,不仅不断出现新的漏洞类型,而且出现了漏洞的各种变体。《软件安全的24宗罪:编程缺陷与修复之道》总结了目前最危险的24个安全漏洞,给出了丰富的漏洞示例,并且提供了相应的修复措施。各种Web应用程序漏洞及修复措施,各种实现漏洞及修复措施,各种加密漏洞及修复措施,各种联网漏洞及修复措施。
作者简介
  Michael Howard是Microsoft公司Trustworthy Computing(TWC)Group(可信赖计算组)下属安全工程组的高级安全项目经理,负责管理整个公司的安全设计、编程和测试技术。Howard是一位Security Development Lifecycle(SDL)构建师,SDL是一个提高微软软件安全性的过程。Howard于1992年开始在微软公司工作,那时他在微软公司的新西兰分部,刚开始的前两年在产品支持服务小组为Windows和编译器提供技术支持,接着为MicrosoftConsulting Services提供技术支持,在此阶段,他为客户提供安全基础架构支持,并帮助设计定制的解决方案和软件开发。1997年,Howard调到美国,为微软的Web服务程序InternetInformation Services的Windows分部工作,2000年开始担任目前的工作。Howard是IEEE Security&Privacy一书的编辑,经常在与安全相关的会议上发言,定期发表安全编码和设计方面的文章。Howard与他人一起编写了6本安全图书,包括获奖书籍Writing Secure Code(第二版,Microsoft Press,2003年1、19 Deadly Sins ofSoftware Security(McGraw.Hill Professional出版社,2005年)、The Security Development Llyecycle(MicrosoftPress,2006年),最近出版的图书Writing Secure Code for WindoWS Vista(Microsoft Press,2007年)。David LeBlanc博士目前是Microsoft Office Trustworthy Computing工作组的一位主要软件开发工程师,负责设计和实现Microsoft Office中的安全技术。他还给其他开发人员提供安全编程技术方面的建议。自从1999年加入微软公司以来,他一直负责操作网络安全,还是可信赖主动计算(Trustworthy computing Initiative)的创始人之一。David与他人合著了获奖书籍WritingSecure Code(第二版,MicrosoftPress,2003年)、19 Deadly Sins of Software Security(McGraw-Hill Professional出版社,2005年)、WritingSecure Code for WindoWS Vista(Microsoft Press,2007年1,还发表了许多文章。 John Viega是McAfee的SaaS Business Unit的CTO,是19 deadly programmingflaws一书的作者,这本书引起了出版社和媒体的极大关注。本书就是以该书为基础的。他和其他人共同编写了许多其他关于软件安全的图书,包括Building Secure Software(Addison-Wesley Press,200 1年),Network Security with OpenSSL(O’Reilly Press,2002年),以及Myths of Security(O’Reilly Press,2009年)。他负责许多软件安全工具,是Mailman(GNU邮件列表管理器)的第一作者,他为IEEE和IETF中的标准化做了大量的工作,还与他人一起开发了GCM(NIST已标准化的一种加密算法)。John还是几家安全公司的安全顾问,包括Fortify和Bit9公司。他拥有Virginia大学的硕士和学士学位。
目录
第Ⅰ部分 Web应用程序漏洞
第1章 SQL注入
1.1 漏洞概述
1.2 CWE参考
1.3 受影响的编程语言
1.4 漏洞详述
1.4.1 关于LINQ的注意事项
1.4.2 受漏洞影响的C#
1.4.3 受漏洞影响的PHP
1.4.4 受漏洞影响的Perl/CGI
1.4.5 受漏洞影响的Python
1.4.6 受漏洞影响的RubyonRails
1.4.7 受漏洞影响的Java和JDBC
1.4.8 受漏洞影响的C/C++
1.4.9 受漏洞影响的SQL
1.4.10 相关漏洞
1.5 查找漏洞模式
1.6 在代码审查期间查找该漏洞
1.7 发现该漏洞的测试技巧
1.8 漏洞示例
1.8.1 CVE-2006.4 953
1.8.2 CVE-2006.4 592
1.9 弥补措施
1.9.1 验证所有的输入
1.9.2 使用prepared语句构造SQL语句
1.9.3 C#弥补措施
1.9.4 PHP5.0以及MySQL1.1 或者以后版本的弥补措施
1.9.5 Perl/CGI弥补措施
1.9.6 Python弥补措施
1.9.7 RubyonRails弥补措施
1.9.8 使用JDBC的Java弥补措施
1.9.9 ColdFusion弥补措施
1.9.1 0SQL弥补措施
1.10 其他防御措施
1.10.1 加密敏感数据、PII数据或机密数据
1.10.2 使用URLScan
1.11 其他资源
1.12 本章小结
第2章 与Web服务器相关的漏洞(XSS、XSRF和响应拆分)
2.1 漏洞概述
2.2 CWE参考
2.3 受影响的编程语言
2.4 漏洞详述
2.4.1 基于DOM的XSS或类型0
2.4.2 反射XSS,非持续XSS或类型1
2.4.3 存储XSS,持续XSS或类型2
2.4.4 HTTP响应拆分
2.4.5 伪造跨站点请求
2.4.6 受漏洞影响的RubyonRailsrXSS)
2.4.7 受漏洞影响的RubyonRails(响应拆分)
2.4.8 受漏洞影响的使用Python编写的CGI应用程序(XSS)
2.4.9 受漏洞影响的使用Python编写的CGI应用程序(响应拆分)
2.4.10 受漏洞影响的ColdFusion(XSS)
2.4.11 受漏洞影响的ColdFusion(响应拆分)
2.4.12 受漏洞影响的C/C++ISAPI(XSS)
2.4.13 受漏洞影响的C/C++ISAPI(响应拆分)
2.4.14 受漏洞影响的ASP(XSS)
2.4.15 受漏洞影响的ASP(响应拆分)
2.4.16 受漏洞影响的ASENET(XSS)
2.4.17 受漏洞影响的ASP.NET(响应拆分)
2.4.18 受漏洞影响的JSP(XSS)
2.4.19 受漏洞影响的JSP(响应拆分)
2.4.20 受漏洞影响的PHP(XSS)
2.4.21 受漏洞影响的PHP(响应拆分)
2.4.22 受漏洞影响的使用Perl的CGI(XSS)
2.4.23 受漏洞影响的modperl(XSS)
2.4.24 受漏洞影响的modperl(响应拆分)
2.4.25 受漏洞影响的HTTP请求(XSRF)
2.5 查找漏洞模式
2.6 在代码审查期间查找XSS漏洞
2.7 发现该漏洞的测试技巧
2.8 漏洞示例
2.8.1 CVE-2003-0712 Microsoft Exchange5.5 Outlook Web AccessXSS
2.8.2 CVE-2004-0203 Microsoft Exchange5.5 Outlook Web Access响应拆分
2.8.3 CVE-2005-1674 Help Center Live(XSS和XSRF)
2.9 弥补措施(XSS和响应拆分)
2.9.1 RubyonRails弥补措施(XSS)
2.9.2 ISAPIC/C++弥补措施(XSS)
2.9.3Python弥补措施(XSS)
2.9.4 ASP弥补措施(XSS)
2.9.5 ASP.NETweb表单弥补措施(XSS)
2.9.6 ASP.NETWeb表单弥补措施(RSI)
2.9.7 JSP弥补措施
2.9.8 PHP弥补措施(XSS)
2.9.9 CGI弥补措施(XSS)
2.9.1 0modPerl弥补措施(XSS)
2.10 弥补步骤(XSRF)
2.10.1 关于超时的注意事项
2.10.2 XSRF和POST与GET的注意事项
2.10.3 RubyonRails弥补措施(XSRF)
2.10.4 ASP:NETWeb表单弥补措施(XSRF)
2.10.5 HTML编码的非严格用法
2.11 其他防御措施
2.11.1 使用ItttpOnlycookie
2.11.2 对标记的属性使用双引号
2.11.3 考虑使用ASP:NET的ViewStateUserKey
2.11.4 考虑使用ASRNET的ValidateRequest
2.11.5 使用AStNET安全运行时引擎的安全性能
2.11.6 考虑使用OWASFCSRFGuard
2.11.7 使用ApacheTaintRequest
2.11.8 使用UrIScan
2.11.9 设置默认的字符集
2.12 其他资源
2.13 本章小结
第3章 与Web客户端相关的漏洞(XSS)
3.1 漏洞概述
3.2 CWE资源
3.3 受影响的编程语言
3.4 漏洞详述
3.4.1 有漏洞的gadget的秘密
3.4.2 受漏洞影响的JavaScript和HTML
3.5 查找漏洞模式
3.6 在代码审查期间查找该漏洞
3.7 发现该漏洞的测试技巧
3.8 漏洞示例
3.8.1 MicrosoftISAServerXSSCVE-.2003-.0526
3.8.2 WindowsVistaSidebarCVE.2007 3 033和CVE.2 007-.3032
3.8.3、Yahoo!Instant:Messenger.ActiveX控件CVE-.20074515
3.9 弥补措施
3.9.1 不要相信输入
3.9.2 N更安全的结构替代不安全的结构
3.10 其他弥补措施
3.11 其他资源
3.12 本章小结
第4章 使用MagicURL、可预计的COOkie及隐藏表单字段
4.1 漏洞概述
4.2 CWE参考
4.3 受影响的编程语言
4.4 漏洞详述
4.4.1 MagicURL
4.4.2 可预计的Cookie
4.4.3 隐藏的表单字段
4.4.4 相关漏洞
4.5 查找漏洞模式
4.6 在代码审查期间查找该漏洞
4.7 发现该漏洞的测试技巧
4.8 漏洞示例
4.9 弥补措施
4.9.1 攻击者浏览数据
4.9.2 攻击者重放数据
4.9.3 攻击者预测数据
4.9.4 攻击者更改数据
4.10 其他防御措施
4.11 其他资源
4.12 本章小结
第Ⅱ部分 实现漏洞
第5章 缓冲区溢出
5.1 漏洞概述
5.2 CWE参考
5.3 受影响的编程语言
5.4 漏洞详述
5.4.1 64位的含义
5.4.2 受漏洞影响的C++
5.4.3 相关漏洞
5.5 查找漏洞模式
5.6 在代码审查期间查找该漏洞
5.7 发现该漏洞的测试技巧
5.8 漏洞示例
5.8.1 CVE-1999-0042
5.8.2 CVE-2000-0389~CVE-2000-0392
5.8.3 CVE-2002-0842、CVE-2003-0095、CAN-2003-0096584CAN-2003-0352
5.9 弥补措施
5.9.1 替换危险的字符串处理函数
5.9.2 审计分配操作
5.9.3 检查循环和数组访问
5.9.4 使用c++字符串来替换c字符串缓冲区
5.9.5 使用STL容器替代静态数组
5.9.6 使用分析工具
5.10 其他防御措施
5.10.1 栈保护
5.10.2 不可执行的栈和堆
5.11 其他资源
5.12 本章小结
第6章 格式化字符串问题
6.1 漏洞概述
6.2 CWE参考
6.3 受影响的编程语言
6.4 漏洞详述
6.4.1 受漏洞影响的C/C++
6.4.2 相关漏洞
6.5 查找漏洞模式
6.6 在代码审查期间查找该漏洞
6.7 发现该漏洞的测试技巧
6.8 漏洞示例
6.8.1 CVE-2000-0573
6.8.2 CVE-2000-0844
6.9 弥补措施
6.10 其他防御措施
6.11 其他资源
6.12 本章小结
第7章 整数溢出
7.1 漏洞概述
7.2 CWE参考
7.3 受影响的编程语言
7.4 漏洞详述
7.4.1 受漏洞影响的C和C++
7.4.2 受漏洞影响的C#
7.4.3 受漏洞影响的VisualBasic和VisualBasic.NET
7.4.4 受漏洞影响的Java
7.4.5 受漏洞影响的Perl
7.5 查找漏洞模式
7.6 在代码审查期间查找漏洞
7.6.1 C/C++
7.6.2 C#
7.6.3 Java
7.6.4 VisualBasic和VisualBasic.NET
7.6.5 Perl
7.7 发现该漏洞的测试技巧
7.8 漏洞示例
……
第8章 C++灾难
第9章 捕获异常
第10章 命令注入
第11章 未能正确处理错误
第12章 信息泄漏
第13章 竞态条件
第14章 不良可用性
第15章 不易更新
第16章 执行代码的权限过大
第17章 未能完全地存储数据
第18章 移动代码的漏洞
第Ⅲ部分 加密漏洞
第19章 使用基于弱密码的系统
第20章 弱随机数
第21章 使用错误的密码技术
第Ⅳ部分 隧网漏洞
第22章 未能保护好网络通信
第23章 未能正确使用PKI,尤其是SSL
第24章 轻信网络域名解析
猜您喜欢

读书导航