同源策略/SOP是一种约定,它是浏览器最核心也最基本的安全功能,所谓同源是指"协议+域名+端口"三者相同。 同源策略限制以下几种行为: 1、Cookie、LocalStorage 和 IndexDB 无法读取 2、DOM 和 Js对象无法获得 3、AJAX 请求不能发送
浏览器不会拦截调用外部静态文件请求,也就是src属性,但jsonp只能以GET方式请求。
function info(result) { alert(result); } <script src="http://www.xx.com/jsonp.php?callback=info">一般是以jsonp方式传输敏感信息,可劫持此敏感信息导致敏感信息泄露。
如:联通某站jsonp接口返回用户套餐信息
QQ的JSONP接口返回用户相关信息
在抓包或爬虫抓取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交换数据