華 晨 ,施化吉
(江蘇大學 江 蘇 鎮 江 2 12013)
HTML5是繼HTML4.01,XHTML 1.0和DOM 2 HTML后的又一個重要版本,旨在消除Internet程序對 Flash,Silverlight,JavaFX一類瀏覽器插件的依賴。除了原先的DOM接口,HTML5增加了更多API,如:本地音頻視頻播放;硬件加速;本地運行(即使在 Internet連接中斷之后);從桌面拖放文件到瀏覽器上傳;語義化標記。隨著萬維網聯盟于2008年1月第1份HT ML5草案的發布,HTML5開啟了WEB應用的新時代,各大著名IT公司相繼推出了支持新的網頁格式的IT產品。HT ML5與之前的版本相比,最為顯著的特點是為開發者提供了一個不再依靠插件和擴展的完整應用平臺。現在使用HT ML5規范的各種WEB應用方興未艾,勢不可擋。它展現出來的許多新特性在改變WEB世界同時也對網絡安全帶來了許多新挑戰[1-2]。
HTML5在廢除了一些舊標簽的同時也增加了一些新標簽來增強網頁的表現性能。但這同時也給攻擊者帶來了新的機會。
一些xss filter如果建立了一個黑名單的話,則可能不會覆蓋到HTML5新增的標簽和功能,從而發生XSS。
例如
[3]
這段遠程加載視頻的代碼成功的繞過了XSS Filter。
我們對此攻擊的防御方式是,對前端或者后端的XSS Filter進行優化,添加過濾規則或者黑名單。
1)
在HTML5中專門為
Sandbox屬性可以通過參數來支持更精確的控制。如表1所示。
有的行為,如”彈出窗口”,即使設置了allow-scripts,也是不允許的。毫無疑問,sandbox屬性極大地增強了應用iframe的安全性。

表1 Sandbox屬性參數Tab.1 Sandbox attribute parameters
2)HTML5中為標簽定義了一個新的Link Type:noreferrer屬性。
標簽指定了noreferrer后,瀏覽器在請求該標簽指定的地址時將不再發送Referer(header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器是從哪個頁面鏈接過來的,服務器因此可以獲得一些信息用于處理)。
這個屬性需要開發者手動的添加到頁面標簽中,這樣可以保護敏感信息和隱私。
瀏覽器實現的同源策略(Same Origin Policy簡稱SOP)限制了腳本的跨域請求。指一個域的文檔或腳本,不能獲取或修改另一個域的文檔的屬性。也就是Ajax不能跨域訪問,Web資源訪問的根本策略都是建立在SOP基礎上的。但互聯網的發展趨勢是越來越開放的,因此跨域訪問的需求也變得越來越迫切。但同源策略給web開發者帶來了許多困擾,因此web開發者不得不用jsonp、iframe、flash socket解決跨域問題。
后來出現了CORS-CrossOrigin Resources Sharing,也即跨源資源共享,它定義了一種瀏覽器和服務器交互的方式來確定是否允許跨域請求。它是一個妥協,有更大的靈活性,但比起簡單地允許所有這些的要求來說更加安全。簡言之,CORS就是為了讓AJAX可以實現可控的跨域訪問而生的。示意圖如圖1所示。

