前言
安全之路任重道远,前端安全是众多安全中的一个分支,互联网上各种网站让人眼花,千奇百怪的业务需求、安全问题,真要做好安全架构又谈何容易呢?我们知道,这次我们仅仅为互联网安全的进化奠定了一块砖头而已。
本书点透了很多关键的点,每个点的内容不一定覆盖完全,也不一定用了足够的文字进行描述,往往适可而止,但这些点却是Web前端安全基石的重要组成,如:信任与信任关系、Cookie安全、Flash安全、DOM渲染、字符集、跨域、原生态攻击、高级钓鱼、蠕虫思想等。
我们试图尽最大的努力使本书的内容涵盖完全,但发现这是不可能的事。闻道有先后,术业有专攻,我们写出了我们擅长的点,还有很多点是我们不敢去写的,时间与精力是我们最大的障碍。另外,我们认为,本书的知识点足以打开Web前端黑客的大门,有了这些沉淀后,大家完全可以持续跟进国内外优秀的技术文章与案例进行内功修炼,并在各种实战中不断加强。
网站安全是一个大问题,安全关注点也在逐渐转移,从刚开始的服务端安全,如缓冲区溢出、CGI解析缺陷、纯Web层面的SQL注入等,到客户端安全,如XSS跨站脚本、CSRF跨站请求伪造等。大家的意识与防御层面也随着Web安全的发展进化着。对网站来说,重视某些安全风险最好的办法就是将该风险最大化,这也是本书的目的,最终是让Web更好、更安全。
一些约定
· 本书说的前端都指Web前端,也可以说是客户端,或者浏览器端。
· 本书涉及的前端安全舞台基本上都是浏览器。浏览器更新换代的速度非常快,也许在你看到本书时,一些技巧已经不适用了。没关系,因为思想更重要,我们在撰写本书时默认使用的主流浏览器的最新版本是:Firefox 15、Chrome 21、IE 9。
前端黑客的内容
前端安全主要有三类:XSS、CSRF、界面操作劫持。从XSS到CSRF,再到界面操作劫持,越往后,社工(社会工程学的简称)成分越浓厚。我们会发现这个Web世界越不可信,攻击也似乎变得越无聊,实施这类攻击的代价也越来越大。界面操作劫持需要很好的美工基础,因此,你让一个黑客去搞美工是不太现实的,因为现在有很多好的方式可以黑下目标。
所以,本书关于界面操作劫持的内容更多的是具有研究性质的,而很少用于真正的攻击,即使我们已经完成了一些很有意义的攻击事件(比如,针对Google Reader的蠕虫事件),但都是善意的,在真正的黑客攻击活动中,这样做的可能性很小。
有一点我们都应该明白,当前还不具备“黑客攻击活动”价值的风险,以后可能会具备,回头看看整个安全发展史就可以发现这个规律。至少XSS与CSRF已经具备这样的价值,而且发展得如火如荼。这也是本书的重点内容。
为什么进行前端黑客研究
Web从Web 1.0到Web 2.0,一个用户参与度与黏性都很高的Web时代,且Web 2.0又细分出许多不同的领域(微博、旅游、交友、餐饮、医疗、购物等),各种海量的隐私数据可以在这些Web 2.0网站中找到。前端黑客是随着这个趋势发展起来的,通过前端黑客技巧,往往很容易就掌控了目标用户的隐私数据。
另外,攻击时获取各种隐私数据或者破坏数据,其实很多时候都可以在前端攻击中完成,而且目前看来由于安全意识的问题,很多安全焦点都还在服务端,比如,OS(操作系统)加固得如何、数据库加固得如何、SQL查询是否参数化了、是不是存在弱口令等。那么,前端安全就被忽略了,在某些场景中,前端漏洞,比如一个XSS漏洞的价值就很大,而且前端攻击同样也可以大规模地进行,造成很大的影响。
我们在很多次的实战中运用了前端黑客技术,这是一种具备实战意义的技术,非常值得大家深入了解。
前端黑客技术的研究是一种趋势,它已经成形了,这就是我们为什么要介绍前端黑客的原因,也是本书诞生的最根本原因。
阅读指南
本书共10章,每章的关联性不强,大家可以根据自己的喜好跳跃性地阅读,不过我们建议从头到尾地阅读,因为每章的信息量都比较大,我们没法完全照顾初学者,很多更基础的知识点需要自己去弥补。
第1章介绍Web安全的几个关键点。这些关键点是我们研究前端安全的意识点,缺乏这些关键意识,就很难真正弄懂前端安全,本章的内容值得细细阅读。
第2章介绍前端基础。实际上,其中的很多内容并非真正的基础,本书不会像传统的教材那样回顾那些语言的语法、用法等,我们会从安全的角度出发,介绍前端角色(URL、HTTP、HTML、JavaScript、CSS、ActionScript等)的行为,以此来理解做前端安全都需要具备哪些基本技能,我们觉得基础是关键,所以本章内容会比较多。
第3章介绍前端黑客之XSS,第4章介绍前端黑客之CSRF,第5章介绍前端黑客之界面操作劫持,这几章的内容都不多,但却是理解XSS、CSRF、界面操作劫持的关键,为更好地理解后面的章节打好基础。
第6章介绍漏洞挖掘。这是难度非常大的部分,我们不可能涵盖完全,甚至有些知识点我们都无法详细介绍,只是尽可能地将我们的经验与大家分享,其中涉及很多漏洞挖掘思想与技巧,需要大家仔细理解,同时希望大家能够举一反三,激发出更多的挖掘思路。
第7章介绍漏洞利用。有了前面的知识后,我们又面对一个高难度的过程,这是前端黑客渗透实战的关键步骤。本章给出了很多经典的攻击向量,并剖析了多个真实案例。
第8章介绍HTML5安全。这是一个很火热的概念,虽然我们在前面章节中提到了HTML 5安全,不过还是有必要用单独一章将更多的内容集中展现出来。
第9章介绍Web蠕虫。实际上就是Web 2.0里发生的蠕虫攻击,包括XSS蠕虫、CSRF蠕虫、ClickJacking蠕虫等,其中的案例都很经典,这基本属于前端黑客攻击的中级篇,而高级篇属于某些真正的前端黑客渗透实战。
第10章介绍关于防御。黑客不是专搞攻击的,在之前的一些章节中,我们在介绍攻击时,有必要也会提到防御,同时我们专门在本章从三个角度出发(浏览器厂商、Web厂商、用户),给出了更多的防御建议,作为全书的终结。
作者
特别说明:我们计划上线web2hack.org,定位:Web前端黑客相关资源与观点的分享,请大家关注。
致谢
我要感谢的人太多。首先要感谢我老婆的大力支持,如果不是她,这本书的问世也许会更晚。她舍弃了很多本该休闲游玩的时间陪着我,目的就是让我能专心写完此书,我承诺我会爱她一辈子,多陪她,这本书献给她。
感谢我父母的关爱,他们从来不会索取任何回报,我希望他们以我为荣。
感谢本书的第二作者xisigr,他说我感染了他,让他有了巨大的激情。而我认为是他感染了我,要不是他,本书很难问世,他是一个做事认真,又喜欢养各种奇怪小动物的人,他虽然身在传统安全厂商,但却有一颗做互联网的心。
感谢monyer为本书的混淆代码添加了各种好料,他是一名难得一见的高效率、高智商的实战黑客。
感谢XEYE团队的其他成员,他们很低调,名字都不让我提,但是熟悉的人都认识他们,他们是一群可爱的人,能和他们结交是我的幸运,我们每次相聚总有一种亲切感,这是一个难得的团队。
感谢我所在的知道创宇安全研究团队,他们给了我很多的支持与灵感,他们在做着Web安全领域很酷的事情,大家可以感受到他们的分享精神。
感谢黑哥(网名:superhei)为本书提供了大量建议与错误指正。黑哥是一位让我由衷欣赏的人,他的身上体现出了那种亦正亦邪的黑客精神,这种精神的感染力很大。他说,如果他写这本书,就完全不是这样的风格,所以,大家如果要了解更多,看他的博客去吧,或者结交他。
感谢毕宁,没有他的帮助,根本不会有这本书,很荣幸,他现在与我共事了,我们在知道创宇公司工作,他是一位值得结交的豪爽之人。
感谢soglili(李普君),这个小孩的思维与常人不同,是一个非常聪明的人,他喜欢无约束地做事,他为本书贡献了许多混淆代码。感谢那些为本书添砖加瓦的人,还有微博、QQ群里以及身边那些支持我的朋友们,以及为Web前端安全发展做出各种贡献的跨站师们,本书的很多灵感来源于他们。
最后要感谢我的公司知道创宇,我在2008年毕业前就跟随公司一起创业到现在,当时的几位前辈给了我很多指点。公司从几人小团队到现在初具规模,我们一直往我们的使命奔跑前进,我们天生具备大数据处理的基因。为了生存,我们在传统的安全市场上和竞争对手抢江山,现在我们又在互联网上攻城略地,一个还不大的团队做了很多事,因为我们的愿景是让互联网更好、更安全,我们会一直努力下去。
时间对我来说非常宝贵,我只能用我的业余时间把我们所知的写出来,与大家共享,如果有错误的地方,还希望各位不吝赐教。
第一作者 钟晨鸣(网名:余弦)
我于2008年加入天融信阿尔法实验室,同年加入了XEYE团队。时至今日,每逢XEYE聚会,我们都会聊起各自加入XEYE时的趣闻轶事。写书也是在聚会上说起的,印象中应该是2009年冬天在好伦哥聚餐……而开始动笔去写已是2011年3月。如今,书已经定稿了。细数上面我提及的几个日期数字,真是白驹过隙。
我要把这本书奉献给我挚爱的妻子,因为见到她第一眼时,我不知道现在她对我如此重要。
感谢我的父母时常在电话里给予我的鼓励。感谢余弦提供的这个机会,使我可以为本书执笔,这些年他一直是我的良师益友。
最后要感谢天融信阿尔法实验室自由的优越的工作氛围,那里赋予我更多独立思考的空间。
最后我想说的是,这本书倾尽了我们的心血,在引领读者走进Web前端安全的同时,如果还能有幸提升Web安全界的整体水平,那我们将感到无比荣耀。
第二作者 徐少培(网名:xisigr)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论