安全沙箱

AIR 提供了一个全面的安全体系结构,用于定义 AIR 应用程序中每个文件的权限。这包括随应用程序一起安装的那些文件和应用程序加载的其他文件。根据文件的来源授权其相应的权限,并将其分配到称为沙箱的逻辑安全组中。

随应用程序一起安装的文件在称为“应用程序目录”的目录中,因此,在默认情况下,这些文件将放在称为“应用程序沙箱”的安全沙箱中,该沙箱拥有访问所有 AIR API 的权限。 如果其中某些 API 可供除应用程序资源目录之外的源中的内容(即那些没有随应用程序一起安装的文件)使用,则会带来巨大安全风险。

沙箱的 AIR 安全模型由 Flash Player 安全模型以及应用程序沙箱组成。不在应用程序沙箱中的文件具有类似 Flash Player 安全模型指定的安全限制。

运行时使用这些安全沙箱定义文件可以访问的数据范围以及可以执行的操作。若要维护本地安全,请将各个沙箱中的文件进行隔离。例如,从外部 Internet URL 加载到 AIR 应用程序的 SWF 文件放置在远程沙箱中,该文件默认情况下不具有通过脚本访问应用程序目录中分配给应用程序沙箱的文件的权限。

注: 在 iOS 上,不允许执行下载的代码。

应用程序沙箱中的内容的权限

安装应用程序时,AIR 安装程序文件中包括的所有文件都会安装到用户计算机的应用程序目录中。在应用程序运行时,应用程序目录树中的所有文件都会分配到应用程序沙箱中。应用程序沙箱中的内容具有 AIR 应用程序的完全访问权限,包括与本地文件系统内容进行交互。

许多 AIR 应用程序只能使用这些本地安装的文件来运行应用程序。但是,不会限制 AIR 应用程序仅加载应用程序目录中的文件,它们可以加载任意源中任何类型的文件。这包括用户计算机上的文件以及外部源中的文件(例如本地网络或 Internet 上的文件)。文件类型不会对安全限制产生影响;加载的 HTML 文件与从相同源加载的 SWF 文件具有相同的安全权限。(但是,应用程序沙箱中的内容不能加载沙箱外的 JavaScript 文件。 详细信息请参阅开发人员文档。)

应用程序安全沙箱中的内容可以访问 AIR API,而其他沙箱中的内容则无法访问。例如,只有应用程序安全沙箱中的内容才可以读取和写入本地文件系统。

一些 JavaScript 技术可将字符串动态转换为可执行代码。从应用程序 URL 加载代码时,应用程序安全沙箱中的内容只能使用这些技术。在应用程序沙箱中使用这些技术会带来安全风险。例如,应用程序可能会在无意中执行从网络沙箱加载的字符串,而该字符串可能包含恶意代码,如删除或更改用户计算机上的文件或者将本地文件内容报告回不受信任的网络域的代码。详细信息请参阅开发人员文档。

注: 在移动 AIR 应用程序中,无法将 HTML 和 JavaScript 加载到应用程序沙箱中。移动 AIR 应用程序使用系统 Web 控件显示这种内容。该控件具有和默认系统 Web 浏览器相同的安全注意事项。

非应用程序沙箱中的内容的权限

从网络或 Internet 位置加载的文件会分配到非应用程序沙箱。这些内容在行为方式上具有一组与 Web 浏览器中运行的 SWF 内容(在 Flash Player 中)或 Web 浏览器中运行的 HTML 内容相同的权限和限制。

与应用程序安全沙箱中的内容不同,非应用程序安全沙箱中的 HTML 代码在任何时候都 可以 使用 JavaScript 方法执行动态生成的代码。

非应用程序沙箱中的代码无权访问提供应用程序功能的受权限保护的 AIR API。

详细信息请参阅开发人员文档。