La méthode
Loader.loadBytes()
fournit un moyen pour une application de générer un contenu SWF à partir d’un tableau d’octets. Cependant, des attaques par injection sur des données chargées à partir de sources distantes pourraient causer des dommages sérieux lors du chargement du contenu. Ceci est particulièrement valable lors du chargement des données dans le sandbox de l’application où le contenu SWF généré peut accéder à l’ensemble des interfaces de programmation d’AIR au complet.
Il existe des conditions légitimes pour utiliser la méthode
loadBytes()
sans générer de code SWF exécutable. Vous pouvez utiliser cette méthode pour générer des données d’image afin de contrôler le délai d’affichage de celle-ci, par exemple. Il y a aussi des situations légitimes qui dépendent
effectivement
de l’exécution du code, comme la création dynamique de contenu SWF pour de la lecture audio. Dans AIR, par défaut, la méthode
loadBytes()
ne vous permet
pas
de charger un contenu SWF ; il ne vous permet que de charger un contenu d’image. Dans AIR, la propriété
loaderContext
de la méthode
loadBytes()
possède une propriété
allowLoadBytesCodeExecution
que vous pouvez définir sur
true
afin d’autoriser explicitement l’application à utiliser
loadBytes()
pour charger un contenu SWF exécutable. Le code ci-dessous montre comment utiliser cette fonction :
var loader:Loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.allowLoadBytesCodeExecution = true;
loader.loadBytes(bytes, loaderContext);
Si vous appelez
loadBytes()
pour charger un contenu SWF et que la propriété
allowLoadBytesCodeExecution
de l’objet LoaderContext est définie sur
false
(valeur par défaut), l’objet Loader renvoie une exception SecurityError.
Remarque :
dans une version ultérieure d’Adobe AIR, cette interface de programmation pourrait changer. Lorsque cela se produira, il vous sera peut-être nécessaire de recompiler le contenu qui utilise la propriété
allowLoadBytesCodeExecution
de la classe LoaderContext.