Loader.loadBytes()
方法为应用程序提供了一种从字节数组生成 SWF 内容的方式。但是,在加载内容时对从远程源加载的数据进行注入攻击可能会导致严重损坏。将数据加载到应用程序沙箱时尤其如此,生成的 SWF 内容可以在该应用程序沙箱中访问完整 AIR API。
存在一些合理的用法,可以使用
loadBytes()
方法而不生成可执行 SWF 代码。例如,可以使用
loadBytes()
方法生成图像数据,从而控制图像的显示时间。还存在一些
确实
依赖执行代码的合理用法,例如动态创建 SWF 内容以便播放音频。在 AIR 中,默认情况下
loadBytes()
方法
不
允许加载 SWF 内容;只允许加载图像内容。在 AIR 中,
loadBytes()
方法的
loaderContext
属性具有
allowLoadBytesCodeExecution
属性,可以将该属性设置为
true
,以便明确允许应用程序使用
loadBytes()
来加载可执行 SWF 内容。下列代码说明如何使用此功能:
var loader:Loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.allowLoadBytesCodeExecution = true;
loader.loadBytes(bytes, loaderContext);
如果调用
loadBytes()
来加载 SWF 内容且 LoaderContext 对象的
allowLoadBytesCodeExecution
属性设置为
false
(默认值),则 Loader 对象将引发 SecurityError 异常。
注:
在未来的 Adobe AIR 版本中,此 API 可能会更改。如果发生更改,您可能需要重新编译使用 LoaderContext 类的
allowLoadBytesCodeExecution
属性的内容。