您的浏览历史

黑客大曝光:Web应用安全机密与解决方案(第2版)

促销活动

基本信息

编辑推荐

本书帮你参透Web攻击背后的玄机,练就一双火眼金睛,为你的Web应用保驾护航!...

内容简介回到顶部↑

在网络技术和电子商务飞速发展的今天,Web应用安全面临着前所未有的挑战。本书凝聚了作者们超过30年的Web安全从业经验,详细剖析了Web应用的安全漏洞,攻击手法和对抗措施,一步步的教授如何防御邪恶的攻击,并协助读者理解黑客的思考过程。
本书分为13章,书后带有附录和详细的英汉对照索引。本书是网络管理员、系统管理员的必备宝典,也是电子商务从业者、网络爱好者和企业管理者的参考书籍。

作译者回到顶部↑

本书提供作译者介绍

Joel Scambray拥有信息系统安全专家认证(CISSP),有15年的信息安全经验,包括:在微软和安永国际会计公司担任高级管理角色,与人创办Foundstone公司,担任“财富500强”企业的技术顾问,与人合著“黑客大曝光”(Hacking Exposed)系列畅销书。

  Mike Shema是NT Objectives的首席战略官(CSO),曾在多个安全会议上进行过Web应用安全的演讲。他研究了大量的广泛的Web技术,并开发出应用安全课程的培训教材。他是《反黑客工具包》(Anti-Hacker Toolkit)一书的合著者。
.. << 查看详细

作者: Joel Scambray
Joel Scambray拥有信息系统安全专家认证(CISSP),有15年的信息安全经验,包括:在微软和安永国际会计公司担任高级管理角色,与人创办Foundstone公司,担任“财富500强”企业的技术顾问,与人合著“黑客大曝光”(Hacking Exposed)系列畅销书。. Mike Shema是NT Objectives的首席战略官(CSO),曾在多个安全会议上进行过Web应用安全的演讲。他研究了大量的广泛的Web技术,并开发出应用安全课程的培训教材。他是《反黑客工具包》(Anti-Hacker Toolkit)一书的合著者.. << 查看详细

[同作者作品]
黑客大曝光:Web应用安全机密与解决方案(第2版)
黑客大曝光(第6版)

作者: 罗代升
罗代升,博士,教授,博士生导师。1970年四川大学毕业,留校任教,主要研究方向包括信号与信息处理,通信与信息系统,计算机视觉,模式识别,智能系统及设计。.. << 查看详细

[同作者作品]
黑客大曝光:Web应用安全机密与解决方案(第2版)

作者: 王炜
王炜,1981年1月出生,2003年毕业于四川大学计算机通信专业,获学士学位。现为四川大学通信与信息系统专业博士研究生,主要研究方向为:网络与信息安全。 .. << 查看详细

[同作者作品]
黑客大曝光:Web应用安全机密与解决方案(第2版)

