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

猜你喜欢

转载自blog.csdn.net/netyeaxi/article/details/79855814