Back

同源策略

这篇文章负责解决一次面试题

简单的说一下同源策略

说说cors 和 jsonp分别是干什么的 为什么会出现这两个漏洞,以及如何进行修复

cors 和 jsonp 在修复过程中 token 是如何传递token的

cors如果是不允许的域发起了请求,cors会进行怎样的返回

jsonp的token跟在哪个位置

jsonp referr校验能否百分百防护吗

同源策略

同源策略限制了不同源之间如何进行资源交互,是用于隔离潜在恶意文件的重要安全机制。

(emmmm其实刚学的时候纠结了好久这个东西)

定义

协议/主机/端口

http://store.company.com/dir/page.html进行比较:

URL 结果 原因
http://store.company.com/dir2/other.html 同源 只有路径不同
http://store.company.com/dir/inner/another.html 同源 只有路径不同
https://store.company.com/secure.html 失败 协议不同
http://store.company.com:81/dir/etc.html 失败 端口不同 ( http:// 默认端口是80)
http://news.company.com/dir/other.html 失败 主机不同

JSONP

由于同源策略的存在,从别的域名(网站)那获取资料需要一个特殊的技术,即Jsonp(JSON with Padding)。Jsonp是 json 的一种"使用模式",用于跨域读取数据。

简单的说,就是动态创建<script>标签,然后利用<script>的src 不受同源策略约束来跨域获取数据。

JSON劫持

JSON Hijacking,属于 CSRF( Cross-site request forgery 跨站请求伪造)的范畴里。

比如下面的链接在已登录的情况下会返回json格式的用户信息:

http://login.xxx.com/userinfo

问题在于,攻击者伪造了一个虚假页面,并加入了如下标签:

<script src="http://login.xxx.com/userinfo"></script>

如果当前浏览器已经登录了test.com,并且cookie未过期,然后访问了攻击者的虚假页面,那么该页面就可以拿到json形式的用户敏感信息。

又因为script标签会自动解析json数据,生成对应的js对象,然后再通过

Object.prototype.__defineSetter__

来触发自己的恶意代码……

所以这个函数在当前的chrome和firefox中都失效了。

JSONP劫持

Web安全学习笔记

由浅入深理解JSONP并拓展

Built with Hugo
Theme Stack designed by Jimmy
© Licensed Under CC BY-NC-SA 4.0