最近在整理關于JavaScript代碼安全方面的資料,在查關于JavaScript Hijacking的資料時,發現關于它的中文資料很少,故特意整理一下。
一.JavaScript Hijacking原理
(2).信任站點通過你的驗證,并傳回Cookie。
到這裡,你應該有對JavaScript Hijacking有一個大概的概念,它确實和CSRF很相像,唯一不同的是,<b>CSRF是模拟你的身份去發送請求,JavaScript Hijacking是模拟你的身份,竊取你在伺服器上的私隐資訊</b>。
<b>二.JavaScript Hijacking攻擊示範代碼:</b>
示範代碼之前,首先明确幾點:
(2).惡意站點是通過使用者給它傳回信任網站的JSON數組(為什麼是JSON數組?普通的JSON對象不行麼?這個下面會提到!),進而擷取使用者私隐資訊的。也就是說所謂的隐私資料,也就是這些JSON數組裡面的資料,是以信任站點傳回的不是JSON數組的資料或者JSON裡面的資訊是垃圾資訊,那麼這個惡意站點是徒勞的。
(3).惡意站點必須實先知道使用者傳回的JSON的結構。
(4).惡意站點能且隻能發送GET請求......
(5).這種攻擊是需要浏覽器支援的,至于為什麼看下面吧。
恩,下面看一下攻擊代碼吧:>
在使用者通路惡意網站時:
(3).用戶端接受到這段JS腳本後,如果傳回的是一個JSON數組,比如:
JSON數組被認為是一段可執行的JavaScript腳本,于是浏覽器會解析執行。
如果傳回的是一個JSON對象呢?
呵呵,這個是不會被浏覽器執行的,因為浏覽器認為:它不是一個JavaScript腳本。
如果它傳回的是一個JavaScript腳本的話,恩,這得具體問題具體分析了,不一定能拿到什麼資料。
(4).看下面這段JavaScript腳本:
它的作用就是發送受害者的私隐資訊到惡意站點的。
這裡可能有人不了解,我大概說一下:
後面的var objString=""...這就是發送受害者資訊到惡意站點了,這裡不說了。
當浏覽器解析(3)中的JSON數組時,會建立一個對象并指派,這時候就出發了上面這段代碼,結果私隐資訊就發送到惡意站點了。
<b>參考資料</b>:
【1】Fortify的一篇Paper《JavaScript_Hijacking》,作者:B. Chess, Y. O'Neil, and J. West。
【2】《JSON Hijacking》,作者:Phil Haack
本文轉自hyddd部落格園部落格,原文連結:http://www.cnblogs.com/hyddd/archive/2009/07/02/1515768.html,如需轉載請自行聯系原作者。