1. 程式人生 > >JSONP使用以及需要注意的安全問題

JSONP使用以及需要注意的安全問題

JSONP 全稱是 JSON with Padding,JSONP可能會引起CSRF(Cross-site request forgery 跨站請求偽造)攻擊或XSS (Cross Site Scripting 跨站指令碼攻擊)漏洞
對於支援JSONP的介面,寫介面時資料可能會被篡改,讀介面時資料可能會被劫持

CSRF:
這個問題屬於CSRF攻擊範疇,一個典型的 JSON Hijacking 攻擊程式碼:
<script>
function wooyun(v){
    alert(v.username);
}
</script>
<script src="http://js.login.360.cn/?o=sso&m=info&func=wooyun"></script>

當被攻擊者在登陸 360 網站的情況下訪問了該網頁時,那麼使用者的隱私資料(如使用者名稱,郵箱等)可能被攻擊者劫持。



XSS:
輸出 JSON 時,沒有嚴格定義好 Content-Type(Content-Type: application/json)直接導致了一個典型的 XSS 漏洞
http://127.0.0.1/getUsers.php?callback=<script>alert(/xss/)</script>
主要解決方案:
a.Referer 嚴謹過濾
b.嚴格定義輸出的 Content-Type: application/json,瀏覽器不解析惡意插入的 XSS 程式碼(直接訪問提示檔案下載)
c.部署一次性 Token
d.限制callback函式名長度,嚴格過濾callback函式名
e.過濾JSON裡資料的輸出


參考文件:
JSONP的詳細使用說明:
https://www.cnblogs.com/chiangchou/p/jsonp.html

JSONP的安全使用說明:
https://www.cnblogs.com/52php/p/5677775.html