术语:
资源发布者 (Resource Distributor ):
提供一个给定资源的一方。通常是一个服务器操作者 ,诸如一个网站管理员或套接字服务器管理员 。
资源创建者 (Resource Creator ):
真正创建资源的一方。对于.swf文件,资源创建者是编译.swf的ActionScript开发人员 。
用户 (User):
Flash Player运行的计算机的用户。
安全沙箱类型:
可通过 flash.system.Security.sandboxType 获取其值
安全沙箱类型可能禁止的外部操作类型:
限制范围:
内容装载 :可以使用 Loader 、Sound 和 NetStream 等这样一些类来加载内容
内容作为数据访问 :(读取一个内容资源的内部信息,例如,读取一张位图的像素 或者一段音频 )可以通过使用 Bitmap 对象、BitmapData.draw() 方法、Sound.id3 属性或者 SoundMixer.computeSpectrum() 方
法从加载的媒体内容中提取数据
交叉脚本控制 :
数据装载 :可以从使用 URLStream 、URLLoader 、Socket 和 XMLSocket 等类加载的外部文件 (如 XML 文件)中直
接访问数据
限定策略:
创建者允许 :一个.swf文件含有对恰当的Security 类的静态方法allowDomain ()的调用。
所有者允许 :意味着发布者使得恰当的跨域名政策文件可用 。
remote 安全沙箱
local-with-filesystem 安全沙箱
local-with-networking 安全沙箱
local-trusted 安全沙箱
套接字安全:
本地沙箱 :
远程沙箱 :
全沙箱(二):权限控制 & 如何选择设置一个本地(local)安全沙箱类型关键字: flash player, sand box
权限控制:
1. 管理员控制: 计算机的管理用户(使用管理权限登录的用户 )可以应用能影响计算机所有用户的 Flash Player 安全设置
2. 用户控制 :
3. 网站控制: (策略文件)详见 安全沙箱(三)
4. 作者(开发人员)控制: Security.allowDomain("www.example.com"),详见 安全沙箱(三)
三种设置 local-with-filesystem 或 local-with-networking 的方法:
使用Flex Builder和Flash authoring tool所编译的swf均是local-trusted ,配置文件目录见下:
”C:\Documents and Settings\[USER]\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust “
1. 使用Flex Builder:默认-use-network=false(如果文件不在非信任位置)
在Additional编译器参量下,输入:-use-network=false
-use-network=false:local-with-filesystem
-use-network=true:local-with-networking
2. 使用Flash authoring tool:默认Access local files only(如果文件不在非信任位置)
Access local files only:local-with-filesystem
Access network only:local-with-networkin
3. 使用Flex SDK 命令行编译器
授予本地信任:
1. 打开在线 的 Flash Player Settings Manager
http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html
2. 在 Global Security Settings 中添加你希望信任的位置
3. 关闭所有的 Flash Player 实例 ,重新启动 (非常重要,所有的 )
=================================
发布者许可(政策文件):
创建政策文件:
公布政策文件:
取得一个政策文件的许可来装载数据 :
取得一个政策文件的许可来把内容作为数据访问 :
使用一个政策文件来授权套接字连接 :
1. 端口范围 :
to-ports="9100, 9200"
to-ports="10000-11000"
to-ports="*"
2. 如果一个政策文件时取自小于1024 端口的一个套接字,* 表示对任何端口的访问都被授权
如果一个政策文件取自大于或者等于1024 端口的一个套接字,* 表示对于任何大于或者等于1024端口的访问都被授权
3. 当一个政策文件在和所需的套接字连接的不同端口 提供服务时,必须手工装载那个政策文件 ,添加以下语句:
基于HTTP的政策文件:
必须满足的条件:
创建者许可(allowDomian()):
导入装载:swf装载swf
如果两个swf来自不同的远程区域 ,或者不同的安全沙箱类型,使用下面的方法加载
处理安全违规:
要么抛出一个SecurityError 异常,要么调度一个SecurityErrorEvent .SECURITY _ERROR
有时需要注册LoaderInfo 的事件监听:
=======================
关键字: flash player, sand box
限制网络 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 页来自不同的域时使用。
或者修改Flex Builder 生成的HTML,加入以下参数:
全屏模式安全性:
要启用全屏模式,请在包含 SWF 文件引用的 HTML 页的 <object> 和 <embed> 标签中添加 allowFullScreen 参数,并将参数值设置为 "true" (默认值为 "false"),如下例所示:
或者修改Flex Builder 生成的HTML,加入以下参数:
设置LocalConnection权限:
同一域中没问题 。
对于不同沙箱 的SWF文件,需要设置:
控制外出 URL 访问:
HTML 代码中用于加载 SWF 文件的 AllowScriptAccess 参数控制能否从 SWF 文件内执行外出 URL 访问 。
如果不设置 AllowScriptAccess 的值,则仅当 SWF 文件与 HTML 页来自同一个域 时才能通信 。
AllowScriptAccess 参数可以有 "always "、"sameDomain " 和 "never " 这三个可能值中的一个:
联系客服