JSONP使用以及需要注意的安全問題
阿新 • • 發佈:2019-02-10
JSONP 全稱是 JSON with Padding,JSONP可能會引起CSRF(Cross-site request forgery 跨站請求偽造)攻擊或XSS (Cross Site Scripting 跨站指令碼攻擊)漏洞
對於支援JSONP的介面,寫介面時資料可能會被篡改,讀介面時資料可能會被劫持
CSRF:
這個問題屬於CSRF攻擊範疇,一個典型的 JSON Hijacking 攻擊程式碼:
XSS:
輸出 JSON 時,沒有嚴格定義好 Content-Type(Content-Type: application/json)直接導致了一個典型的 XSS 漏洞
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
對於支援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的詳細使用說明:
JSONP的安全使用說明:
https://www.cnblogs.com/52php/p/5677775.html