《白帽子讲Web安全(纪念版)》内容简介:在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?本书将带你走进Web安全的世界,让你了解Web安全的方方面面。黑客不再变得神秘,攻击技术原来我也可以会,小网站主自己也能找到正确的安全道路。大公司是怎么做安全的,为什么要选择这样的方案呢?你能在本书中找到答案。详细的剖析,让你不仅能“知其然”,更能“知其所以然”。
《白帽子讲Web安全(纪念版)》内容简介:在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?本书将带你走进Web安全的世界,让你了解Web安全的方方面面。黑客不再变得神秘,攻击技术原来我也可以会,小网站主自己也能找到正确的安全道路。大公司是怎么做安全的,为什么要选择这样的方案呢?你能在本书中找到答案。详细的剖析,让你不仅能“知其然”,更能“知其所以然”。
白帽子讲Web安全
吴翰清
电子工业出版社
432页
69
16
平装
978-7-121-16072-1
电子工业出版社
简体中文
计算机与互联网
2014年6月1日
《白帽子讲Web安全》
安全是互联网公司的生命,也是每一位网民的最基本需求。一位天天听到炮声的白帽子和你分享如何呵护生命,满足最基本需求。这是一本能闻到硝烟味道的书
在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?本书将带你走进Web安全的世界,让你了解Web安全的方方面面。黑客不再变得神秘,攻击技术原来我也可以会,小网站主自己也能找到正确的安全道路。大公司是怎么做安全的,为什么要选择这样的方案呢?你能在本书中找到答案。详细的剖析,让你不仅能“知其然”,更能“知其所以然”。[1]
本书是根据作者若干年实际工作中积累下来的丰富经验而写成的,在解决方案上具有极强的可操作性,深入分析了各种错误的解决方案与误区,对安全工作者有很好的参考价值。安全开发流程与运营的介绍,对同行业的工作具有指导意义。
在2010年年中的时候,博文视点的张春雨先生找到我,希望我可以写一本关于云计算安全的书。当时云计算的概念正如日中天,但市面上关于云计算安全应该怎么做却缺乏足够的资料。我由于工作的关系接触这方面比较多,但考虑到云计算的未来尚未清晰,以及其他的种种原因,婉拒了张春雨先生的要求,转而决定写一本关于Web安全的书。
我对安全的兴趣起源于中学时期。当时在盗版市场买到了一本没有书号的黑客手册,其中coolfire 的黑客教程令我印象深刻。此后在有限的能接触到互联网的机会里,我总会想方设法地寻找一些黑客教程,并以实践其中记载的方法为乐。
在2000年的时候,我进入了西安交通大学学习。在大学期间,最大的收获,是学校的计算机实验室平时会对学生开放。当时上网的资费仍然较贵,父母给我的生活费里,除了留下必要的生活所需费用之外,几乎全部投入在这里。也是在学校的计算机实验室里,让我迅速在这个领域中成长起来。
大学期间,在父母的资助下,我拥有了自己的第一台个人电脑,这加快了我成长的步伐。与此同时,我和一些互联网上志同道合的朋友,一起建立了一个技术型的安全组织,名字来源于我当时最喜爱的一部动漫:“幻影旅团”。历经十余载,“幻影”由于种种原因未能得以延续,但它却曾以论坛的形式培养出了当今安全行业中非常多的顶尖人才。这也是我在这短短二十余载人生中的最大成就与自豪。
得益于互联网的开放性,以及我亲手缔造的良好技术交流氛围,我几乎见证了全部互联网安全技术的发展过程。在前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章,读者可以通过浏览目录以进一步了解各篇章的内容。在有的章节末尾,还附上了笔者曾经写过的一些博客文章,可以作为延伸阅读以及本书正文的补充。
第一篇 我的安全世界观是全书的纲领。在此篇中先回顾了安全的历史,然后阐述了笔者对安全的看法与态度,并提出了一些思考问题的方式以及做事的方法。理解了本篇,就能明白全书中所涉及的解决方案在抉择时的取舍。
第二篇 客户端脚本安全就当前比较流行的客户端脚本攻击进行了深入阐述。当网站的安全做到一定程度后,黑客可能难以再找到类似注入攻击、脚本执行等高风险的漏洞,从而可能将注意力转移到客户端脚本攻击上。
客户端脚本安全与浏览器的特性息息相关,因此对浏览器的深入理解将有助于做好客户端脚本安全的解决方案。
如果读者所要解决的问题比较严峻,比如网站的安全是从零开始,则建议跳过此篇,先阅读下一篇“服务器端应用安全”,解决优先级更高的安全问题。
第三篇 服务器端应用安全就常见的服务器端应用安全问题进行了阐述。这些问题往往能引起非常严重的后果,在网站的安全建设之初需要优先解决这些问题,避免留下任何隐患。
第四篇 互联网公司安全运营提出了一个大安全运营的思想。安全是一个持续的过程,最终仍然要由安全工程师来保证结果。
在本篇中,首先就互联网业务安全问题进行了一些讨论,这些问题对于互联网公司来说有时候会比漏洞更为重要。
在接下来的两章中,首先阐述了安全开发流程的实施过程,以及笔者积累的一些经验。然后谈到了公司安全团队的职责,以及如何建立一个健康完善的安全体系。
本书也可以当做一本安全参考书,读者在遇到问题时,可以挑选任何所需要的章节进行阅读。
感谢我的妻子,她的支持是对我最大的鼓励。本书最后的成书时日,是陪伴在她的病床边完成的,我将铭记一生。
感谢我的父母,是他们养育了我,并一直在背后默默地支持我的事业,使我最终能有机会在这里写下这些话。
感谢我的公司阿里巴巴集团,它营造了良好的技术与实践氛围,使我能够有今天的积累。同时也感谢在工作中一直给予我帮助和鼓励的同事、上司,他们包括但不限于:魏兴国、汤城、刘志生、侯欣杰、林松英、聂万全、谢雄钦、徐敏、刘坤、李泽洋、肖力、叶怡恺。
感谢季昕华先生为本书作序,他一直是所有安全工作者的楷模与学习的对象。
也感谢博文视点的张春雨先生以及他的团队,是他们的努力使本书最终能与广大读者见面。他们的专业意见给了我很多的帮助。
最后特别感谢我的同事周拓,他对本书提出了很多有建设性的意见。
吴翰清
2012年1月于杭州
第一篇世界观安全
第1章我的安全世界观2
1.1Web安全简史2
1.1.1中国黑客简史2
1.1.2黑客技术的发展历程3
1.1.3Web安全的兴起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.1SecureByDefault原则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.1XSS简介40
3.2XSS攻击进阶43
3.2.1初探XSSPayload43
3.2.2强大的XSSPayload46
3.2.3XSS攻击平台62
3.2.4终极武器:XSSWorm64
3.2.5调试JavaScript73
3.2.6XSS构造技巧76
3.2.7变废为宝:MissionImpossible82
3.2.8容易被忽视的角落:FlashXSS85
3.2.9真的高枕无忧吗:JavaScript开发框架87
3.3XSS的防御89
3.3.1四两拨千斤:HttpOnly89
3.3.2输入检查93
3.3.3输出检查95
3.3.4正确地防御XSS99
3.3.5处理富文本102
3.3.6防御DOMBasedXSS103
3.3.7换个角度看XSS的风险107
3.4小结107
第4章跨站点请求伪造(CSRF)109
4.1CSRF简介109
4.2CSRF进阶111
4.2.1浏览器的Cookie策略111
4.2.2P3P头的副作用113
4.2.3GET?POST?116
4.2.4FlashCSRF118
4.2.5CSRFWorm119
4.3CSRF的防御120
4.3.1验证码120
4.3.2RefererCheck120
4.3.3AntiCSRFToken121
4.4小结124
第5章点击劫持(ClickJacking)125
5.1什么是点击劫持125
5.2Flash点击劫持127
5.3图片复盖攻击129
5.4拖拽劫持与数据窃取131
5.5ClickJacking3.0:触屏劫持134
5.6防御ClickJacking136
5.6.1framebusting136
5.6.2X—Frame—Options137
5.7小结138
第6章HTML5安全139
6.1HTML5新标签139
6.1.1新标签的XSS139
6.1.2iframe的sandbox140
6.1.3LinkTypes:noreferrer141
6.1.4Canvas的妙用141
6.2其他安全问题144
6.2.1Cross—OriginResourceSharing144
6.2.2postMessage——跨窗口传递消息146
6.2.3WebStorage147
6.3小结150
第三篇服务器端应用安全
第7章注入攻击152
7.1SQL注入152
7.1.1盲注(BlindInjection)153
7.1.2TimingAttack155
7.2数据库攻击技巧157
7.2.1常见的攻击技巧157
7.2.2命令执行158
7.2.3攻击存储过程164
7.2.4编码问题165
7.2.5SQLColumnTruncation167
7.3正确地防御SQL注入170
7.3.1使用预编译语句171
7.3.2使用存储过程172
7.3.3检查数据类型172
7.3.4使用安全函数172
7.4其他注入攻击173
7.4.1XML注入173
7.4.2代码注入174
7.4.3CRLF注入176
7.5小结179
第8章文件上传漏洞180
8.1文件上传漏洞概述180
8.1.1从FCKEditor文件上传漏洞谈起181
8.1.2绕过文件上传检查功能182
8.2功能还是漏洞183
8.2.1Apache文件解析问题184
8.2.2IIS文件解析问题185
8.2.3PHPCGI路径解析问题187
8.2.4利用上传文件钓鱼189
8.3设计安全的文件上传功能190
8.4小结191
第9章认证与会话管理192
9.1WhoamI?192
9.2密码的那些事儿193
9.3多因素认证195
9.4Session与认证196
9.5SessionFixation攻击198
9.6Session保持攻击199
9.7单点登录(SSO)201
9.8小结203
第10章访问控制205
10.1WhatCanIDo?205
10.2垂直权限管理208
10.3水平权限管理211
10.4OAuth简介213
10.5小结219
第11章加密算法与随机数220
11.1概述220
11.2StreamCipherAttack222
11.2.1ReusedKeyAttack222
11.2.2Bit—flippingAttack228
11.2.3弱随机IV问题230
11.3WEP破解232
11.4ECB模式的缺陷236
11.5PaddingOracleAttack239
11.6密钥管理251
11.7伪随机数问题253
11.7.1弱伪随机数的麻烦253
11.7.2时间真的随机吗256
11.7.3破解伪随机数算法的种子257
11.7.4使用安全的随机数265
11.8小结265
(附)UnderstandingMD5LengthExtensionAttack267
第12章Web框架安全280
12.1MVC框架安全280
12.2模板引擎与XSS防御282
12.3Web框架与CSRF防御285
12.4HTTPHeaders管理287
12.5数据持久层与SQL注入288
12.6还能想到什么289
12.7Web框架自身安全289
12.7.1Struts2命令执行漏洞290
12.7.2Struts2的问题补丁291
12.7.3SpringMVC命令执行漏洞292
12.7.4Django命令执行漏洞293
12.8小结294
第13章应用层拒绝服务攻击295
13.1DDOS简介295
13.2应用层DDOS297
13.2.1CC攻击297
13.2.2限制请求频率298
13.2.3道高一尺,魔高一丈300
13.3验证码的那些事儿301
13.4防御应用层DDOS304
13.5资源耗尽攻击306
13.5.1Slowloris攻击306
13.5.2HTTPPOSTDOS309
13.5.3ServerLimitDOS310
13.6一个正则引发的血案:ReDOS311
13.7小结315
第14章PHP安全317
14.1文件包含漏洞317
14.1.1本地文件包含319
14.1.2远程文件包含323
14.1.3本地文件包含的利用技巧323
14.2变量复盖漏洞331
14.2.1全局变量复盖331
14.2.2extract()变量复盖334
14.2.3遍历初始化变量334
14.2.4import_request_variables变量复盖335
14.2.5parse_str()变量复盖335
14.3代码执行漏洞336
14.3.1“危险函数”执行代码336
14.3.2“文件写入”执行代码343
14.3.3其他执行代码方式344
14.4定制安全的PHP环境348
14.5小结352
第15章WebServer配置安全353
15.1Apache安全353
15.2Nginx安全354
15.3jBoss远程命令执行356
15.4Tomcat远程命令执行360
15.5HTTPParameterPollution363
15.6小结364
第四篇互联网公司安全运营
第16章互联网业务安全366
16.1产品需要什么样的安全366
16.1.1互联网产品对安全的需求367
16.1.2什么是好的安全方案368
16.2业务逻辑安全370
16.2.1永远改不掉的密码370
16.2.2谁是大赢家371
16.2.3瞒天过海372
16.2.4关于密码取回流程373
16.3账户是如何被盗的374
16.3.1账户被盗的途径374
16.3.2分析账户被盗的原因376
16.4互联网的垃圾377
16.4.1垃圾的危害377
16.4.2垃圾处理379
16.5关于网络钓鱼380
16.5.1钓鱼网站简介381
16.5.2邮件钓鱼383
16.5.3钓鱼网站的防控385
16.5.4网购流程钓鱼388
16.6用户隐私保护393
16.6.1互联网的用户隐私挑战393
16.6.2如何保护用户隐私394
16.6.3Do—Not—Track396
16.7小结397
(附)麻烦的终结者398
第17章安全开发流程(SDL)402
17.1SDL简介402
17.2敏捷SDL406
17.3SDL实战经验407
17.4需求分析与设计阶段409
17.5开发阶段415
17.5.1提供安全的函数415
17.5.2代码安全审计工具417
17.6测试阶段418
17.7小结420
第18章安全运营422
18.1把安全运营起来422
18.2漏洞修补流程423
18.3安全监控424
18.4入侵检测425
18.5紧急响应流程428
18.6小结430
(附)谈谈互联网企业安全的发展方向431
对于绝大多数的中小网站来说,Web安全是技术上最薄弱而又很难提高的一个环节,而这个环节上发生的问题曾让很多人寝食难安。感谢此书中分享的诸多宝贵经验,让我受益匪浅。同时,强烈建议每个技术团队的负责人都能阅读此书,定能让你受益。
——丁香园CTO冯大辉
作为互联网的开发人员,在实现功能外也需要重点关注如何避免留TXSS、CSRF等漏洞,否则很容易出现用户账号泄密、跨权限操作等严重问题,本书讲解了通常网站是如何来应对这些漏洞以及保障安全的,从这些难能可贵的实战经验中可以学习到如何更好地编写一个安全的网站。
——淘 宝资深技术专家林吴
安全问题成了互联网的梦魇,这本书的出现终于能让我们睡个好觉。
——知道创宇创始人CEO赵伟(icbm)
一直以来安全行业都不缺少所谓的技术和毫无思想的说明书式的文字,缺少的是对于安全本质的:析,关于如何更好地结合实际情况解决问题的思考,以及对这些思考的分享。吴翰清正在尝试做个事情,而且做到了。
——乌云漏洞平台创始人方小顿(剑心)
1.白帽子讲Web安全·孔夫子旧书网
中国的手机号码是十一位的原因:一是我国手机用户量不断增长,号码资源需求不断增加,所以由以前的10位升到了11位;二是手机号需...
发育性髋关节发育不良(DDH)又称发育性髋关节脱位,是儿童骨科最常见的髋关节疾病,发病率在1‰左右,女孩的发病率是男孩的6倍...
贵阳市第二十五中学:校园设施设备完善,环境优美,绿树成荫,具有良好的育人环境,2004年被授予贵州省绿色学校称号。中文名贵阳...