加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

iframe同源策略问题分析

(2017-01-11 21:58:29)
分类: XSS
iframe中的子页对父页的location可写,不可读。受同源策略限制。
Ajax严格遵守同源策略。但是,在W3C的新标准中,可以发送数据到另一个域。CORS—corss-orgin-resource-sharing
发送请求时,自动带上orgin头:http://www.foo.com
然后目标域判断这个Orgin值,如果是预期的就返回:
Access-Control-Allow-Origin: http://www.foo.com
如果 Access-Control-Allow-Origin之后是通配符*,则表示任意域都可以向目标跨
cookie
cookie可以设置domain为父级域,可以在不同子域实现cookie共享;cookie的path值为只允许该路径下的页面javascript才能读取cookie.。若/evil/路径想读取/admin/路径的cookie,可通过跨iframe进行dom操作。
原理是用脚本在/evil下创建一个指向/admin的iframe,通过获取iframe的document来获取cookie.
iframe跨域

一般分两种情况:

一、 是同主域下面,不同子域之间的跨域;

  同主域,不同子域跨域,设置相同的document.domian就可以解决;

     父页访问子页,可以document.getElementByIdx_x("myframe").contentWindow.document来访问iframe页面的内容;如果支持contentDocument也可以直接document.getElementByIdx_x("myframe").contentDocument访问子页面内容;

  子页访问父页,可以parent.js全局属性

二、 是不同主域跨域;

  前提,www.a.com下a.html,a.html内iframe调用了www.b.com下的b.html,b.html下iframe调用了www.a.com下的c.html

  b.html是不无法直接访问a.html的对象,因为涉及到跨域,但可以访问parent,同样c.html的parent可以访问b.html。c.html和a.html同域,是可以访问a下的对象的。parent.parent.js对象!

  看下面实例:

a.htmlhttp://s3/mw690/002n7U63zy77Us1T7Dcf2&690

b.html

http://s16/mw690/002n7U63zy77Us1UCJNff&690c.html

http://s11/mw690/002n7U63zy77Us1VRNw1a&690


0

阅读 收藏 喜欢 打印举报/Report
前一篇:PHP可变变量
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有