| Adobe AIR |
|
|
沙箱AIR 提供了一个综合全面的安全体系结构,用于定义 AIR 应用程序中的每个文件的相应内部和外部权限。权限会根据文件的源授予给文件,并被分配到称为“沙箱”的逻辑安全组中。 关于 AIR 应用程序沙箱沙箱的运行时安全模型由 Flash Player 安全模型以及应用程序沙箱组成。不在应用程序沙箱中的文件具有类似 Flash Player 安全模型指定的安全限制。 运行时使用这些安全沙箱定义代码可以访问的数据范围以及可以执行的操作。若要维护本地安全,请将各个沙箱中的文件进行隔离。例如,从外部 Internet URL 加载到 AIR 应用程序的 SWF 文件放置在远程沙箱中,该文件默认情况下不具有通过脚本访问应用程序目录中分配给应用程序沙箱的文件的权限。 下表描述了各种类型的沙箱:
本主题重点介绍了应用程序沙箱及其与 AIR 应用程序中的其它沙箱之间的关系。开发人员在使用分配到其它沙箱的内容时,应阅读针对 Flash Player 安全模型的其它文档。请参阅《ActionScript 3.0 编程》(http://www.adobe.com/go/flashCS3_progAS3_security_cn) 文档中的“Flash Player 安全性”一章以及《Flash Player 9 安全性白皮书》(http://www.adobe.com/go/fp9_0_security_cn)。 应用程序沙箱安装应用程序时,AIR 安装程序文件中包括的所有文件都会安装到用户计算机的应用程序目录中。开发人员可以通过 app:/ URL 方案参考此目录中的代码(请参阅在 URL 中使用 AIR URL 方案)。在应用程序运行时,应用程序目录树中的所有文件都会分配到应用程序沙箱中。应用程序沙箱中的内容具有 AIR 应用程序的完全访问权限,包括与本地文件系统内容进行交互。 许多 AIR 应用程序只能使用这些本地安装的文件来运行应用程序。但是,不会限制 AIR 应用程序仅加载应用程序目录中的文件,它们可以加载任意源中任何类型的文件。其中包括用户计算机上的本地文件以及可用外部源中的文件(例如本地网络或 Internet 上的文件)。文件类型不会对安全限制产生影响;加载的 HTML 文件与从相同源加载的 SWF 文件具有相同的安全权限。 应用程序安全沙箱中的内容可以访问 AIR API,而其它沙箱中的内容则无法访问。例如,限制 air.NativeApplication.nativeApplication.applicationDescriptor 属性(该属性返回应用程序的应用程序描述符文件的内容)访问应用程序安全沙箱中的内容。另一个示例是受限制的 API 为 FileStream 类,其中包含用于读取和写入本地文件系统的方法。 《Flex 3 语言参考》中介绍了限制访问应用程序安全沙箱中的内容的 ActionScript API 以及 AIR 徽标。 对于 HTML 内容(位于 HTMLLoader 对象中),所有 AIR JavaScript API(使用 AIRAliases.js 文件时通过 window.runtime 属性或 air 对象可用)都可用于应用程序安全沙箱中的内容。其它沙箱中的 HTML 内容无法访问 window.runtime 属性,因此该内容也无法访问 AIR API。 JavaScript 和 HTML 限制对于应用程序安全沙箱中的 HTML 内容,在加载代码后使用可将字符串动态转换为可执行代码的 API 时存在一些限制。这样就可以阻止应用程序从非应用程序源(例如潜在不安全网络域)意外插入(及执行)代码。使用 eval() 函数是一个示例。有关详细信息,请参阅对不同沙箱中的内容的代码限制。 非应用程序沙箱中的内容的权限从网络或 Internet 位置加载的文件会分配到远程沙箱中。从应用程序目录外部加载的文件会分配到只能与本地文件系统内容交互、只能与远程内容交互或受信任的本地沙箱中;具体取决于文件的创建方式以及用户是否通过 Flash Player 全局设置管理器显式信任了文件。有关详细信息,请参阅 http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager.html。 JavaScript 和 HTML 限制与应用程序安全沙箱中的内容不同,非应用程序安全沙箱中的 JavaScript 内容随时都可以调用 eval() 函数来执行动态生成的代码。但是,非应用程序安全沙箱中的 JavaScript 存在一些限制。这些限制包括:
有关详细信息,请参阅对不同沙箱中的内容的代码限制。 |