一 安全 沙盒类型(Security-Sandbox-Types)
Actionscript 给每个被打开的swf,赋上一个安全状态,叫做安全沙盒类型,安全沙盒类型分为四种,remote,local-with- filesystem,local-with-networking和local-trusted。每种类型都定义了一个不同的规则集合来控制一个swf 外部操作能力。一个安全沙箱 可能禁止的外部操作包括:
- 本地内容
- 内容作为数据访问
- 交叉脚本控制
- 装载数据
- 连接一个套接字
- 发送数据到一个外部的URL
- 访问用户的的Carmera和MIC
- ShareObject
- 上传或下载由用户选择的文件
- 和装载swf的容器交互的能力
- 连接 LocalConnection
- actionscrpt代码可以通过 Security.sandboxType,来获得当前swf的安全沙盒类型。一个swf被赋上的安全状态,由一下几个因素决定:
- swf被打开的位置,本地或网络
- swf发布时的设置,flex : -use-network = true|false , Flash authoring Tool: local file access| net access
- FlashPlayerTrust目录,是否指定它为可信任目录或文件。
swf 根据其打开的位置决定其安全沙盒类型是 remote 还是local中的一种,如果已有example.swf,在网络上打开如,www.ABC.com/example.swf , 则Security.sandboxType被赋予 remote,若在本地打开,当swf 发布为 -use-network = true 或 net access 时,若如果没有 FlashPlayerTrust 指定则为 local-with-networking,如果有,则为local-trusted。 当发布为 -use-network = false或 local file access 若如果没有 FlashPlayerTrust 指定则为local-with-filesystem,如果有则为ocal-trusted。
安全沙箱对swf的操作限制,主要表现为,内容装载、内容作为数据访问、交叉脚本控制和数据装载。
内容装载,意味着取得外部资源,然后显示 它。actionscript :Loader.load(),Sound.load(),NetStream.play()。
内容作为数据访问,读取资源的内部信息。actionscript:Loader实例变量的content访问图片 、BiamapData.draw()、SoundMixer.computeSpectrum、访问 Sound实例
变量的id3。
交叉脚本控制,actionscript:Loader实例变量的content取得被转载的swf、访问被装载的swf的变量、方法、类、BiamapData.draw()被装载的swf到BitamapData对象 。
数据装载,actionscript:UrlLoader.load() 文本、二进制、变量;URLString。Loaded()
remote沙盒
操作 本地范围 来自swf原始区域的远程资源 来自swf非原始区域的远程资源
内容装载 禁止 允许 允许
内容作为数据访问 禁止 允许 需要授权
交叉脚本控制 禁止 允许 需要授权
数据装载 禁止 允许 需要授权
local-with-filesystem沙盒
操作 本地范围的非swf资源 本地local-with-filesystem swf资源 本地local-with-networking资源 本地local-trusted swf资源 remote资源
内容装载 允许 允许 禁止 允许 禁止
内容作为数据访问 允许 n/a n/a n/a 禁止
交叉脚本控制 n/a 允许 禁止 需要授权 禁止
数据装载 允许 n/a n/a n/a 禁止
local-with-networking沙盒
操作 本地范围的非swf资源 本地local-with-filesystem swf资源 本地local-with-networking资源 本地local-trusted swf资源 remote资源
内容装载 允许 禁止 允许 允许 允许
内容作为数据访问 禁止 n/a n/a n/a 需要授权
交叉脚本控制 n/a 禁止 允许 需要授权 需要授权
数据装载 禁止 n/a n/a n/a 需要授权
local-trusted沙盒
操作 本地范围的非swf资源 本地local-with-filesystem swf资源 本地local-with-networking资源 本地local-trusted swf资源 remote资源
内容装载 允许 允许 允许 允许 允许
内容作为数据访问 允许 n/a n/a n/a 允许
交叉脚本控制 n/a 允许 允许 允许 允许
数据装载 允许 n/a n/a n/a 允许
二 权限控制
Flash Player 客户端运行时安全模型是围绕 swf 文件、本地数据和Internet URL,等这些资源而设置成的模型,“资源持有者”stakeholders 是指拥有或使用这些资源的各方。资源持有者可以对自己的资源进行安全设置。各种资源持有者被分为四个类型。
Administrative user =》 User => Website Manager => Developer
管理用户控制,mms.cfg 和 设置 Flash Player 信任 目录。mms.cfg www.adobe.com/go/fp9_admin 。
用户控制,设置UI、设置用户Flashplayer 信任目录
web 站点控制,跨域策略文件 crossdomain.xml
开发人员控制,Security。allowDomain()