我發現以關閉括號開頭的JSON文件用於Google的一項服務中。以下是一個示例,您會看到它在主數據部分之前具有右括號和單引號。我檢查了獲取這個JSON數據的JavaScript代碼。他們正在做的是在解析數據之前手動刪除第一個連續的括號。以右括號開頭的JSON數據
)]}'
["value1", "value2"]
這裏是我的問題。
這個JSON格式是否有效?
任何人都知道他們爲什麼這樣做?
我發現以關閉括號開頭的JSON文件用於Google的一項服務中。以下是一個示例,您會看到它在主數據部分之前具有右括號和單引號。我檢查了獲取這個JSON數據的JavaScript代碼。他們正在做的是在解析數據之前手動刪除第一個連續的括號。以右括號開頭的JSON數據
)]}'
["value1", "value2"]
這裏是我的問題。
這個JSON格式是否有效?
任何人都知道他們爲什麼這樣做?
這是針對所謂的JSON劫持漏洞的保護。在解釋前,客戶會剝去領先的垃圾。
在JSON劫持漏洞攻擊中,用戶在一個選項卡中登錄到應用程序,例如,瀏覽器將其身份驗證令牌保存在cookie中。黑客然後安排用戶在另一個選項卡中打開惡意應用程序。該選項卡中的HTML包含一個script
標記,其src
設置爲第一個應用的某個JSON API的URL。由於它是一個腳本標記,因此沒有同源檢查。由於瀏覽器在請求中包含有效憑證,因此第一個應用會繼續並返回JSON,可能包含機密信息。由於JSON是有效的JavaScript,因此瀏覽器執行它,這本身不會導致任何事情發生,但黑客可以通過檢查腳本標記的內容來檢索JSON。
通過將垃圾放在JSON之前,它不能被解析爲有效的JS。因此,瀏覽器出錯並且不會將內容加載到惡意應用程序的腳本標記中,因此無法檢查它。不同供應商使用的垃圾有各種「風味」; Google是一個。
現在有幾種內置的對抗JSON劫持的方法,它不再是一個威脅,除非在沒有正確設置標題的舊瀏覽器中。
由於@torazaburo在評論回答地圖,這是出於安全原因。
這是針對所謂的js劫持漏洞的保護。客戶在解釋它之前去掉了領先垃圾
是的,這就是我想知道的。感謝您的詳細解釋 – Ryo