Metoda
Loader.loadBytes()
udostępnia aplikacji sposób generowania treści SWF z tablicy bajtowej. Jednak ataki polegające na wstrzykiwaniu kodu do danych ładowanych ze źródeł zdalnych mogą powodować poważne uszkodzenia podczas ładowania treści. Jest to szczególnie istotne w przypadku ładowania danych do obszaru izolowanego aplikacji, gdy wygenerowana treść SWF ma dostęp do pełnego zestawu interfejsów API AIR.
Istnieją przyczyny stosowania metody
loadBytes()
bez konieczności generowania wykonywalnego kodu SWF. Metoda
loadBytes()
może służyć na przykład do generowania danych obrazu w celu kontrolowania czasu wyświetlania obrazu. Istnieją również uzasadnione zastosowania
oparte
na wykonaniu kodu, np. w przypadku dynamicznego tworzenia treści SWF przeznaczonej do odtwarzania audio. W środowisku AIR domyślnie metoda
loadBytes()
nie
umożliwia ładowania treści SWF; umożliwia wyłącznie ładowanie treści obrazu. W środowisku AIR właściwość
loaderContext
metody
loadBytes()
zawiera właściwość
allowLoadBytesCodeExecution
, dla której można ustawić wartość
true
, aby jawnie zezwolić aplikacji na korzystanie z metody
loadBytes()
w celu ładowania wykonywalnej treści SWF. Poniższy kod prezentuje użycie tej funkcji:
var loader:Loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.allowLoadBytesCodeExecution = true;
loader.loadBytes(bytes, loaderContext);
Jeśli metoda
loadBytes()
została wywołana w celu załadowania treści SWF, a dla właściwości
allowLoadBytesCodeExecution
obiektu LoaderContext ustawiono wartość
false
(domyślnie), wówczas obiekt Loader zwraca wyjątek SecurityError.
Uwaga:
W przyszłych wydaniach środowiska Adobe AIR ten interfejs API może ulec zmianie. W takim przypadku konieczne może być ponowne skompilowanie treści, która korzysta z właściwości
allowLoadBytesCodeExecution
klasy LoaderContext.