您的位置:首页 > Web前端 > JavaScript

flash的externalinterface.call及js与swf交互域名安全测试

2013-03-28 16:49 423 查看
在编写flash跨域插件时,发现可以在不同父域名的页面加载其它页面swf,如果里面使用到externalinterface.call话,好像是没有任何限制,swf是可以直接使用任何域名的js,就算swf是a.com,html是b.com也可行.
没有深入了解js与as互相交互的安全规则,
为了不想让别域名使用我的swf,我想到的方法是,在swf中判断html的域名,来限制别人使用.如果发现,就不加载需要的功能即可.

as判断代码

var domain = getHtmlDomain();

if (!domain || !/^(.+\.)?chinahrd\.net$/i.test(domain)) {//只允许chinahrd.net域数据
var tip = '只允许父域名是chinahrd.net的页面使用flash跨域插件fajax,你的域名是:' + domain;
ExternalInterface.call('alert', tip);
trace(tip);
return;
}

private function getHtmlDomain():String{
var domain = '';

try {
domain = ExternalInterface.call('(function (){ return document.domain;})');
} catch (e:Error) {
domain = '';
}

return domain;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: