互联网时代的数据安全与个人隐私受到前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?《白帽子讲Web安全(纪念版)》将带你走进Web安全的世界,让你了解Web安全的方方面面。黑客不再神秘,攻击技术原来如此,小网站也能找到适合自己的安全道路。大公司如何做安全,为什么要选择这样的方案呢?在《白帽子讲Web安全(纪念版)》中都能找到答案。详细的剖析,让你不仅能“知其然”,更能“知其所以然”。
《白帽子讲Web安全(纪念版)》根据安全宝副总裁吴翰清之前在互联网公司若干年的实际工作经验而写成,在解决方案上具有极强的可操作性;深入分析诸多错误的方法及误区,对安全工作者有很好的参考价值;对安全开发流程与运营的介绍,同样具有深刻的行业指导意义。《纪念版》与前版内容相同,仅为纪念原作以多种语言在全球发行的特殊版本,请读者按需选用。
《白帽子讲Web安全(纪念版)》根据安全宝副总裁吴翰清之前在互联网公司若干年的实际工作经验而写成,在解决方案上具有极强的可操作性;深入分析诸多错误的方法及误区,对安全工作者有很好的参考价值;对安全开发流程与运营的介绍,同样具有深刻的行业指导意义。《纪念版》与前版内容相同,仅为纪念原作以多种语言在全球发行的特殊版本,请读者按需选用。
更多前端好书,请点击链接
国内著名安全组织Ph4nt0m 的创始人,精通各种攻击与防御技术。2005年加入(中国)有限公司,2007年成为最年轻的专家。先后完成、、支付宝的安全评估与安全体系建设工作。主导了的安全开发流程建设工作,在应用安全领域内有丰富的经验。现任安全架构师,负责全集团WEB安全工作以及云计算安全。
及时篇 世界观安全
第1 章 我的安全世界观...................................................................................................2
1.1 Web 安全简史................................................................................................2
1.1.1 中国黑客简史........................................................................................2
1.1.2 黑客技术的发展历程..............................................................................3
1.1.3 Web 安全的兴起....................................................................................5
1.2 黑帽子,白帽子.............................................................................................6
1.3 返璞归真,揭秘安全的本质..........................................................................7
1.4 破除迷信,没有银弹.....................................................................................9
1.5 安全三要素..................................................................................................10
1.6 如何实施安全评估....................................................................................... 11
1.6.1 资产等级划分......................................................................................12
1.6.2 威胁分析.............................................................................................13
1.6.3 风险分析.............................................................................................14
1.6.4 设计安全方案......................................................................................15
1.7 白帽子兵法..................................................................................................16
1.7.1 Secure By Default 原则.........................................................................16
1.7.2 纵深防御原则......................................................................................18
1.7.3 数据与代码分离原则............................................................................19
1.7.4 不可预测性原则...................................................................................21
1.8 小结.............................................................................................................22
(附)谁来为漏洞买单?..................................................................................23
第二篇 客户端脚本安全
第2 章 浏览器安全.........................................................................................................26
2.1 同源策略......................................................................................................26
2.2 浏览器沙箱..................................................................................................30
2.3 恶意网址拦截..............................................................................................33
2.4 高速发展的浏览器安全...............................................................................36
2.5 小结.............................................................................................................39
第3 章 跨站脚本攻击(XSS) .....................................................................................40
3.1 XSS 简介......................................................................................................40
3.2 XSS 攻击进阶..............................................................................................43
3.2.1 初探XSS Payload.................................................................................43
3.2.2 强大的XSS Payload ............................................................................. 46
3.2.3 XSS 攻击平台.....................................................................................62
3.2.4 终极武器:XSS Worm..........................................................................64
3.2.5 调试JavaScript ....................................................................................73
3.2.6 XSS 构造技巧......................................................................................76
3.2.7 变废为宝:Mission Impossible ..............................................................82
3.2.8 容易被忽视的角落:Flash XSS .............................................................85
3.2.9 真的高枕无忧吗:JavaScript 开发框架..................................................87
3.3 XSS 的防御..................................................................................................89
3.3.1 四两拨千斤:HttpOnly .........................................................................89
3.3.2 输入检查.............................................................................................93
3.3.3 输出检查.............................................................................................95
3.3.4 正确地防御XSS ..................................................................................99
3.3.5 处理富文本....................................................................................... 102
3.3.6 防御DOM Based XSS......................................................................... 103
3.3.7 换个角度看XSS 的风险..................................................................... 107
3.4 小结........................................................................................................... 107
第4 章 跨站点请求伪造(CSRF) ............................................................................ 109
4.1 CSRF 简介................................................................................................. 109
4.2 CSRF 进阶................................................................................................. 111
4.2.1 浏览器的Cookie 策略........................................................................ 111
4.2.2 P3P 头的副作用................................................................................. 113
4.2.3 GET? POST?...................................................................................... 116
4.2.4 Flash CSRF........................................................................................ 118
4.2.5 CSRF Worm....................................................................................... 119
4.3 CSRF 的防御.............................................................................................. 120
4.3.1 验证码.............................................................................................. 120
4.3.2 Referer Check..................................................................................... 120
4.3.3 Anti CSRF Token................................................................................ 121
4.4 小结........................................................................................................... 124
第5 章 点击劫持(ClickJacking)............................................................................. 125
5.1 什么是点击劫持......................................................................................... 125
5.2 Flash 点击劫持........................................................................................... 127
5.3 图片覆盖攻击............................................................................................ 129
5.4 拖拽劫持与数据窃取................................................................................. 131
5.5 ClickJacking 3.0:触屏劫持....................................................................... 134
5.6 防御ClickJacking....................................................................................... 136
5.6.1 frame busting ..................................................................................... 136
5.6.2 X-Frame-Options ................................................................................ 137
5.7 小结........................................................................................................... 138
第6 章 HTML 5 安全................................................................................................... 139
6.1 HTML 5 新标签.......................................................................................... 139
6.1.1 新标签的XSS.................................................................................... 139
6.1.2 iframe 的sandbox ............................................................................... 140
6.1.3 Link Types: noreferrer ......................................................................... 141
6.1.4 Canvas 的妙用................................................................................... 141
6.2 其他安全问题............................................................................................ 144
6.2.1 Cross-Origin Resource Sharing ............................................................. 144
6.2.2 postMessage——跨窗口传递消息......................................................... 146
6.2.3 Web Storage....................................................................................... 147
6.3 小结........................................................................................................... 150
第三篇 服务器端应用安全
第7 章 注入攻击.......................................................................................................... 152
7.1 SQL 注入.................................................................................................... 152
7.1.1 盲注(Blind Injection) ...................................................................... 153
7.1.2 Timing Attack .................................................................................... 155
7.2 数据库攻击技巧......................................................................................... 157
7.2.1 常见的攻击技巧................................................................................. 157
7.2.2 命令执行........................................................................................... 158
7.2.3 攻击存储过程.................................................................................... 164
7.2.4 编码问题.................................................................
在2010 年年中的时候,博文视点的张春雨先生找到我,希望我可以写一本关于云计算安全的书。当时云计算的概念正如日中天,但市面上关于云计算安全应该怎么做却缺乏足够的资料。我由于工作的关系接触这方面比较多,但考虑到云计算的未来尚未清晰,以及其他的种种原因,婉拒了张春雨先生的要求,转而决定写一本关于Web 安全的书。
我的安全之路
我对安全的兴趣起源于中学时期。当时在盗版市场买到了一本没有书号的黑客手册,其中coolfire的黑客教程令我印象深刻。此后在有限的能接触到互联网的机会里,我总会想方设法地寻找一些黑客教程,并以实践其中记载的方法为乐。
在2000 年的时候,我进入了西安交通大学学习。在大学期间,较大的收获,是学校的计算机实验室平时会对学生开放。当时上网的资费仍然较贵,父母给我的生活费里,除了留下必要的生活所需费用之外,几乎全部投入在这里。也是在学校的计算机实验室里,让我迅速在这个领域中成长起来。
大学期间,在父母的资助下,我拥有了自己的及时台个人电脑,这加快了我成长的步伐。与此同时,我和一些互联网上志同道合的朋友,一起建立了一个技术型的安全组织,名字来源于我当时最喜爱的一部动漫:“幻影旅团”(ph4nt0m.org)。历经十余载,“幻影”由于种种原因未能得以延续,但它却曾以论坛的形式培养出了当今安全行业中非常多的顶尖人才。这也是我在这短短二十余载人生中的较大成就与自豪。
得益于互联网的开放性,以及我亲手缔造的良好技术交流氛围,我几乎见证了全部互联网安全技术的发展过程。在前5 年,我投入了大量精力研究渗透测试技术、缓冲区溢出技术、网络攻击技术等;而在后5 年,出于工作需要,我把主要精力放在了对Web 安全的研究上。
加入阿里巴巴
发生这种专业方向的转变,是因为在2005 年,我在一位挚友的推荐下,加入了阿里巴巴。
加入的过程颇具传奇色彩,在面试的过程中主管要求我展示自己的能力,于是我远程关闭了阿里巴巴内网上游运营商的一台路由设备,导致阿里巴巴内部网络中断。事后主管立即要求与运营商重新签订可用性协议。
大学时期的兴趣爱好,居然可以变成一份正经的职业(当时很多大学都尚未开设网络安全的课程与专业),这使得我的父母很震惊,同时也更坚定了我自己以此作为事业的想法。
在阿里巴巴我很快就崭露头角,曾经在内网中通过网络嗅探捕获到了开发总监的邮箱密码;也曾经在压力测试中一瞬间瘫痪了公司的网络;还有好几次,成功获取到了域控服务器的权限,从而可以以管理员的身份进入任何一位员工的电脑。
但这些工作成果,都远远比不上那厚厚的一摞网站安全评估报告让我更有成就感,因为我知道,网站上的每一个漏洞,都在影响着成千上万的用户。能够为百万、千万的互联网用户服务,让我倍感自豪。当时,Web 正在逐渐成为互联网的核心,Web 安全技术也正在兴起,于是我义无返顾地投入到对Web 安全的研究中。
我于2007 年以23 岁之龄成为了阿里巴巴集团最年轻的技术专家。虽未有官方统计,但可能也是全集团里最年轻的高级技术专家,我于2010 年获此殊荣。在阿里巴巴,我有幸见证了安全部门从无到有的建设过程。同时由于淘宝、支付宝草创,尚未建立自己的安全团队,因此我有幸参与了淘宝、支付宝的安全建设,为他们奠定了安全开发框架、安全开发流程的基础。
对互联网安全的思考
当时,我隐隐地感觉到了互联网公司安全,与传统的网络安全、信息安全技术的区别。就如同开发者会遇到的挑战一样,有很多问题,不放到一个海量用户的环境下,是难以暴露出来的。由于量变引起质变,所以管理10 台服务器,和管理1 万台服务器的方法肯定会有所区别;同样的,评估10 名工程师的代码安全,和评估1000 名工程师的代码安全,方法肯定也要有所不同。
互联网公司安全还有一些鲜明的特色,比如注重用户体验、注重性能、注重产品时间,因此传统的安全方案在这样的环境下可能行不通。这对安全工作提出了更高的要求和更大的挑战。
这些问题,使我感觉到,互联网公司安全可能会成为一门新的学科,或者说应该把安全技术变得更加工业化。可是我在书店中,却发现安全类目的书,要么是极为学术化的(一般人看不懂)教科书,要么就是极为娱乐化的(比如一些“黑客工具说明书”类型的书)说明书。极少数能够深入剖析安全技术原理的书,以我的经验看来,在工业化的环境中也会存在各种各样的问题。
这些问题,也就促使我萌发了一种写一本自己的书,分享多年来工作心得的想法。它将是一本阐述安全技术在企业级应用中实践的书,是一本大型互联网公司的工程师能够真正用得上的安全参考书。因此张春雨先生一提到邀请我写书的想法时,我没有做过多的思考,就答应了。
Web 是互联网的核心,是未来云计算和移动互联网的载体,因此Web 安全也是互联网公司安全业务中最重要的组成部分。我近年来的研究重心也在于此,因此将选题范围定在了Web 安全。但其实本书的很多思路并不局限于Web 安全,而是可以放宽到整个互联网安全的方方面面之中。
掌握了以正确的思路去看待安全问题,在解决它们时,都将无往而不利。我在2007 年的时候,意识到了掌握这种正确思维方式的重要性,因此我告知好友:安全工程师的核心竞争力不在于他能拥有多少个0day,掌握多少种安全技术,而是在于他对安全理解的深度,以及由此引申的看待安全问题的角度和高度。我是如此想的,也是如此做的。
因此在本书中,我认为最可贵的不是那一个个工业化的解决方案,而是在解决这些问题时,背后的思考过程。我们不是要做一个能够解决问题的方案,而是要做一个能够“漂亮地”解决问题的方案。这是每一名的安全工程师所应有的追求。
安全启蒙运动
然而在当今的互联网行业中,对安全的重视程度普遍不高。有统计显示,互联网公司对安全的投入不足收入的百分之一。
在2011 年岁末之际,中国互联网突然卷入了一场有史以来较大的安全危机。12 月21 日,国内较大的开发者社区CSDN 被黑客在互联网上公布了600 万注册用户的数据。更糟糕的是,CSDN 在数据库中明文保存了用户的密码。接下来如同一场盛大的交响乐,黑客随后陆续公布了网易、人人、天涯、猫扑、多玩等多家大型网站的数据库,一时间风声鹤唳,草木皆兵。
这些数据其实在黑客的地下世界中已经辗转流传了多年,牵扯到了一条巨大的黑色产业链。这次的偶然事件使之浮出水面,公之于众,也让用户清醒地认识到中国互联网的安全现状有多么糟糕。
以往类似的事件我都会在博客上说点什么,但这次我保持了沉默。因为一来知道此种状况已经多年,网站只是在为以前的不作为而买单;二来要解决“拖库”的问题,其实是要解决整个互联网公司的安全问题,远非保障一个数据库的安全这么简单。这不是通过一段文字、一篇文章就能够讲清楚的。但我想好的答案,可以在本书中找到。
经历这场危机之后,希望整个中国互联网,在安全问题的认识上,能够有一个新的高度。
那这场危机也就物有所值,或许还能借此契机成就中国互联网的一场安全启蒙运动。
这是我的及时本书,也是我坚持自己一个人写完的书,因此可以在书中尽情地阐述自己的安全世界观,且对书中的任何错漏之处以及不成熟的观点都没有可以推卸责任的借口。
由于工作繁忙,写此书只能利用业余时间,交稿时间多次推迟,深感写书的不易。但最终能成书,则有赖于各位亲朋的支持,以及编辑的鼓励,在此深表感谢。本书中很多地方未能写得更为深入细致,实乃精力有限所致,尚请多多包涵。
关于白帽子
在安全圈子里,素有“白帽”、“黑帽”一说。
黑帽子是指那些造成破坏的黑客,而白帽子则是研究安全,但不造成破坏的黑客。白帽子均以建设更安全的互联网为己任。
我于2008 年开始在国内互联网行业中倡导白帽子的理念,并联合了一些主要互联网公司的安全工程师,建立了白帽子社区,旨在交流工作中遇到的各种问题,以及经验心得。
本书名为《白帽子讲Web 安全》,即是站在白帽子的视角,讲述Web 安全的方方面面。虽然也剖析攻击原理,但更重要的是如何防范这些问题。同时也希望“白帽子”这一理念,能够更加的广为人知,为中国互联网所接受。
本书结构
全书分为4 大篇共18 章,读者可以通过浏览目录以进一步了解各篇章的内容。在有的章节末尾,还附上了笔者曾经写过的一些博客文章,可以作为延伸阅读以及本书正文的补充。
及时篇 我的安全世界观是全书的纲领。在此篇中先回顾了安全的历史,然后阐述了笔者对安全的看法与态度,并提出了一些思考问题的方式以及做事的方法。理解了本篇,就能明白全书中所涉及的解决方案在抉择时的取舍。
第二篇 客户端脚本安全就当前比较流行的客户端脚本攻击进行了深入阐述。当网站的安全做到一定程度后,黑客可能难以再找到类似注入攻击、脚本执行等高风险的漏洞,从而可能将注意力转移到客户端脚本攻击上。
客户端脚本安全与浏览器的特性息息相关,因此对浏览器的深入理解将有助于做好客户端脚本安全的解决方案。
如果读者所要解决的问题比较严峻,比如网站的安全是从零开始,则建议跳过此篇,先阅读下一篇“服务器端应用安全”,解决优先级更高的安全问题。
第三篇 服务器端应用安全就常见的服务器端应用安全问题进行了阐述。这些问题往往能引起非常严重的后果,在网站的安全建设之初需要优先解决这些问题,避免留下任何隐患。
第四篇 互联网公司安全运营提出了一个大安全运营的思想。安全是一个持续的过程,最终仍然要由安全工程师来保障结果。
在本篇中,首先就互联网业务安全问题进行了一些讨论,这些问题对于互联网公司来说有时候会比漏洞更为重要。
在接下来的两章中,首先阐述了安全开发流程的实施过程,以及笔者积累的一些经验。然后谈到了公司安全团队的职责,以及如何建立一个健康完善的安全体系。
本书也可以当做一本安全参考书,读者在遇到问题时,可以挑选任何所需要的章节进行阅读。
致谢
感谢我的妻子,她的支持是对我较大的鼓励。本书的成书时日,是陪伴在她的病床边完成的,我将铭记一生。
感谢我的父母,是他们养育了我,并一直在背后默默地支持我的事业,使我最终能有机会在这里写下这些话。
感谢我的公司阿里巴巴集团,它营造了良好的技术与实践氛围,使我能够有今天的积累。
同时也感谢在工作中一直给予我帮助和鼓励的同事、上司,他们包括但不限于:魏兴国、汤城、刘志生、侯欣杰、林松英、聂万泉、谢雄钦、徐敏、刘坤、李泽洋、肖力、叶怡恺。
感谢季昕华先生为本书作序,他一直是所有安全工作者的楷模与学习的对象。
也感谢博文视点的张春雨先生以及他的团队,是他们的努力使本书最终能与广大读者见面。他们的专业意见给了我很多的帮助。
特别感谢我的同事周拓,他对本书提出了很多有建设性的意见。
联系方式:
邮箱:opensystem@gmail.com
博客:hi.baidu.com/aullik5
微博:t.qq.com/aullik5
微博:weibo.com/n/aullik5
吴翰清
2012 年1 月于杭州
安全是互联网公司的声明,也是每一位网民的最基本需求,以为天天听到到生的白帽子和你分享如何呵护生命,满足最基本需求,这是一本能味到硝烟味道的书。
——集团首席架构师 阿里云计算总裁 王坚
对于绝大多数的中小网站来说,Web安全是技术上最薄弱而又很难提高的一个环节,而这个环节上发生的问题曾让很多人寝食难安。感谢此书中分享的诸多宝贵经验,让我受益匪浅。同时,强烈建议每个技术团队的负责人都能阅读此书,定能让你受益。
——丁香园CTO冯大辉
作为互联网的开发人员,在实现功能外也需要重点关注如何避免留TXSS、CSRF等漏洞,否则很容易出现用户账号泄密、跨权限操作等严重问题,本书讲解了通常网站是如何来应对这些漏洞以及保障安全的,从这些难能可贵的实战经验中可以学习到如何更好地编写一个安全的网站。
——淘 宝博学技术专家林吴
安全问题成了互联网的梦魇,这本书的出现终于能让我们睡个好觉。
——知道创宇创始人CEO赵伟(icbm)
一直以来安全行业都不缺少所谓的技术和毫无思想的说明书式的文字,缺少的是对于安全本质的:析,关于如何更好地结合实际情况解决问题的思考,以及对这些思考的分享。吴翰清正在尝试做个事情,而且做到了。
——乌云漏洞平台创始人方小顿(剑心)
很不错的一本书,对web安全感兴趣的一定要入手一本
内容很不错。受益匪浅。以前没有接触过,这次算涨姿势了
老师推荐买的,挺好的书,还没有仔细看,好好看会有很多值得学习的地方的~
我买这本书是因为像学习一下网络的知识,不知道是不是买错了。质量很好,我很喜欢,内容生动不教条
非常好,之前看过一部分电子版,觉得不错,值得购买纸质版收藏
从未整整齐齐的收到过当当的书,不是逼不得已也不会在当当买
东西很好,很不错,正在看中;要说这快递可相当给力啊,在深圳,晚上10:30左右买的,第二天下午就到了,相当快!!
感觉还可以吧,毕竟这方面的书还是很少的,有本就算不错了吧
书不错,我想说当当网的快递慢的扣脚,而且快递连地方都找不到(广州市区),本来挺喜欢在当当网买书,现在因为快递的原因转站**了。很少再回这里买了
包装太差了,太差了。运输过程中油搞到我书上了都。。。。
当时挺不错的一本书,作者挺有名,里边介绍的东西挺全,也有代码实例,不适合入门小白看
在图书馆就翻阅了一次,对自己还是有帮助的,慢慢研读
666666666666666666666666666666666666666666666666666
一直都想买这本书,自己学些东西很有用,趁活动就一起买了,好评
阿里牛人的作品,作为项目开发安全架构参考书挺不错的了。
书本来很好,但是我想说发货的太不用心,一般新书都有塑料袋包装,这个是本裸书,里面有的页面上居然都有黑色的印记,至少三页纸上有,对书的质量表示怀疑,当当致力于卖正品吗?是吗?
书很好,很棒,封面太low,好像学了新东方的单词书
感觉书的质量不错,摸起来比较舒服。我买书一直信任当当
挺详细的,但是看着书需要有一定的基础才行,至少要懂PHP和javascript和SQL否则看不懂
这个看了一部分,感觉得有web安全测试的基础后看这本书比较好!
书很新 物流快 安全从业必备 希望能对我软考和工作有帮助
大神推荐的书,看了第一章,感觉挺不错的。虽然这本书对小白来说还是有些难度,但总的来说还是很值的。当当这次没有把书弄脏弄破挺好,希望继续保持!!!
安全咱也得学啊,网站都是对外的,安全很重要,尤其是将来大数据的时代。
难得的国人写的好书,对常见的web安全都涉及到了
每个男孩子小时候都有个做黑客的梦想,黑进女神的电脑,嘿嘿嘿
白帽子讲HWEB安全(纪T6念版)白帽子讲WREB安全(纪念版)脚本攻击()简介攻击进阶初10探强大的攻击平台终极武器:调试构造技巧变废为宝:容易被忽视的角落:真的高枕白帽子讲WEB安全(纪念版)可操作性;深入10L分