防御 JSON 劫持攻擊我們可以在JavaScript響應的開頭部分插入無效或存在問題的JavaScript;即在針對包含敏感數據的JavaScript對象的請求中包括無法預測的參數;強制使用POST方法來檢索JavaScript對象。
json劫持攻擊又為”JSON Hijacking”,攻擊過程有點類似于csrf,只不過csrf只管發送http請求,但是json-hijack的目的是獲取敏感數據。
一些web應用會把一些敏感數據以json的形式返回到前端,如果僅僅通過cookie來判斷請求是否合法,那么就可以利用類似csrf的手段,向目標服務器發送請求,以獲得敏感數據。
比如下面的鏈接在已登錄的情況下會返回json格式的用戶信息:
http://www.test.com/userinfo
攻擊者可以在自己的虛假頁面中,加入如下標簽:
<script src="http://www.test.com/userinfo"></script>
如果當前瀏覽器已經登錄了http://www.test.com,并且cookie未過期,然后訪問了攻擊者的虛假頁面,那么該頁面就可以拿到json形式的用戶敏感信息,因為script標簽會自動解析json數據,生成對應的js對象。然后再通過
http://www.test.com
Object.prototype.__defineSetter__
這個函數來觸發自己的惡意代碼。
但是這個函數在當前的新版本chrome和firefox中都已經失效了。
1.在JavaScript響應的開頭部分插入無效或存在問題的JavaScript;
2.即在針對包含敏感數據的JavaScript對象的請求中包括無法預測的參數;
3.強制使用POST方法來檢索JavaScript對象。
回答所涉及的環境:聯想天逸510S、Windows 10。
JSON 劫持
json劫持攻擊又為”JSON Hijacking”,攻擊過程有點類似于csrf,只不過csrf只管發送http請求,但是json-hijack的目的是獲取敏感數據。
一些web應用會把一些敏感數據以json的形式返回到前端,如果僅僅通過cookie來判斷請求是否合法,那么就可以利用類似csrf的手段,向目標服務器發送請求,以獲得敏感數據。
比如下面的鏈接在已登錄的情況下會返回json格式的用戶信息:
http://www.test.com/userinfo攻擊者可以在自己的虛假頁面中,加入如下標簽:
<script src="http://www.test.com/userinfo"></script>如果當前瀏覽器已經登錄了
http://www.test.com,并且cookie未過期,然后訪問了攻擊者的虛假頁面,那么該頁面就可以拿到json形式的用戶敏感信息,因為script標簽會自動解析json數據,生成對應的js對象。然后再通過Object.prototype.__defineSetter__這個函數來觸發自己的惡意代碼。
但是這個函數在當前的新版本chrome和firefox中都已經失效了。
防御 JSON 劫持攻擊
1.在JavaScript響應的開頭部分插入無效或存在問題的JavaScript;
2.即在針對包含敏感數據的JavaScript對象的請求中包括無法預測的參數;
3.強制使用POST方法來檢索JavaScript對象。
回答所涉及的環境:聯想天逸510S、Windows 10。