此文刊登在《程序员》三月期,有删改

提到安全问题,首先想到应付这些问题的应该是系统管理员以及后台开发工程师们,而前端开发工程师似乎离这些问题很遥远。然而,在 2008 年发生在安全领域的一系列 Web 安全事件,改变了人们对于传统安全的观念。让我们在这里简要回顾下:

IE7 的 0day 漏洞以及 Chrome 崩溃事件

2008 年的年底, IE7 爆出了个很严重的安全漏洞 。与往期微软的漏洞不同,这次的漏洞是从 IE7 发布时起就存在(这也是称之为 0day 漏洞的原因)。

该漏洞的原理,就是通过解析某段精心构造的 XML 造成 IE7 内存溢出,进而可执行任意的代码。虽然官方很快发布了此漏洞的补丁,但此漏洞仍然影响至今。

另个类似的浏览器风波,就是 Google 在 08 年 Q3 发布 Chrome 浏览器。在 Chrome 发布当天,黑客们就发现只要在地址栏中输入构造好的字符就能导致浏览器崩溃。此后即便 Google 迅速的修复了该漏洞,但已经对用户造成了非常糟糕的印象。

感叹:浏览器平台的安全问题,直接影响着该浏览器日后的市场份额。好比当年 Firefox 起家时也正因着重打安全这张重牌,才有今日的收获。即将推出的 IE8 浏览器,微软已经在各种场合大肆宣扬该新浏览器的安全性能。由此,正说明各浏览器厂商对安全这块的重视程度。相信目前正酣的浏览器战场,对于安全这块必然是兵家必争之地。

各微博客的 CSRF 和 Clickjacking 漏洞

微博客的流行是 Web2.0 大潮中的奇葩,然而近期爆发的 饭否、叽歪、Twitter 等的安全漏洞,着实让前端开发工程师大开眼界。 饭否 和 叽歪 的 CSRF 漏洞 ,使得攻击者能通过段 Javascript 代码在用户不知情的情况下,向微博客服务器发布相应的消息,从而造成攻击。

感叹:客户端的 Javascript 脚本早已经摆脱仅仅是显示页面效果的「玩具」,它已经变成一把利刀。这把刀能帮前端解决问题的同时,也能伤害到用户。

同比,年初爆发的 Twitter Clickjacking 漏洞 ,它将 Twitter 的发布页面通过 iframe 嵌入到第三方页面,然后通过 CSS 使得并将 Twitter 的发布按钮与第三方页面的按钮重合。这样,当用户本意点击第三方页面的按钮时,实际上点击的是 Twitter 页面的发布按钮,进而造成攻击。

感叹:前端攻击方式也正逐渐的升级,防范前端代码的攻击不仅仅就是防范 Javascript 等前端脚本,CSS 甚至 HTML 也能构成攻击。

「精武门」安全峰会

「精武门」安全峰会是阿里巴巴集团组织的针对 Web 应用安全的研讨会。和往年讨论后台安全不同,今年重点着重讨论 Web 攻击的方式和防范。众多国内著名的安全小组集聚一堂,讨论目前国内 Web 应用的前端安全问题。

感叹:在见识了琳琅满目的攻击方式的同时,也引发了对于未来国内 Web 应用安全的思考。

后记

Web 2.0 以降,前端这个职位已从传统「美工」,蜕变成用户体验的实现者。然而随着浏览器提供的功能日益强大、各种 Web 应用的日趋复杂,安全这块被传统笼罩的「灰色地带」,也正进入每个前端开发工程师的视线。相信在不久的将来,前端开发工程师作为新生的安全力量,必占有十分重要的一席。