Web 2.0應(yīng)用安全深入解析
◆Web 2.0 應(yīng)用安全解決方案
什么是 Web2.0 ?它包含了哪些技術(shù)?這些技術(shù)的產(chǎn)生又對網(wǎng)絡(luò)應(yīng)用安全帶來了哪些隱患和風險?本文從這些問題著手,重點探討 Web2.0 時代的技術(shù)特征和應(yīng)用安全,并通過結(jié)合明鑒Web應(yīng)用弱點掃描器安全解決方案,為大家提供面對新時代、新問題的應(yīng)用安全應(yīng)對思路。
一、什么是Web2.0?
Web 2.0,是由 O'Reilly 公司在 2003 年造的一個詞,2004 年召開 Web 2.0 大會之后,這個詞就流行起來,意指基于 Web 的下一代社區(qū)和托管服務(wù),比如社會網(wǎng)絡(luò)、維基百科、大眾分類等等,幫助 Web 用戶協(xié)作和分享。
二、Web 2.0 成功的核心模式
Web 2.0 和過去的 Web 1.0 之間有什么不同?討論這個話題,最權(quán)威的莫過于 Tim O'Reilly 所寫的"什么是 Web 2.0?",我在這里拾人牙慧,概述一下我的理解。Web 的演變是持續(xù)進行的,Web 就像是有生命的實體,在不斷生長,所以當我們說 Web 2.0 和 Web 1.0 之間的差別時,是一個相對靜態(tài)的階段性觀點,而不是絕對的。如前所述,Web 2.0 是指互聯(lián)網(wǎng)泡沫之后,人們使用 Web 的方式的巨大變化,開發(fā)人員、最終用戶和商家,都在不斷地實踐新的方法。幾年過去,他們?nèi)〉昧撕芏嗔瞬黄鸬某晒?,締造了很多成功?Web 2.0 公司,從 Google、Salesforce、MySpace、Flickr、Delicious、YouTube、Linkedin 到今天十分火爆的 Facebook,具有 Web 2.0 特征的公司,風起云涌。如何定義 Web 2.0 不重要,重要的是 Web 2.0 背后的模式和原則,這些模式對于 Web 2.0 的成功至關(guān)重要。
Web 2.0 具有八個核心模式,它們分別是:
群眾智慧(Collective Intelligence)
建立一個參與架構(gòu),借助網(wǎng)絡(luò)效應(yīng)和算法,使得軟件隨著使用的人越來越多而變得越來越好。
數(shù)據(jù),下一個"Intel Inside"
利用獨特、難以復制的數(shù)據(jù)源,成為這個時代的"Intel Inside",其中,數(shù)據(jù)變得跟功能一樣重要,成為核心競爭能力。
"復合"創(chuàng)新
建立一個平臺,通過數(shù)據(jù)和服務(wù)的組合,來創(chuàng)造新的市場和機會。
豐富用戶體驗
超越傳統(tǒng)的 Web 頁面模式,讓在線應(yīng)用擁有桌面應(yīng)用一樣的豐富用戶體驗。
支持多種設(shè)備
支持各種連接到因特網(wǎng)的設(shè)備,為用戶提供無所不在、無縫的在線體驗。
軟件即服務(wù)(Software as a Services,SaaS),和永久試驗版(Perpetual Beta)
改變了傳統(tǒng)軟件開發(fā)和使用的模式,轉(zhuǎn)向永久在線、持續(xù)更新、軟件即服務(wù)的模式。
利用長尾
借助因特網(wǎng)帶來的接觸極大規(guī)??蛻舻哪芰σ约皹O低成本的營銷方式,來獲得細分的"利基"(niche)市場的利潤。
輕量級模型和低成本優(yōu)勢的可擴充能力
利用輕量級的商業(yè)模型和軟件開發(fā)模式,來快速、廉價地構(gòu)造產(chǎn)品和服務(wù)。
以上幾個模式,分別關(guān)注不同方面,但是它們由如下幾個 Web 2.0 的特質(zhì)而相互關(guān)聯(lián)起來:
大規(guī)?;ミB
今天我們從過去一對多的發(fā)布和通信,轉(zhuǎn)向多對多的連接,網(wǎng)絡(luò)效應(yīng)使得邊際同核心一樣重要,顛覆著舊的通信、發(fā)布、分發(fā)和聚合模式。
去中心化
這種大規(guī)模互聯(lián),也顛覆著傳統(tǒng)的控制和權(quán)力結(jié)構(gòu),帶來更大程度的去中心化。從全球信息流動,營銷,到新產(chǎn)品設(shè)計,這種發(fā)自底層的草根力量, 都在"叫板"來自權(quán)力階層的聲音。系統(tǒng)更多地從通過邊沿的拉動來生長,而不是借助核心的推動向外生長。
以用戶為中心
網(wǎng)絡(luò)效應(yīng)給予用戶前所未有的力量,他們參與、對話、協(xié)作,最終產(chǎn)生巨大的影響。消費者可以說話、交流和討論他們的經(jīng)驗,他們擁有控制權(quán),積極主動地影響著產(chǎn)品的方向,同時也對那些積極應(yīng)對的公司報以忠誠和口口相傳的口碑營銷。#p#
開放
這種開放性,是以因特網(wǎng)的開放技術(shù)標準為基礎(chǔ)的,但很快地演進到一個由開放應(yīng)用所構(gòu)成的生態(tài)系統(tǒng),這些應(yīng)用建構(gòu)在開放數(shù)據(jù)、開放 API 和可重用的組件之上。開放,還意味著超越技術(shù)層次的更大程度的透明性,如公司對外溝通,共享知識產(chǎn)權(quán)、產(chǎn)品的開發(fā)過程等。
輕量級
軟件由小團隊使用敏捷方法設(shè)計和開發(fā),使用簡單數(shù)據(jù)格式和協(xié)議,采用運行開銷小的平臺和框架,應(yīng)用和服務(wù)部署簡易,商業(yè)上力圖保持低的投資和成本,營銷上利用簡單的消費者之間的口口相傳來形成病毒式傳播。
自然浮現(xiàn)
不是依靠預(yù)先完整定義好的應(yīng)用結(jié)構(gòu),而是讓應(yīng)用的結(jié)構(gòu)和行為隨著用戶的實際使用而靈活適應(yīng)和自然演變;成功來自合作,而不是控制。
這些特質(zhì),Web 2.0 的應(yīng)用體現(xiàn)得越來越多,由這樣的應(yīng)用所構(gòu)成的應(yīng)用生態(tài)系統(tǒng),具備了將大規(guī)模個性化的信息和服務(wù)帶給極大規(guī)模普通人的潛力。
三、Web2.0 部分技術(shù)淺析
Web2.0 中涉及了很多名詞和術(shù)語,比如 Tags、Blogs、Ajax、Flex、MalWare、Wiki、RSS、Social Networking、Podcast、Mushup等等。由于篇幅所限,我們僅在本章節(jié)分析 Ajax、Flex。
3.1、Ajax 和 Web2.0
Ajax 全稱為"Asynchronous JavaScript and XML"(異步 JavaScript 和 XML),是一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。在 Web1.0 時代中,客戶端瀏覽器和服務(wù)器之間的通訊是同步的,也就是說,當我們在 Web 頁面上填寫表單(例如使用搜索功能),請求就會發(fā)送到服務(wù)器上,經(jīng)過處理后,服務(wù)器將完整的結(jié)果頁面再次發(fā)送回來??梢钥闯?,發(fā)送請求的前后兩個頁面,很多內(nèi)容是完全重復的。這種做法的反復執(zhí)行,極大的浪費了網(wǎng)絡(luò)帶寬,也浪費了使用者很多等待多余信息的寶貴時間。
Ajax 應(yīng)用則可以和服務(wù)器通訊更改過的內(nèi)容。它借助于客戶端的 JavaScript 處理來自服務(wù)器的響應(yīng)。同時,還有很多任務(wù)是由客戶端本身來完成。因此,在網(wǎng)絡(luò)上的數(shù)據(jù)交換更少、Web 服務(wù)器的處理時間更短。用戶感覺到的是更快的請求響應(yīng)速度。
由于 Ajax 良好的用戶體驗,被認為是 Web2.0 的典型技術(shù)特征,已經(jīng)在很多成熟應(yīng)用中被廣泛采納,如大家熟悉的 Google 地圖、Google 搜索建議、Gmail 等。要了解更多 Ajax 信息,請訪問 http://www.openajax.org/index.php
3.2、Ajax 技術(shù)特征
3.2.1 Ajax 動態(tài)特征
Ajax 是構(gòu)建在 DHTML(動態(tài) HTML)技術(shù)之上的,這包括:
JavaScript:在 Web 應(yīng)用客戶端廣泛使用的腳本語言;
DOM:Document Object Model,文檔對象模型,用來代表 HTML 或 XML 文檔的標準對象模型,當前瀏覽器都支持 DOM 并且允許 JavaScript 代碼使用 DOM 來動態(tài)修改 HTML 內(nèi)容;
CSS:Cascading Style Sheets,級聯(lián)樣式表,是一種用來描述 HTML 文檔展現(xiàn)的樣式表語言,JavaScript 可以在訪問 Web 頁面時動態(tài)修改 CSS。通過這些動態(tài)技術(shù),在 Ajax 應(yīng)用中,客戶端 JavaScript 通過動態(tài)修改 DOM 樹結(jié)構(gòu)和 CSS,實現(xiàn)了動態(tài)的更新 Web 頁面。
3.2.2 Ajax 異步通訊特征
前面提到,Ajax 可以和服務(wù)器交換更改過的、而非整個頁面的內(nèi)容。這種異步通訊,是通過如下技術(shù)實現(xiàn)的:
JSON:JavaScript Object Notation,是一種基于文本(類似于 XML)、輕量級的數(shù)據(jù)交換格式。在 Web 應(yīng)用中,可以使用 JSON 傳輸字符串、數(shù)字、二進制,或是數(shù)組、對象等等。由于它格式簡單、容易理解、容易解析,是目前在 Ajax 應(yīng)用中最為靈活的數(shù)據(jù)交換解決方案。
XMLHttpRequest 對象:是 XMLHTTP API 函數(shù)集的一個對象。該函數(shù)集在 Web 瀏覽器和服務(wù)器之間收發(fā) XML 或其它數(shù)據(jù)。一個由 XMLHttpRequest 對象發(fā)送的 HTTP 請求并不要求頁面中擁有或返回一個< form >元素,這意味著該對象的 send() 方法可以立即返回,從而讓 Web 頁面上的其它 HTML/JavaScript 元素繼續(xù)由瀏覽器處理,而由服務(wù)器處理該 HTTP 請求并發(fā)送響應(yīng)。通過這樣的機制,實現(xiàn)動態(tài)更新頁面部分元素,而無需傳遞整個頁面的效果。它是當今 Ajax 和 Web2.0 應(yīng)用的技術(shù)基礎(chǔ)。#p#
3.2.3 Ajax 非同源調(diào)用特征
在介紹 Ajax 調(diào)用之前,我們先來看看瀏覽器的"同源安全模型"。同源模型是客戶端腳本運行的重要安全度量標準,它指的是來自于同一個"源"的腳本可以互相訪問其方法和 屬性,而拒絕非同"源"的訪問。該模型的精髓是:它認為從任何站點裝載的內(nèi)容是不安全的,當被瀏覽器不太信任的腳本運行時,它們應(yīng)該只被允許訪問來自同一 站點的資源,而不是那些來自其它站點可能懷有惡意的資源。這里"源"包含了 Domain、Protocol 和 Port。當采用同源策略時,來自于 http://www.example.com/dir/page.html 頁面的腳本 A,可以訪問和使用來自 http://www.example.com/dir2/other.html 頁面的腳本 B,因為兩者在 Domain(www.example.com)、Protocol(http 協(xié)議)和 Port(默認為 80)上是一樣的,被認為是同源;而腳本 A 不能訪問 http://www.example.com:81/dir2/other.html 頁面的腳本 C,因為他們不是同一個 Port,被認為非同源。
為什么要有同源的限制呢?這是瀏覽器提供的最為基礎(chǔ)的安全保障之一。如果放開同源限制,黑客就可以通過引誘用戶訪問嵌入在自己惡意站點上的正 常應(yīng)用(如用 Iframe 將銀行登錄頁面嵌入到黑客的惡意應(yīng)用中),當用戶訪問該應(yīng)用時,攻擊腳本就可以在不同源之間互訪,竊取用戶登錄信息,或者跟蹤用戶的各種操作。
3.3 Ajax 應(yīng)用安全隱患
雖然 Ajax 技術(shù)極大地推動了 Web2.0(如 Mushup 應(yīng)用)的發(fā)展,但是由于上述討論的 Ajax 特征(動態(tài)、異步、突破同源限制),給應(yīng)用安全帶來了隱患。
3.3.1 Ajax 和 XSS(跨站腳本攻擊)
XSS 是目前發(fā)生頻率最高的網(wǎng)絡(luò)攻擊手段之一,它是通過引誘用戶執(zhí)行惡意的 JavaScript 腳本(如引誘用戶點擊包含惡意腳本的鏈接),來達到竊取用戶信息或者實現(xiàn)其它惡意行為的目的。正是由于 Web2.0 鼓勵信息分享、信息交互和協(xié)作,用戶就有了更多的機會去看、去修改他人的信息,比如通過 Wiki、Blog 或 SNS(Social Networking Service),從而創(chuàng)造了更多的 XSS 攻擊機會。Web1.0 時代的 XSS,是作為服務(wù)器端 Web 應(yīng)用安全隱患被廣泛注意,由于 Ajax,它已經(jīng)蔓延到客戶端?,F(xiàn)在的瀏覽器允許在 Web 頁面運行時主動插入 HTML 代碼(比如使用 innerHTML 屬性),如果這些代碼中包含惡意的 JavaScript,則會被瀏覽器立刻執(zhí)行,帶來安全隱患。
3.3.2 Ajax 和 CSRF(跨站請求偽造)
CSRF 中,攻擊者在用戶完全未察覺的情況下,代表用戶發(fā)送請求。這可以通過引誘用戶點擊鏈接,或是將請求嵌入到 Image Tag 等 HTML 標記中,強迫用戶發(fā)送。這里列舉一個攻擊場景:攻擊者向用戶發(fā)送一封電子郵件,郵件中包含一個銀行鏈接請求,請求的目的是從用戶的銀行賬戶向攻擊者賬戶進 行轉(zhuǎn)賬,用戶使用該鏈接進入銀行網(wǎng)站并進行了登錄操作,該請求就會偕同用戶 Cookie 信息自動發(fā)送給銀行。如果銀行網(wǎng)站僅把 Cookie 值當做驗明用戶身份的唯一手段,那么 Web 應(yīng)用就認為該請求是合法的,轉(zhuǎn)賬操作立刻被執(zhí)行。
在 Ajax 應(yīng)用中,客戶端和服務(wù)器的交互是通過 HTTP 協(xié)議實現(xiàn)的,如果站點安全保護措施不夠強健,一旦 CSRF 成功,將會帶來一系列隱患,如利用 Web-Mail 服務(wù)發(fā)送郵件、代表用戶在 Blog 上寫注釋、在 SNS 中修改用戶信息等等。
3.3.3 Ajax 和 DoS(拒絕服務(wù)攻擊)
DoS 是通過某種手段讓服務(wù)器資源耗盡,阻斷正常用戶訪問的攻擊方法。比如說向服務(wù)器提交大量請求,使服務(wù)器負荷過重。用戶瀏覽器如果可以執(zhí)行第三方 JavaScript,就會帶來 DoS 攻擊的可能性,因為第三方 JavaScript 邏輯中,很可能包含大量導致服務(wù)器資源耗盡的循環(huán)程序,所以允許大量 JavaScript 使用的 Ajax 應(yīng)用中,DoS 攻擊概率大大提高。
3.3.4 其它安全隱患
Mushup 應(yīng)用通常是將任意第三方的 mushup 組件組合在一起,如果攻擊者向 Mushup 應(yīng)用提供了惡意的 mushup 組件,同時該應(yīng)用沒有提供足夠的安全保護的話,用戶和整個 Mushup 應(yīng)用就面臨著巨大的安全隱患。因為一個惡意的 mashup 組件可以向整個 Mushup 應(yīng)用中注入惡意代碼,從而觸發(fā)多種攻擊行為,包括 XSS、CSRF、DoS。如果該 Mushup 應(yīng)用還提供服務(wù)器端的 Ajax 代理服務(wù),由于 Ajax 代理突破了同源限制,惡意的客戶端 mushup 組件就可以將用戶的隱私發(fā)送到外部站點。
3.4 Flash/Flex 和 Web2.0
互聯(lián)網(wǎng)從 1996 年引入了 Flash 技術(shù)后,通過動畫和交互,極大的改變了 Web 頁面的用戶體驗。2004 年 3 月,Macromedia 公司基于其專有的 Macromedia Flash 平臺,發(fā)布了 Flex。它涵蓋了支持 RIA(Rich Internet Applications)開發(fā)和部署的一系列技術(shù)。在 Web2.0 時代,越來越多的開發(fā)者使用 Flex 技術(shù)開發(fā) Flash 應(yīng)用,由此引入的安全隱患也不容忽視。#p#
3.5 Flash 應(yīng)用安全隱患
由于 Flash 支持全局變量,因此帶來了很多安全隱患。只要攻擊者控制了全局變量,那么他就可以實施多種攻擊行為。
3.5.1 Cross-Site Flashing(跨站 Flash 攻擊)
和 XSS 原理相似,不過 XSF 是通過向網(wǎng)站注入惡意的 Flash 程序來實施攻擊。 由于 Web2.0 時代的應(yīng)用復雜性(如 Mushup 應(yīng)用),注入的惡意 Flash 不但可以攻擊同源內(nèi)的應(yīng)用,還可能在非同源的各個組件中傳播。
3.5.2 Cross-Site Scripting through Flash(通過 Flash 進行跨站腳本攻擊)
該方法使用易受感染的 Flash 文件進行典型的 XSS 攻擊。和 XSF 很相似,攻擊的發(fā)生同樣來源于對全局變量的引用,如將全局變量作為裝入函數(shù)(如 getURL())的參數(shù)
攻擊者使用惡意腳本,可能執(zhí)行如下操作:
1、將用戶的 Cookie 值發(fā)送給攻擊者;
2、將用戶的共享 Flash 對象發(fā)送給攻擊者;
3、將可通過 DOM(如 URL、表單字段等)訪問的信息發(fā)送給攻擊者。
四、Web2.0 安全總結(jié)
從上面章節(jié)的分析可以看出,Web2.0 時代的應(yīng)用安全,有著明顯的特征,可以總結(jié)為如下兩個方面:
由于新技術(shù)的引入,帶來了新的安全隱患,如 XSF 攻擊等;
很多 Web1.0 時代的安全隱患,出現(xiàn)了新的傳播渠道,如 Ajax 應(yīng)用,就提高了 XSS、CSRF、DoS等攻擊的機會。
五、明鑒Web應(yīng)用弱點掃描器如何應(yīng)對 Web2.0 ?
Web2.0 新安全隱患應(yīng)對策略
考慮到 Web2.0 時代的應(yīng)用安全特點,明鑒Web應(yīng)用弱點掃描器(Webscan)應(yīng)用安全解決方案不僅加強了對原有 Web 安全隱患的診斷能力,還提供了針對新安全隱患的診斷和防御功能。
5.1 Flash 安全防御
WebScan 5.0(WebScan 標準版)提供了對 Flash 安全隱患的完整分析和測試。這包括:
1、將 Web 應(yīng)用中的 Flash 代碼解析為文本數(shù)據(jù),從中收集鏈接,進行安全隱患分析;
2、播放應(yīng)用中的 Flash 文件,動態(tài)發(fā)現(xiàn)僅通過解析發(fā)現(xiàn)不了的鏈接;
3、測試由 Adobe? Flex 應(yīng)用程序發(fā)送的后臺 AMF 協(xié)議消息。
圖 1. 是在配置WebScan 掃描某 Web 應(yīng)用時的 Flash 選項,用戶可以根據(jù)需要選擇如何處理應(yīng)用中的 Flash。
圖1.Webscan5.0中Flash配置選項
Webscan5.0提供多種專門針對 Flash 的測試用例,如允許Flash文件與任何HTML頁面通信、允許訪問任何域的Flash文件、允許Flash文件調(diào)用所有網(wǎng)絡(luò)API、Flash文件源代碼泄露等等。如圖 2。
圖2.Webscan5.0中Flash測試用例
5.2增強的 JavaScript 引擎
Web2.0 使 JavaScript 得到了充分的應(yīng)用。WebScan 可以分析 Web 應(yīng)用中的 JavaScript,并且在新版本中,通過不斷改進對內(nèi)存的占用,提高 JavaScript 分析的性能。
【編輯推薦】