网站地图    收藏   

主页 > 后端 > 网站安全 >

Webkit下最无敌的跨大域方案 - 网站安全 - 自学p

来源:自学PHP网    时间:2015-04-17 11:59 作者: 阅读:

[导读] 今天我神奇的发现,现阶段基于webkit内核的浏览器(Chrome、Safari等),通过document.domain,可以将domain设置到最后一级(最后一个点之后的内容)。举例说明:www.qgy18.com可以设置domain为...

今天我神奇的发现,现阶段基于webkit内核的浏览器(Chrome、Safari等),通过document.domain,可以将domain设置到最后一级(最后一个点之后的内容)。举例说明:
  1. www.qgy18.com可以设置domain为“com”,不能是“cn”等其它内容;
  2. www.aoao.org.cn可以设置domain为“cn”,不能是“com”等其它内容;
  3. www.imququ.com.(注意后面的.)可以设置domain为“”,不能是“com”、“cn”等等其它内容;

这能干嘛呢?显然,只要两个域名有同样的domain,就可以轻易的跨域通讯了。那么在webkit下,只要两个域名后缀一样,例如都为com或者都为空,通过这种方式可以轻松跨域了。

我把这个问题发在QWrap群里讨论,有人说这是Webkit内核的一个feature,用来方便开发者实现跨大域。我认为这是bug,因为,虽说很少有人会把自己的网站domain设置为com,但是对于黑客来说,他如果在你网站做这件事情,那你的网站跟他的站点就成一家人了,这种行为也不容易被发现。

对于Firefox、IE和Opera,都有域名后缀黑名单,在黑名单里的字符串,是不可以当document.domain的。例如com.cn,com,gov.cn等等。所以不会有这么神奇的事情,当然www.gov.cn也会比较悲剧,因为它的domain也不能设置为gov.cn。

DEMO:http://o.qgy18.com/tt.html (使用webkit内核访问)

update @ 2012-03-03:Sogili同学指出,这个问题已经有人提交给chromium,但他们不认为这是安全漏洞,解释是:

It's not a security vulnerability, really, because no self-respecting web page should ever set document.domain = "com". It is a vulnerability of the site if that is the case.

That said, other browsers do it as precaution, and we should too. Nobody has picked it up because the webkit plumbing it needs is onerous.

我个人觉得,即使这不是bug,至少也是一个可以改进的点,有能力的同学不妨去fix下~

附:Mozilla的Public Suffix List

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论