作者:mika 最近刚看完actionscript(去北京买的厚厚一本书,看得很辛苦)学到了不少东西,觉得flash在跨站等地方的应用真的非常广泛啊。正好想去下载个工具,在google一搜索,找到了一个下载地址,是二进制安全网的,结果上去一看我的注册帐户还不能下载,于是想发个帖子发泄下,正好看到了添加flash这项,嘿嘿,这个论坛是bbsmax的,.net写的安全性很好,过滤得很严格,但不知道swf文件它是怎么处理的,于是便有了下文:(测试浏览器是firefox最新版,ie应该没问题,没测试!) 1。想当然的直接使用远程文件,如图一:

发完后,一访问出现了下面的错误,如图二:

果然没我想得那么简单,但一看错误很熟悉的样子,于是查看页面的原代码找到如下代码:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="1" height="1"><param name="movie" value="http://www.101d1.cn/test/test.swf"><param name="autostart" value="false" /><param name="wmode" value="opaque" /><embed src="http://www.101d1.cn/test/test.swf" wmode="opaque" width="1" height="1" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>
仔细一看原来没设置allowScriptAccess这项,因为我引用的是外部域的flash所以要想flash调用js代码必须将该项设置为always。不过,不过有问题。。。如果不设置的话,默认是samedomain。也就是说如果我引用的是个同域的swf文件的话不就可以调用js代码了吗? 再一看,呵呵,可以本地上传嘛。。。嘎嘎~~~传一个,如图三:

再访问一下,哈哈,弹出来了,如图四:

测试完了,有什么启示吗?小心swf跨站啊~~~要想安全其实很简单,就是添加一个allowScriptAccess将其值设置为never就OK了~~~
|