Med metoden
Loader.loadBytes()
kan ett program generera SWF-innehåll från en bytearray. Injektionsattacker på data som är inlästa från fjärrkällor skulle dock kunna orsaka stor skada under inläsning av innehåll. Detta är särskilt sant under inläsning av data till programsandlådan där det genererade SWF-innehållet kan komma åt den fulla uppsättningen AIR-API:er.
Det finns befogade användningar för att nyttja metoden
loadBytes()
utan att generera körbar SWF-kod. Du kan till exempel använda metoden
loadBytes()
till att generera bilddata för att kontrollera tiden för bildvisning. Det finns också befogade användningar som
förlitar
sig på att köra kod, som till exempel dynamiskt skapande av SWF-innehåll för ljuduppspelning. Som standard kan metoden
loadBytes()
i AIR
inte
läsa in SWF-innehåll. Den kan bara läsa in bildinnehåll. I AIR har egenskapen
loaderContext
för metoden
loadBytes()
en
allowLoadBytesCodeExecution
-egenskap som du kan ange som
true
för att ge explicit tillåtelse till programmet att använda
loadBytes()
för att läsa in körbart SWF-innehåll. Följande kod visar hur funktionen används:
var loader:Loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.allowLoadBytesCodeExecution = true;
loader.loadBytes(bytes, loaderContext);
Om du anropar
loadBytes()
för att läsa in SWF-innehåll och egenskapen
allowLoadBytesCodeExecution
för LoaderContext-objektet är satt till
false
(standarden), utlöser Loader-objektet ett SecurityError-undantag.
Obs!
Detta API kan komma att ändras i en framtida version av Adobe AIR. När det inträffar, kan du behöva kompilera om innehåll som använder egenskapen
allowLoadBytesCodeExecution
för klassen LoaderContext.