Flash CS3 文档 |
|||
| ActionScript 3.0 编程 > Flash Player 安全性 > Flash Player 安全性概述 | |||
Flash Player 安全性大部分基于加载的 SWF 文件、媒体和其它资源的原始域。来自特定 Internet 域(例如 www.example.com)的 SWF 文件始终可以访问该域的所有数据。这些资源放置在相同的安全分组中,该分组称为“安全沙箱”。(有关详细信息,请参阅安全沙箱。)
例如,SWF 文件可以加载 SWF 文件、位图、音频、文本文件以及自身域中的任何其它资源。此外,只要同一域中的两个 SWF 文件都是使用 ActionScript 3.0 编写的,则始终可以在这两个文件之间执行跨脚本访问操作。“跨脚本访问”是指一个 SWF 文件能够使用 ActionScript 访问另一个 SWF 文件中的属性、方法和对象。对于使用 ActionScript 3.0 编写的 SWF 文件与使用 ActionScript 早期版本编写的 SWF 文件,它们之间不支持跨脚本访问;但是,可以通过使用 LocalConnection 类在这些文件之间进行通信。有关详细信息,请参阅跨脚本访问。
默认情况下,以下基本安全性规则始终适用:
Flash Player 将以下地址视为单个域,并为每个地址设置单独的安全沙箱:
http://example.com http://www.example.com http://store.example.com https://www.example.com http://192.0.34.166 即使某个指定域(例如 http://example.com)映射到特定 IP 地址(例如 http://192.0.34.166),Flash Player 也会为它们设置单独的安全沙箱。
开发人员可以使用两种基本方法为 SWF 文件授予访问权限,使之能够访问除该 SWF 文件所属沙箱之外的其它沙箱中的资源:
Security.allowDomain() 方法(请参阅作者(开发人员)控制)默认情况下,SWF 文件不能对其它域中的 ActionScript 3.0 SWF 文件执行跨脚本访问操作,也不能加载其它域中的数据。可以通过在加载的 SWF 文件中调用 Security.allowDomain() 方法来授予这种权限。有关详细信息,请参阅跨脚本访问。
在 Flash Player 安全模型中,加载内容 与访问或加载数据 之间存在区别:
BitmapData.draw() 方法、Sound.id3 属性或者 SoundMixer.computeSpectrum() 方法从加载的媒体中提取数据,使用诸如 URLStream、URLLoader、Socket 和 XMLSocket 等类来加载数据。 Flash Player 安全模型针对加载内容和访问数据定义了不同的规则。通常,加载内容的限制要比访问数据的限制少一些。
通常,可以从任意位置加载内容(SWF 文件、位图、MP3 文件和视频),但是如果内容来自执行加载的 SWF 文件所在的域之外的域,则会将内容划分到单独的安全沙箱中。
下面是加载内容的一些限制:
如果加载的媒体为图像、音频或视频,则其安全沙箱之外的 SWF 文件无法访问该媒体的数据(如像素数据和声音数据),除非该 SWF 文件的域已包含在该媒体原始域的跨域策略文件中。有关详细信息,请参阅作为数据访问加载的媒体。
加载数据的其它格式包括文本文件或 XML 文件,这些文件可使用 URLLoader 对象来加载。同样,这种情况下要访问其它安全沙箱中的任何数据,必须通过原始域中的跨域策略文件来授予权限。有关详细信息,请参阅使用 URLLoader 和 URLStream。
Flash CS3
当前页: http://livedocs.adobe.com/flash/9.0_cn/main/00000348.html