作者: Caleb Sima
Caleb Sima是Web应用安全产品公司SPI Dynamics的创办者之一和首席技术官,拥有超过12年的安全经验。他在Web安全方面的探索和专业知识对Web应用安全产业界确定产业发展的方向提供了极大的帮助。Caleb是Associated Press著名的Internet攻击方面的时事评论员和专家。他也是各种杂志和在线专栏的作者。Caleb是ISSA(信息系统安全协会)成员,OASIS(结构化信息标准促进组织)中应用漏洞描述语言(Application Vulnerability Description Language)标准的发起者之一,也是Web应用安全联盟(Web Applicati.. << 查看详细

[同作者作品]
黑客大曝光:Web应用安全机密与解决方案(第2版)

作者: 文苗
文苗,东南大学软件工程学士学位,爱好网络安全和软件开发,有多年Web程序开发和测试经验,曾负责和参与某大型Web商业软件的安全测试工作。.. << 查看详细

[同作者作品]
黑客大曝光:Web应用安全机密与解决方案(第2版)

目录回到顶部↑

第1章 Web应用攻击的基础知识
 1.1 什么是Web应用攻击
  1.1.1 GUI Web攻击
  1.1.2 URI攻击
  1.1.3 请求方法、请求头和数据体
  1.1.4 资源
  1.1.5 认证,会话和授权
  1.1.6 Web客户端和HTML
  1.1.7 其他协议
 1.2 为什么攻击Web应用
 1.3 何人、何时、何地攻击Web应用
  1.3.1 安全薄弱点
 1.4 如何攻击Web应用程序
  1.4.1 Web浏览器
  1.4.2 浏览器扩展
  1.4.3 HTTP代理
  1.4.4 命令行工具
  1.4.5 一些老工具
 1.5 小结
 1.6 参考和进一步阅读

译者序回到顶部↑

经过近一年的辛苦工作,《黑客大曝光——Web应用安全机密与解决方案(第2版)》的翻译终于告一段落。看着厚厚的书稿,无疑有一些轻松的感觉。正是“纳清风台榭开怀,傍流水亭轩赏心。”.
记得四年前,自己的第一本书《缓冲区溢出教程》出版时,漏洞满天飞,蠕虫肆虐,肉鸡成群。几年过去了,现在可喜地看到,政府、企业、网管的安全意识越来越强,安全措施越来越完善,安全技术也水涨船高,利用一个漏洞扫描器就可以忽悠单子的时代一去不复返了。不过,安全所处的大环境也急剧地变化,新型的网络应用越来越多,电子商务越来越发达;而另一方面,网络攻击正逐渐走向商业化,攻击者从追求名声转变成了追逐利益,黑客地下产业链悄然形成,安全面临的挑战非常严峻。而本书凝结了作者们超过30年的Web安全从业经验,无疑是Web应用安全领域的“圣经”。
自己看过本书第一版的中译版,恕我直言,翻译的效果实在不敢恭维,完全有理由相信,有些段落是由软件直接翻译得来的,简直浪费了一本经典好书!因此当文苗联系我说电子工业出版社正准备重译本书第二版,有没有时间参与时,自己毫不犹豫地答应了下来。..
本书花费了自己这一年来所有的业余时间,不过可以阅读第一手原著,揣摩作者的思维,理解黑客的思考方式,非常物有所值。不仅进一步深入理解了自己已知的一些技术知识,也大大扩展了自己的知识面,最重要的是,拓宽了自己的思维结构。我想,凡是信息安全的相关人员,阅读本书都会受益匪浅的。
本书由自己和文苗亲译,全书由罗代升教授校阅。特别要感谢许艳编辑,对每句每词都进行了严格推敲和修订,工作量非常大,没有她的辛勤劳动,本书是不可能如此顺利译成的。
限于水平,不妥和错误之处在所难免,敬请广大读者批评指正。
另,在本书即将付印时,四川汶川爆发8.0级巨大地震,现在还不断感到阵阵余震传来……愿救援的人们平安,哀悼在灾难中遇难的同胞……
王 炜...
于四川大学,成都

前言回到顶部↑

回到1999年,《黑客大曝光(第1版)》让很多人看到了计算机网络和系统的脆弱性。虽然迄今为止仍然有很多人并没有意识到这一现实,但还是有大量的人开始了解到防火墙、安全的操作系统配置、厂商补丁维护,以及以前看来神秘的信息系统安全基础设施的必要性了。.
遗憾的是,因特网带来的迅猛发展已经大大超过了人们的想象。防火墙、操作系统安全以及最新的补丁,都能被一个针对Web应用的简单攻击绕过。虽然这些元素仍是所有安全基础设施的重要部件,但它们已经无力阻止新一代的攻击,而这些攻击现在每天都在快速发展着。
这不是我们的一家之言,Gartner Group报道说,75%的攻击都在Web应用层面上,而且对超过300个站点的审计表明97%的站点都拥有会被攻击的脆弱点。恶意攻击的新闻头条现在是越来越常见了(例证:2005年CardSystems电脑缺陷暴露了4千万客户的敏感信息),政府对伪电脑安全措施进行调查的情况也越来越多(一些关键的例子包括BJ’s Wholesale Club,美洲银行,花旗银行,Lexis-Nexis,ChoicePoint,微软的Passport,Guess Inc和美国礼来公司)
我们也不能因噎废食,从此放弃因特网商务。现在没有别的选择,只有在地上拉起一条警戒线,为无数的组织和个人的电脑空间保留一块净土。
哪怕只是组建过最简单的Web站点的人,都知道这是一项令人畏缩的任务。面对带有安全局限性的已有协议,诸如HTTP,以及比任何时候都更迅猛的新技术的冲击,诸如XMLWeb服务,Ajax和RSS,要设计和实现一个安全的Web应用,简直就是一项“戈耳迪之结”样的难题!
应对Web应用安全的挑战
我们采用最初的“黑客大曝光”中的方法,分两方面向你展示如何应对这一挑战。
首先,我们为你的Web应用可能会面临的最严重的威胁进行分类,并且非常详细地解释它们的原理。我们是如何知道它们是最严重的威胁的呢?因为我们被不少世界上的大公司雇佣,来破解它们的Web应用程序,而我们同时也用这些Web程序完成日常工作。我们进行这项工作加起来有超过30年的时间了,在这期间,我们研究最新发布的黑客工具,开发我们自己的工具和技术,并将它们集成到我们认为最有效的方法中,用来对已有Web应用的安全进行渗透测试。
一旦我们通过阐述那些攻击可能造成的损失吸引到了你的注意,我们还会告诉你如何防止每一种攻击。如果未理解本书中的信息就开始部署一个Web应用,那就好比驾驶着一辆没有安全带的汽车——在光滑的路上下滑,要越过一条巨大的裂坑——也没有刹车,最后必然会栽个大跟头的。
本书的结构
本书由若干章构成,每一章描述了“黑客大曝光”Web应用攻击方法学的一个方面。该结构形成了本书的主线,因为如果没有方法学,许多内容不过是一堆空洞的没有意义的信息。下面是本书的导航图,它将为你展示出全书的纲要。
第1章 Web应用攻击的基础知识
在本章中,我们对Web应用攻击工具和技术进行了综述,并用详细的例子进行了展示。系好你的安全带,Dorothy,因为就要和堪萨斯州说再见,开始我们的神奇之旅了!①
第2章 剖析
任何方法的第一步都是最重要的,剖析也不例外。该章展示了攻击一个Web应用及其架构之前的侦察流程。
第3章 攻击Web平台
如果建立在一个满身是安全漏洞的Web平台之上,那么没有任何应用程序会是安全的——该章描述了攻击、检测绕过技术,以及最流行Web平台的对抗措施,这些平台包括IIS,Apache,PHP和ASP.NET。
第4章 攻击Web认证
该章涵盖了针对常见Web认证机制的攻击和对抗措施,这些认证机制包括基于密码的认证,多因素的认证(比如,SecureID,Passmark和CAPTCHA)和在线的认证服务,比如Passport。
第5章 攻击Web授权

序言回到顶部↑

头脑让我的思维展翅翱翔。.
——Harry Houdini
攻击一个Web应用程序就像表演一个魔术。如果你知道正确的技术和方法,你可以闯入任何在线银行、信用合作社、股票交易所、电子商务商店或者社会网络的Web站点。只需使用Web浏览器作为你的魔法棒,用你最快的速度说:“芝麻开门!”,你就进去了。这正是本书的内容——安全产业顶级的Web应用专家们公开他们曾守口如瓶的Web攻击机密,这样大家可以据此实施一些防护措施来保护自己。即使是传奇魔术师哈里?霍迪尼也会铭记这些书页所描述的技术。
本书的作者,同样也是Web应用安全专家,他们考察Web站点的方式和大多数人有很大的不同。他们好像有某种神秘的力量,只是看一眼URL,就可以确定操作系统、编程语言、Web服务器版本甚至漏洞所处的位置。大部分专家也承认,当他们进行在线交易时,是痛苦有时也是诱人的体验。他们需要极力遏制自己的好奇心:在浏览器地址栏插入几个特殊字符会发生什么呢?你可以转储整个信用卡数据库吗?当购买确认E-mail到达时——我们可以简单地改变URL中的数字,就可以看见其他人的订单吗?答案很可能是:是的!因为如果你深入地分析,就会发现大多数Web站点都是可以被攻陷的。Web应用安全常常是如此糟糕,以至于专家们偶尔会发现他们的手在不自觉地遮挡住地址栏,因为他们害怕在个人Web银行中发现漏洞。即使专家偶尔也会像鸵鸟主义者那样把头埋在沙堆里逃避现实,以叶障目,但这的确是真实的事情。..
但是罪犯们一直在伺机行动。在过去,我们只担心爱开玩笑的黑客用几句精英语言(leet speak)篡改主页,在Logo的位置粘贴讨厌的JPEG图片,但这样的好时光已经过去了。恶意黑客们已经接管了整个世界,以娱乐为主的黑客时代一去不复返了。每天他们贪得无厌地盗窃信用卡号码、密码、生日、社会保险号码、银行账号以及任何他们可以用来牟利的信息。这些坏小子们是存心的,而且很狂热,他们已经在勒索商业活动,并已到了一个应该警惕的水平。成百上千桩的生意多多少少依赖于Web,在这个地方忽略安全不是我们能够承担得起的。你曾经坐下来仔细考虑过如果一次入侵带来停工、罚款、法律责任,而且打击客户信心,使品牌信誉受损,真正的损失会是多少吗?
这些年来,入侵者的动机已经改变,但有一件事情保持不变——罪犯总是想选择可能遭遇最少抵抗的路径,这并不意外。当今这条路径是Web站点,或者更精确地说,是Web应用程序,因为Web应用十个中有八个带有严重的漏洞。这是非常严重的问题,会导致你拥有的所有敏感数据都丢失。同样,主流的产业界报告把Web攻击和发现的漏洞放在报告列表的顶端。这意味着大多数Web站点,即使不是所有的Web站点,都将会受到攻击。这只是攻击的时间、攻击者,以及在攻击成功前需要多长时间的问题。如果你的站点属于那80%不安全的Web站点,那么你只是在玩一个等待游戏,你的那个不祥数字终将出现。
这就是为什么只是有了SSL,网络层防火墙和漂亮的证书标签就声称采取了严格安全措施的Web站点不让人放心的原因。这些都是20世纪的解决方案,它们被不加任何区别地用在防范21世纪的主流攻击中,诸如注入跨站脚本、SQL注入和有漏洞的授权。显然,我们需要更高效的方法,有效地实现安全软件开发最佳实践、平台安全标准、应用层漏洞扫描和Web应用防火墙。当前的情况是,要使大多数Web站点的安全状态可以达到威慑甚至阻挠恶意攻击者的程度,我们还差得很远。幸运的是,对于那些真正希望安全的人——那些不希望成为下一个受害者或被列在明天媒体头条报道中的人——本书包含了你所需要的信息。
《黑客大曝光——Web应用安全机密与解决方案(第2版)》的作者是知名的,备受尊敬的行业专家,他们都在数字战场上生活了多年。他们有十几年数百次Web应用的渗透测试的直接经验,他们知道什么可以起作用。他们都曾研究过几百份(可能数千份)技术白皮书、安全书籍、文章和漏洞公告。他们每个人在安全方面都已经发布了很多成果。他们将为你展示如何由内到外调查内在的Web应用程序,如何发现和利用薄弱点,以及最重要的,他们将描述会真正起到作用的安全方法。Joel,Mike和Caleb已经做了非凡的工作,他们用一种通俗易懂而迷人的形式采集和展示技术材料。有一件事情是非常确定的:在你读完本书后,你绝不会再用同样的方式观察一个Web站点了。
—Jeremiah Grossman
WhiteHat Security的创建者和首席技术官
Web应用安全联盟(Web Application Security Consortium,WASC)的创建者之一...
2006年3月

书摘回到顶部↑

第6章 输入验证攻击
  输入验证是Web应用程序安全防范的首道防线。许多攻击,如SQL注入,脚本攻击(包括了跨站脚本),以及详细错误信息的泄漏,都是由于攻击者向程序提交了未曾预料到的输入类型而造成的。
  输入验证就是为了确保输入数据的格式和类型都是程序所需的。如果不进行严格的检查以减少误操作,程序的完整性和它的信息就有可能会受到损害。
  想象一个应用程序中的购物车,我们考虑其信用卡字段。首先,信用卡号码只包含数字;其次,大多数信用卡号码都是16位的数字,但也有一些是小于16位的。因此,如果进行输入验证,第一项应该是长度检查:输入的数据是否为14~16位的字符;第二项检查应该是内容检查:输入的数据是否含非数字的字符。我们可以在系统中加上另一项检查:输入的数据是否是一个合法的信用卡号码。“0000111122223333”显然不是一个信用卡号码,但“4435786912639983”呢?我们写一个简单的校验和程序就可以判断一个16位数字是否符合合法的信用卡号码要求。另外,一些常识性知识也可以用来验证,比如,一个15位的信用卡号码应该以3开头,第二位应该为4或者7。这个信用卡的例子演示了如何测试输入为一串数字的合法性。但请注意,这个例子没有尝试判断信用卡号码是否匹配用户名或用户地址,而只是尝试验证号码本身的合法性。本章内容着重于两点:一是完全信任用户提供的数据会带来的危险;二是如果没有恰当的限制期望的数据类型,攻击者攻击应用程序各种的方法。
  数据验证可能会非常的复杂,但它却是应用程序安全基础中的基础。应用程序的开发者应该事先预料到用户在表单字段中所有可能的输入值。刚才我们提到了验证信用卡号码的三种简单方法:长度、内容和校验和。这样的验证过程可以放在HTML页面中,以JavaScript实现,并运行在SSL之上。基于JavaScript的解决方案非常简单,也的确是开发人员最常使用的方法之一。但在接下来的几节里,我们将会看到,客户端的输入验证可以被绕过,而SSL只是起到保护Web传输的保密性。换句话说,我们不能信任Web浏览器所做的安全检查工作,通过SSL加密连接不会对提交到应用程序的数据内容造成任何的影响。
  6.1 预料意外的情况
  输入验证最大的一个安全漏洞就是将验证流程用JavaScript实现并放在浏览器中。使用客户端的脚本语言实现验证流程似乎是合情合理的,原因首先是验证流程不必在服务端实现;其次是,客户端验证容易实现且被大多数Web浏览器支持(虽然也有很个别的浏览器不支持);更重要的是,这样就把服务端所要做的大量工作移到了客户端,是应用程序的一种成功。但Web浏览器是不可信、不可控的环境,所有传入传出的数据都可在传输途中被修改,不管是否存在输入验证流程。因此,用于购买新的Web服务器来处理服务端输入验证的支出,远远小于恶意用户使用%0a的小手段来损害到应用程序安全带来的代价。
  输入验证的攻击可能针对应用程序的不同方面。理解黑客如何攻击不完整的验证流程是非常重要的,因为他们带来的危险远不只“垃圾数据”错误那么简单。
  数据存储:包括SQL注入攻击中使用的字符。这些字符可以改写数据库查询语句,导致执行攻击者定制的行为。产生的错误能泄漏出各种信息,比如应用程序采用的编程语言,甚至是应用程序发送到数据库的具体SQL查询语句。
  冒充其他用户:包括跨站脚本以及与“钓鱼”相关的攻击。攻击者可以通过提交数据改写HTML,从而窃取其他用户的信息,或者引诱用户泄露他们的敏感信息。
  控制Web服务器:此类攻击因操作系统不同而不同。比如插入分号,能在UNIX的Web服务器上执行任意指令。应用程序本来要在Web服务器上执行命令,但通过特殊的字符,可以欺骗它执行其他的命令。
  泄露应用程序内容:攻击者能通过产生的错误来泄露程序的语言信息。其他攻击方法也可以绕过浏览器对文件类型的限制。比如许多Nimda蠕虫的变种,使用了斜线(用来分隔目录)其他的编码方式来绕过IIS的安全检查,从而可以访问Web根目录以外的文件。
  缓冲区溢出攻击:缓冲区溢出攻击已经困扰着程序多年了,Web应用程序也不例外。此类攻击包括向一个变量或者字段中填充尽可能多的字符,然后观察其结果。这样可能会导致应用程序崩溃或者停止执行任意命令。缓冲区溢出更多在编译语言,如C或C++中,被关注,而在Perl或Python等解释性语言中则很少注意。基于.NET和Java的Web平台,由于不允许程序员直接操纵堆栈和堆分配(这是缓冲区溢出的条件),从而导致应用层面的缓冲区溢出非常困难。缓冲区溢出可能会在特定的语言平台上长期存在。
  获得任意数据的访问权限:一个用户可以访问另一个同级用户的信息,比如一个顾客可以查看另外一个顾客的账单信息;一个用户可以访问某些特权数据,比如匿名用户能够枚举、创建或者删除用户。数据访问同样适用于受保护的文件或程序中的管理员领域。
  6.2 在哪里寻找攻击载体
  每一个GET和POST的参数都可以用来做输入验证攻击,更改参数,不管它们来自表单还是应用程序,都是一项很细微的工作。最易被攻击的点是输入字段。通常这些字段包括登录名、密码、地址、电话、信用卡号以及搜索,其他使用下拉菜单的字段也不应该被忽略。第一步需要枚举出这些字段以及它们大概的输入类型。
  不要错误地认为输入验证攻击的目标只能是用户需要完成填写的字段,事实上, GET和POST请求的任何变量都有可能被攻击。对一个很有价值的目标,攻击者在攻击前会深入全面的调查程序的文件、参数和表单字段。
  Cookie是另一类攻击目标。Cookie本来包含了用户不能故意操纵的值,但也有可能被用于SQL注入或冒充其他的用户。
  Cookie只是一种特殊的HTTP头。事实上,任何HTTP头都是输入验证攻击的载体。HTTP响应头截断是另一种以HTTP头为攻击目标的例子,它将正常地响应截断,注入伪造的头部集(通常是Cookie或控制缓存,会给客户端带来很大的破坏)。
  让我们仔细分析一下HTTP响应头截断攻击。攻击的目标是使用参数作为转向指示的程序。例如,一个存在潜在漏洞的URL如下:

【插图】

chatu
评论交流

共有9人开贴评论  9人参与评论  9人参与打分 查看

2人
 22%
用户平均打分
我要写评论 help如何参与评论和打分
3人
 33%
4人
 44%
0人
 0%
0人
 0%

wawjllxx

二级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-12-21 8:49:00
1、内容还是不错,就是翻译太差了;
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

FreeSeagull

一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-3-22 12:04:00
翻譯的一般,很多地方一看就知道是生硬的逐字翻譯。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

zhengtiandfg

一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-3-12 17:41:00
原书不错.但翻译的有点差。 有许多代码一眼就看出有问题。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

simon680

一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-1-21 13:39:00
翻译得不错,阅读流畅。
这个系列的书还是不错的,知识点比较全面。值得一读。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

ecore_linux

出版商
该会员在china-pub购买过此书
评价等级:  
发表于:2008-7-21 10:38:00
http://www.phei.com.cn/bookshop/bookinfo.asp?bookcode=TP066690 &booktype=main
电子工业出版社可以订购了。china-pub就是慢。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)
我要写评论
查看所有评论交流(共9条)