Webkit的跨域安全问题说明


Posted in Javascript onSeptember 13, 2011

这里有个简单的测试页面:IE、火狐弹出"hello world",而chrome,safari,opera毫无反应。
以下是小段测试代码(刻意修改domain,让父页面和子页面为不同域页面):
1.父页面代码:

<script> 
document.domain = "nunumick.me"; 
function doTest(){ 
alert('hello world'); 
} 
</script> 
<iframe src="http://www.nunumick.me/lab/x-domain/webkit-test.html"> 
</iframe>

2.子页面代码:
<script> 
try{ 
top.name; 
}catch(e){ 
document.domain = 'nunumick.me'; 
top.doTest(); 
} 
</script>

以上代码目的是尝试在访问异常时动态修改domain达到顺利访问,但webkit内核浏览器粗暴地报错而非抛出可截获的异常,其他浏览器均如期运行。

chrome错误信息:
Webkit的跨域安全问题说明

据了解,采用此类try catch方式做安全可行性判断的并不只是个别现象,如DOJO

try{ 
//see if we can access the iframe's location 
//without a permission denied error 
var iframeSearch = _getSegment(iframeLoc.href, "?"); 
//good, the iframe is same origin (no thrown exception) 
if(document.title != docTitle){ 
//sync title of main window with title of iframe. 
docTitle = this.iframe.document.title = document.title; 
} 
}catch(e){ 
//permission denied - server cannot be reached. 
ifrOffline = true; 
console.error("dojo.hash: Error adding history 
entry. Server unreachable."); 
}

再如FCKeditor
try{ 
if ( (/fcksource=true/i).test( window.top.location.search ) ) 
sFile = 'fckeditor.original.html' ; 
} 
catch (e) { /* Ignore it. Much probably we are insi 
de a FRAME where the "top" is in another domain (security error). */ }

还有很多网友的反馈:chrome bug report

以上代码在chrome,safari,opera均不适用。翻了一些资料,记录在此:
1.html5 security location
2.webkit dev lists
从webkit开发人员的讨论消息中看到,他们承认这个问题但并不情愿去改正,holly shit!

Javascript 相关文章推荐
Javascript SHA-1:Secure Hash Algorithm
Dec 20 Javascript
jquery 操作表格实现代码(多种操作打包)
Mar 20 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
Apr 15 Javascript
原生JS可拖动弹窗效果实例代码
Nov 09 Javascript
运用jQuery定时器的原理实现banner图片切换
Oct 22 Javascript
JS实现倒计时和文字滚动的效果实例
Oct 29 Javascript
基于jquery实现左右按钮点击的图片切换效果
Jan 27 Javascript
AngularJS ng-mousedown 指令
Aug 02 Javascript
基于wordpress的ajax写法详解
Jan 02 Javascript
详解ES6通过WeakMap解决内存泄漏问题
Mar 09 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
Sep 21 Javascript
WEEX环境搭建与入门详解
Oct 16 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
Sep 13 #Javascript
容易被忽略的JS脚本特性
Sep 13 #Javascript
Javascript学习笔记-详解in运算符
Sep 13 #Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
Sep 13 #Javascript
ie下动态加态js文件的方法
Sep 13 #Javascript
使用Json比用string返回数据更友好,也更面向对象一些
Sep 13 #Javascript
TextArea不支持maxlength的解决办法(jquery)
Sep 13 #Javascript
You might like
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
表单元素事件 (Form Element Events)
2009/07/17 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
推荐JavaScript实现继承的最佳方式
2014/11/11 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
JavaScript中通过提示框跳转页面的方法
2016/02/14 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
React服务端渲染原理解析与实践
2021/03/04 Javascript
python字典基本操作实例分析
2015/07/11 Python
Python实现优先级队列结构的方法详解
2016/06/02 Python
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
证婚人搞笑证婚词
2014/01/10 职场文书
出国留学介绍信
2014/01/13 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
计算机软件专业求职信
2014/06/10 职场文书
奥运会口号
2014/06/13 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
学困生转化工作总结
2015/08/13 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python
Python编程源码报错解决方法总结经验分享
2021/10/05 Python
SQL中的三种去重方法小结
2021/11/01 SQL Server
Spring Cloud OpenFeign模版化客户端
2022/06/25 Java/Android