Google會像這樣返回json:throw 1; <dont be evil> { foo: bar}和Facebook的ajax有這樣的json:for(;;); {"error":0,"errorSummary": ""}他們為什么要放置將停止執行并生成無效json的代碼?如果它無效,他們將如何解析它;如果您嘗試評估它,它將崩潰嗎?他們只是將其從字符串中刪除(似乎很昂貴)嗎?這有什么安全優勢嗎?出于安全考慮,對此:如果刮板在另一個域上,則它們將不得不使用script標簽來獲取數據,因為XHR無法跨域工作。即使沒有,for(;;);攻擊者也將如何獲取數據?它沒有分配給變量,所以不會因為沒有引用而被垃圾回收嗎?基本上要獲得跨域數據,他們必須要做<script src="http://target.com/json.js"></script>但是,即使沒有前置崩潰腳本,攻擊者也無法使用任何Json數據,除非將其分配給可以全局訪問的變量(在這些情況下不是)。崩潰代碼實際上無能為力,因為即使沒有崩潰代碼,他們也必須使用服務器端腳本來使用其站點上的數據。
人們為什么要輸入“ throw 1; json響應前面的<dont be evil>”和“
元芳怎么了
2019-11-21 14:05:04
