【39】WEB安全学习----Jsonp跨域安全

同源策略

同源策略/SOP是一种约定,它是浏览器最核心也最基本的安全功能,所谓同源是指"协议+域名+端口"三者相同。
同源策略限制以下几种行为:
1、Cookie、LocalStorage 和 IndexDB 无法读取
2、DOM 和 Js对象无法获得
3、AJAX 请求不能发送

跨域解决方案

  • jsonp跨域
  • 跨域资源共享(CORS)
jsonp

浏览器不会拦截调用外部静态文件请求,也就是src属性,但jsonp只能以GET方式请求。

function info(result)
        {
       		alert(result);
        }
<script src="http://www.xx.com/jsonp.php?callback=info">

jsonp安全

一般是以jsonp方式传输敏感信息,可劫持此敏感信息导致敏感信息泄露。

如:联通某站jsonp接口返回用户套餐信息
【39】WEB安全学习----Jsonp跨域安全_第1张图片

QQ的JSONP接口返回用户相关信息
【39】WEB安全学习----Jsonp跨域安全_第2张图片

漏洞查找方式

在抓包或爬虫抓取jsonp接口,查看是否返回敏感信息,接口是否做了响应的校检。

修复方案

1、尽量避免跨域的数据传输,对于同域的数据传输使用xmlhttp的方式作为数据获取的方式,依赖于javascript在浏览器域里的安全性保护数据。
2、referer的来源限制,利用前端referer的不可伪造性来保障请求数据的应用来源于可信的地方,此种方式力度较稀,完全依赖于referer,某些情况下(如存在xss)可能导致被绕过。
3、token的加入,严格来说,这种利用javascript hijacking的方式获取数据是CSRF的一种,不过较之传统的CSRF不能获取数据只能提交而言,这种方式利用javascript可以获取一些敏感信息而已。如果我们能让攻击者对接口未知,就可以实现json hijacking的防御了。利用token对调用者的身份进行认证,这种方式对于调用者的身份会要求力度较细,但是一旦出现xss也可能导致前端Token的泄露,从而导致保护失效。
4、对于同域的json使用情况下,可以在数据的输出头部加入while(1);的方式避免数据被script标签的方式引用,这可以防止一些比较有特性的浏览器里导致的数据泄漏。
5、使用CORS代替jsonp
6、不要在使用cookie的情况下使用jsonp交换数据

你可能感兴趣的:(WEB安全学习笔记)