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
屬性之內容。