前置 while(1); JSON 回應:Google 為什麼要這樣做?
向 Google 的私人 JSON 端點發出 API 請求時,您可能會注意到一個不尋常的前綴:while(1);。這引發了對其目的和潛在影響的疑問。
防止 JSON 劫持
此前綴的主要原因是防止 JSON 劫持。 2011 年之前,瀏覽器允許網站攔截和修改 AJAX 請求期間動態建立的物件。透過前置 while(1);對於 JSON 回應,Google 會阻止瀏覽器將這些回應評估為 JavaScript 程式碼,從而有效阻止潛在的劫持攻擊。
避免 Eval() 漏洞
現代瀏覽器強制執行安全 JSON 解析,使得透過eval()執行惡意程式碼變得困難。然而, while(1);前綴透過為攻擊者創建語法歧義來提供額外的安全層。即使他們刪除了前綴,剩餘的程式碼也會導致無限循環或語法錯誤,從而使攻擊無效。
Google 服務之間的變化
不同的 Google 服務使用此前綴的變體。 Google 文件使用 &&&START&&& 而非 while(1);,而 Google 通訊錄則將 &&&START&&& 附加到 while(1);。這與防止 JSON 劫持的目的相同。
結論
Google 包含了 while(1);其私有 JSON 回應中的類似前綴是針對 JSON 劫持攻擊的主動措施。它確保這些回應不會被視為可執行的 JavaScript 程式碼,從而保護使用者資料並防止惡意活動。
以上是為什麼 Google 在 JSON 回應前要加入「while(1);」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!