|
HTML 内容的安全注意事项不同于基于 SWF 的内容,主要是因为 JavaScript 能够创建动态生成的代码。如果在应用程序沙箱内允许使用动态生成的代码(如调用
eval()
函数时生成的代码),则会引起安全性风险。例如,应用程序可能会在无意中执行从网络沙箱加载的字符串,而该字符串可能包含恶意代码,如删除或更改用户计算机上的文件或者将本地文件内容报告回不受信任的网络域的代码。
生成动态代码的方式如下所示:
-
调用
eval()
函数。
-
设置
innerHTML
属性或调用 DOM 函数,以插入脚本标签,从而直接加载资源外部的脚本。
-
设置
innerHTML
属性或调用 DOM 函数以插入具有内联代码的脚本标签(而非通过 src 加载脚本)。
-
将应用程序沙箱中内容的
script
标签的
src
设置为一个不在应用程序资源目录中的文件。
-
使用
javascript
URL 方案(如
href="javascript:alert('Test')"
所示)。
从应用程序目录加载内容时,应用程序安全沙箱中的代码只能使用这些方法。这可以防止应用程序沙箱(具有对所有 AIR API 的访问权限)中的代码执行可能来自不受信任源中的脚本。
非应用程序安全沙箱中的内容可以使用这些方法生成动态代码。但是,它们不能直接访问 AIR API。AIR 沙箱桥功能为非应用程序安全沙箱中的代码提供了一种与应用程序沙箱中的代码进行交互的方式(交互方法由应用程序代码限制和决定)。
AIR 应用程序可以从字符串变量生成 HTML 内容(而不是从文件或网络源中加载)。但默认情况下,由字符串生成的 HTML 内容不会被授予应用程序沙箱权限。 这样可防止应用程序在不经意间授予对从潜在不安全 Internet 源获得的字符串内容的访问权限。
注:
在移动设备上,AIR 使用主机操作系统提供的 Web 控件。该控件中运行的内容不具有访问 AIR API 的权限,而且永远不会在应用程序安全沙箱中加载或执行。
有关 HTML 安全性的详细信息,请参阅开发人员文档中的“AIR 安全性”:
|
|
|