日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

JSONP原理以及安全问题

發(fā)布時間:2025/3/21 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JSONP原理以及安全问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

JSONP介紹

JSONP全稱是JSON with Padding ,是基于JSON格式的為解決跨域請求資源而產(chǎn)生的解決方案。他實現(xiàn)的基本原理是利用了 HTML 里 元素標(biāo)簽沒有跨域限制

JSONP原理就是動態(tài)插入帶有跨域url的script標(biāo)簽,然后調(diào)用回調(diào)函數(shù),把我們需要的json數(shù)據(jù)作為參數(shù)傳入,通過一些邏輯把數(shù)據(jù)顯示在頁面上。

比如如下代碼所示,通過script標(biāo)簽完成http://localhost:8080/test01/dom01?callback=jsontest的調(diào)用。

后端代碼:

訪問test.html頁面執(zhí)行script,請求http://localhost:8080/test01/dom01?callback=jsontest,然后將請求的內(nèi)容作為參數(shù),執(zhí)行jsontest函數(shù),jsontest函數(shù)將請求的內(nèi)容彈出來出來。結(jié)果如下:

這樣我們就通過script標(biāo)簽實現(xiàn)了快于請求,繞過了同源策略。

Ajax的jsonp跨域請求原理和這個是一樣的,也是在frame里面通過創(chuàng)建一個臨時的script標(biāo)簽來實現(xiàn)跨域請求。感興趣的同學(xué)可以自己驗證下,操作時只需要打開瀏覽器調(diào)試工具就可以看到。

JSONP劫持

JSON劫持又稱“JSON Hijacking”,2008年國外安全研究人員開始提到由JSONP帶來的風(fēng)險。這個問題屬于CSRF(Cross-site request forgery跨站請求偽造)攻擊范疇,當(dāng)某網(wǎng)站通過JSONP的方式跨域(一般為子域)傳遞用戶認(rèn)證后的敏感信息時,攻擊者可以構(gòu)造惡意的JSONP調(diào)用頁面,誘導(dǎo)被攻擊者訪問,以達(dá)到截取用戶敏感信息的目的。如圖所示(來自參考文章)

一個典型的JSON Hijacking攻擊代碼如下:

黑客誘惑用戶去打開這個html文件,以用戶的身份去訪問http://localhost:8080/test01/dom01?callback=jsontest,然后把用戶的敏感數(shù)據(jù)通過http://172.20.10.5:8080/test01/dom02?callback=jsontest發(fā)送給黑客的服務(wù)器。

http://172.20.10.5:8080/test01/dom02的代碼如下所示:其實可以用一個map去接收數(shù)據(jù),這樣可以在不知道json的數(shù)據(jù)結(jié)構(gòu)的情況下接收數(shù)據(jù)。

JSONP劫持挖掘與防御

JSONP漏洞挖掘,首先需要盡可能的找到所有的接口,尤其是返回數(shù)據(jù)格式是JSONP的接口,然后在數(shù)據(jù)包中檢索關(guān)鍵詞callback、json、jsonp、email等,觀察返回值是否變化。

JSONP劫持的防御

  • 限制來源refer
  • 按照J(rèn)SON格式標(biāo)準(zhǔn)輸出(設(shè)置Content-Type : application/json; charset=utf-8),預(yù)防http://127.0.0.1/getUsers.php?callback=形式的xss
  • 過濾callback函數(shù)名以及JSON數(shù)據(jù)輸出,預(yù)防xss

總結(jié)

以上是生活随笔為你收集整理的JSONP原理以及安全问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。