搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
软件安全的24宗罪:编程缺陷与修复之道
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787302226345
  • 作      者:
    (美)Michael Howard, (美)David LeBlanc, (美)John Viega著
  • 出 版 社 :
    清华大学出版社
  • 出版日期:
    2010
收藏
编辑推荐
  《软件安全的24宗罪:编程缺陷与修复之道》介绍了最新的安全问题,指出了最常见的设计和编码错误,解释了如何修复每个漏洞——更美妙的是,如何从一开始就避免出现这些错误。《软件安全的24宗罪:编程缺陷与修复之道》的作者Michael Howard和David LeBlanc曾教授微软员工如何保护代码,他们与第一个发现19个致命编程漏洞的John Viega合作,探讨了最新的漏洞,并且增加了5个全新的漏洞。这本实践指南涵盖了所有的平台、语言和应用程序类型。
  由著名软件安全专家编写的安全漏洞专业书籍,发现和修复各种安全漏洞的最佳指导,丰富的安全漏洞示例以及修复措施,作者长期实践经验的总结。
展开
作者简介
  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大学的硕士和学士学位。
展开
内容介绍
  软件安全是一个不断变化的主题,不仅不断出现新的漏洞类型,而且出现了漏洞的各种变体。《软件安全的24宗罪:编程缺陷与修复之道》总结了目前最危险的24个安全漏洞,给出了丰富的漏洞示例,并且提供了相应的修复措施。
  各种Web应用程序漏洞及修复措施,各种实现漏洞及修复措施,各种加密漏洞及修复措施,各种联网漏洞及修复措施。
展开
精彩书评
  《软件安全的24宗罪——编程缺陷与修复之道》是由两位业界经验最丰富的专家撰写通过学习本书中给出的实践经验,读者就能够理解编写安全代码的具体含义.MichaelHoward和David LeBlanc在本书中展示了如何解决若干年前发布的代码出现的问题。
  ——Dan Kaminsky,IOActive渗透测试主管。
展开
精彩书摘
  第1章 SQL注入
  1.1  漏洞概述
  SQL注入是一种非常严重的代码漏洞,它可以导致机器被入侵,敏感数据泄漏,最近,这种漏洞还会传播恶意软件。而真正让人担心的是:受这些漏洞影响的系统通常都是电子商务系统或用来处理敏感数据或PII(personally identifiable information,个人身份信息)的应用程序。从作者的经验来看,许多家用或者商用的数据库驱动应用程序都会有SQL注入的漏洞。
  下面将清晰阐述这个漏洞的潜在威胁。如果所建立的应用程序与数据库通信,且代码中有一个或多个SQL注入漏洞(无论您知道与否),就会把数据库中的所有数据置于危险之中。如果不明白这句话的含义,请继续阅读。
  有时,即使没有SQL注入漏洞,数据也会被入侵。入侵数据库的一种常见方式是通过打开如下数据库端口,例如:
  ·Microsoft SQL Server的TCP/1433端口
  ·Oracle的TCP/1521端口
  ·IBMDB2的TCP/523的端口
  ·MySQL的TCP/3306端口
  而进入一直处于打开状态的前门。如果这些端口对Internet是开放的,则使用默认的系统管理员账户登录,很可能会引发灾难。
  有数据就是有DATA。SQL注入攻击的一个最大危害是攻击者可以获得隐私、PII或者敏感数据。攻击者不需要使用系统管理员的身份,就可以盗取数据。
  在一些国家、州或者工作单位里.如果发生了这种情况,当事人要负相应的责任。例如,在加利福尼亚州,如果您负责的数据库被入侵,而数据库含有隐私或者个人数据,那么Online Privacy Protection Act(在线隐私保护法案)可能会让您吃官司;在德国,§9BDSG(FederalDataProtectionAct,联邦数据保护法案)要求为处理PII的系统提供恰当的组织上和技术上的安全保护。
展开
目录
第Ⅰ部分 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章 轻信网络域名解析
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证