圖1 跨域請求的訪問過程Fig.1 Cross-domain access to process the request
服務器端對于CORS的支持,主要就是通過設置Access-Control-Allow-Origin來進行的。它是非常有用的,但同時也存在風險。因為它完全是一個盲目的協議,只是通過HTTP頭來控制。因此它可能產生以下一些風險:
1)惡意跨域請求
即便頁面只允許來自某個信任網站的請求,但是它也會收到大量來自其他域的跨域請求。這些請求有時可能會被用于執行應用層面的DDOS攻擊,并不應該被應用來處理。
例如,考慮一個搜索頁面。當通過'%'參數請求時搜索服務器會返回所有的記錄,這可能是一個計算繁重的要求。要擊垮這個網站,攻擊者可以利用XSS漏洞將Javascript腳本注入某個公共論壇中,當用戶訪問這個論壇時,使用它的瀏覽器重復執行這個到服務器的搜索請求。或者即使不采用跨域請求,使用一個目標地址包含請求參數的圖像元素也可以達到同樣的目的。如果可能的話,攻擊者甚至可以創建一個WebWorker執行這種攻擊。這會消耗服務器大量的資源。
2)HTTP頭只能說明請求來自一個特定的域,但是并不能保證這個事實。因為HTTP頭可以被偽造。
所以未經身份驗證的跨域請求應該永遠不會被信任。如果一些重要的功能需要暴露或者返回敏感信息,應該需要驗證Session ID。
3)第三方有可能被入侵
舉一個場景,FriendFeed通過跨域請求訪問 Twitter,FriendFeed請求tweets、提交tweets并且執行一些用戶操作,Twitter提供響應。兩者都互相相信對方,所以FriendFeed并不驗證獲取數據的有效性,Twitter也針對Twitter開放了大部分的功能。
但是當如果Twitter被入侵后:
FriendFeed總是從Twitter獲取數據,沒有經過編碼或者驗證就在頁面上顯示這些信息。但是Twitter被入侵后,這些數據就可能是有害的。
或者FriendFeed被入侵時:
Twitter響應 FriendFeed的請求,例如發表 Tweets、更換用戶名甚至刪除賬戶。當FriendFeed被入侵后,攻擊者可以利用這些請求來篡改用戶數據。
所以對于請求方來說驗證接收的數據有效性和服務方僅暴露最少最必須的功能是非常重要的。
針對以上的安全漏洞,可以采取下面的防范手段
1)不信任未經身份驗證的跨域請求,應該首先驗證Session ID或者Cookie。2)通過多種條件屏蔽掉非法的請求,例如HTTP頭、參數等。3)對于請求方來說驗證接收的數據有效性,服務方僅暴露最少最必須的功能。
postMessage允許每一個window(包括當前窗口、彈出窗口、iframe等)對象往其他的窗口發送文本消息,從而實現跨窗口的消息傳遞。這個功能是不受同源策略限制的。如果messaging可以接收任何來源的信息,此頁面有可能會被攻擊;另外postMessage不通過服務器,如果不經過驗證和過濾,可能成為XSS注入點。例如如下代碼沒有對輸入數據進行驗證和清洗,攻擊者完全可以構造惡意的data來注入頁面DOM,構造 XSS 攻擊,形如“>”等。
worker.addEventListener(‘message’,function(e){
document.getElementById(‘test).innerHTML=e.data;
},false);在使用postMessage()時,有兩個安全問題需要注意
1)在接收窗口驗證Domain,甚至驗證URL,以防止來自非法頁面的消息。
2)使用postMessage時需要對信息進行安全檢查;另外不要使用innerHTML,現代瀏覽器提供了textContent屬性,可以幫助對HTML標簽進行過濾。
WebStorage,可以為用戶創建本地存儲,減輕服務器端的壓力[4-5]。例如LocalStorage可以長期存儲數據,極大的解決了之前只能用Cookie來存儲數據的容量小、存取不便、容易被清除的問題。Web Storage分為Session Storage和Local Storage。Session Storage關閉瀏覽器就會失效,而Local Storage則會一直存在。Web Storage就像一個非關系型數據庫,由key-value對組成,可以通過JavaScript對其進行操作。
LocalStorage的API都是通過Javascript提供的,這樣攻擊者可以通過XSS攻擊竊取信息,例如用戶token或者資料。攻擊者可以用下面的腳本遍歷本地存儲。
[html]view plaincopy
if(localStorage.length){
for(I in localStorage){
console.log(i);
console.log(localStorage.getItem(i));
}
}
現在對于WebStorage攻擊的防御措施主要是以下兩點:
1)數據放在合適的作用域里
例如用戶sessionID就不要用LocalStorage存儲,而需要放在sessionStorage里。而用戶數據不要儲存在全局變量里,而應該放在臨時變量或者局部變量里。
2)不要存儲敏感的信息
因為我們總也無法知道頁面上是否會存在一些安全性的問題,一定不要將重要的數據存儲在WebStorage里[6-7]。
HTML5是互聯網未來的大勢所趨。隨著瀏覽器開始支持越來越多的HTML5功能,攻擊面也隨之產生了新的變化。攻擊者可能用HTML5的一些新標簽和新功能來繞過一些未及時更新的防御方案。所以開發人員應該充分的了解HTML5的新特征,同時對應用安全性做一個評估。最后讓HTML5展現它精彩的魅力,為開發者和廣大的用戶帶來新的體驗。
[1]王榮國.HTML5帶來的WEB應用變革及安全問題研究[J].電腦開發與應用,2012(7):65-66.WANG Rong-guo.WEB application research HTML5 brings change and security issues[J].Development and Application of Computer,2012(7):65-66.
[2]樹子.HTML5:看到10年后的互聯網[J]互聯網天地,2010(2):74-75.SHU Zi.HTML5:See the Internet 10 years later[J]Internet World,2010(2):74-75.
[3]高攀,施蔚然.深入分析HTML 5在信息安全上的優化[J].信息安全與技術,2012(8):83-84,87.GAO Pan,SHI Wei-ran.HTML 5 optimized in-depth analysis on information security[J].Information Security and Technology,2012(8):83-84,87.
[4]劉斌.HTML5-未來網絡應用的核心技術研究[J]自動化與儀器儀,2010(4):30-31.LIU Bin.HTML5-Future research on core technology network applications[J]Automation and Instrument Instrument,2010(4):30-31.
[5]安靖,劉志.HTML5對web應用產生的影響及安全問題研究[J]信息網絡安全,2011(11):79-80.AN Jing,LIU Zhi.Effects and safety issues arising from HTML5 for web applications[J]Information Network Security,2011(11):79-80.
[6]吳翰清.白帽子講Web安全[M].北京:電子工業出版社,2012.
[7]周艷平,胡乃平.基于Web的計算機控制技術遠程仿真系統開發[J].工業儀表與自動化裝置,2010(3):112-115.ZHOU Yan-ping,HU Nai-ping.Development of remote simulation system for computer control technology based on Web[J].Industrial Instrumentation&Automation,2010(3):112-115.