安全沙箱(四):Others

限制网络 API:

适用端口阻止 的 ActionScript 3.0 API:

FileReference.download()、FileReference.upload()、Loader.load()、Loader.loadBytes()、navigateToURL()、
NetConnection.call()、NetConnection.connect()、NetStream.play()、Security.loadPolicyFile()、sendToURL()、Sound.load()、URLLoader.load()、URLStream.load()

 

使用 allowNetworking 参数:

您可以通过在包含 SWF 内容的 HTML 页 中的 <object><embed> 标签中设置 allowNetworking 参数来控制 SWF 文件访问网络的功能。

allowNetworking 参数主要在 SWF 文件及所在的 HTML 页来自不同的域时使用。

  • "all " (默认值) — 在 SWF 中允许所有的网络 API。
  • "internal "— SWF 文件可能不调用浏览器导航或浏览器交互 API ,但是它会调用任何其它网络API。
  • "none "— SWF 文件可能不调用浏览器导航或浏览器交互 API ,并且它无法使用任何 SWF 到SWF 通信 API 。
<object classic="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
Code base="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,124,0"
width="600" height="400" ID="test" align="middle">
<param name="allowNetworking" value="none" />
<param name="movie" value="test.swf" />
<param name="bgcolor" value="#333333" />
<embed src="test.swf" allowNetworking="none" bgcolor="#333333"
width="600" height="400"
name="test" align="middle" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>

 

或者修改Flex Builder 生成的HTML,加入以下参数:

AC_FL_RunContent( ... "allowNetworking", "none", ...)
 

全屏模式安全性:

要启用全屏模式,请在包含 SWF 文件引用的 HTML 页的 <object> 和 <embed> 标签中添加 allowFullScreen 参数,并将参数值设置为 "true" (默认值为 "false"),如下例所示:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,18,0"
width="600" height="400" id="test" align="middle">
<param name="allowFullScreen" value="true" />
<param name="movie" value="test.swf" />
<param name="bgcolor" value="#333333" />
<embed src="test.swf" allowFullScreen="true" bgcolor="#333333"
width="600" height="400"
name="test" align="middle" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
 

或者修改Flex Builder 生成的HTML,加入以下参数:

AC_FL_RunContent( ... "allowFullScreen", "true", ...)
 

设置LocalConnection权限:

同一域中没问题

对于不同沙箱 的SWF文件,需要设置:

LocalConnection.allowDomain()
 

控制外出 URL 访问:

  • flash.system.fscommand() 函数
  • ExternalInterface.call() 方法
  • flash.net.navigateToURL() 函数

HTML 代码中用于加载 SWF 文件的 AllowScriptAccess 参数控制能否从 SWF 文件内执行外出 URL 访问

如果不设置 AllowScriptAccess 的值,则仅当 SWF 文件与 HTML 页来自同一个域才能通信

AllowScriptAccess 参数可以有 "always "、"sameDomain " 和 "never " 这三个可能值中的一个:

  • 当 AllowScriptAccess 为 "always" 时, SWF 文件可以与其嵌入到的 HTML 页进行通信,即使该 SWF 文件来自不同于HTML 页的域也可以。
  • 当 AllowScriptAccess 为 "sameDomain" 时,仅当 SWF 文件与其嵌入到的 HTML 页来自相同的域时,该 SWF 文件才能与该 HTML 页进行通信。此值是 AllowScriptAccess 的默认值。
  • 当 AllowScriptAccess 为 "never" 时,SWF 文件将无法与任何 HTML 页进行通信。
<object id='MyMovie.swf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
codebase='http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' height='100%'
width='100%'>
<param name='AllowScriptAccess' value='always'/>
<param name='src' value=''MyMovie.swf'/>
<embed name='MyMovie.swf' pluginspage='http://www.adobe.com/go/getflashplayer' src='MyMovie.swf'
height='100%' width='100%' AllowScriptAccess='never'/>
</object>

你可能感兴趣的:(html,浏览器,Flex,Flash,Adobe)