Sandbox de sécuritéFlash Player 9 et ultérieur, Adobe AIR 1.0 et ultérieur Les ordinateurs clients peuvent obtenir des fichiers individuels contenant du code, un contenu et des données à partir de sources diverses, telles que des sites Web externes, un système de fichiers local ou une application AIR installée. Les moteurs d’exécution de Flash Player et d’AIR associent chaque fichier de code et autres ressources (objets partagés, fichiers bitmap, son, vidéo et données) à des sandbox de sécurité en fonction de leur origine au moment du chargement. Les sections suivantes passent en revue les règles mises en place par les moteurs d’exécution pour contrôler ce à quoi un code ou un contenu peut accéder au sein d’un sandbox donné. Pour plus de détails sur la sécurité de Flash Player, voir la rubrique « Sécurité » du Centre des développeurs Flash Player à l’adresse www.adobe.com/go/devnet_security_fr. Sandbox distantsLes moteurs d’exécution de Flash Player et d’AIR classent les actifs (notamment les fichiers SWF) issus d’Internet dans des sandbox distincts correspondant à leur domaine d’origine. Les actifs chargés d’example.com ne partagent par exemple pas le même sandbox de sécurité que les actifs issus de foo.org. Par défaut, ces fichiers sont autorisés à accéder à toutes les ressources issues de leur propre serveur. Il est possible d’autoriser les fichiers SWF distants à accéder à des données d’autres domaines à l’aide d’autorisations explicites portant sur les sites Web et les auteurs, par exemple des fichiers de régulation d’URL et la méthode Security.allowDomain(). Pour plus d’informations, voir Contrôles de site Web (fichiers de régulation) et Contrôles de création (développeur). Les fichiers SWF distants ne peuvent pas charger de fichiers ou de ressources locales. Pour plus de détails sur la sécurité de Flash Player, voir la rubrique « Sécurité » du Centre des développeurs Flash Player à l’adresse www.adobe.com/go/devnet_security_fr. Sandbox locauxUn fichier est dit local s’il est référencé par le biais du protocole file: ou d’un chemin UNC (Universal Naming Convention). Les fichiers SWF locaux sont placés dans l’un de quatre sandbox locaux :
La communication entre le sandbox local avec réseau et le sandbox local avec système de fichiers est strictement interdite, tout comme la communication entre le sandbox local avec système de fichiers et le sandbox distant. Elles ne peuvent pas être autorisées par une application Flash Player ni par un utilisateur ou un administrateur. La programmation croisée entre les fichiers HTML et SWF locaux (par exemple à l’aide de la classe ExternalInterface) exige que les deux fichiers impliqués se trouvent dans le sandbox local approuvé. Cette contrainte vient du fait que les modèles de sécurité locaux des navigateurs diffèrent de celui de Flash Player. Les fichiers SWF du sandbox local avec réseau ne peuvent pas charger des fichiers SWF du sandbox local avec système de fichiers. Les fichiers SWF du sandbox local avec système de fichier ne peuvent pas charger des fichiers SWF du sandbox local avec réseau. Sandbox de l’application AIRLe moteur d’exécution d’Adobe AIR ajoute un autre sandbox, dit sandbox de l’application, au modèle de sandbox de sécurité de Flash Player. Les fichiers installés dans le cadre d’une application AIR sont chargés dans le sandbox de l’application. A tout autre fichier chargé par l’application s’appliquent des restrictions de sécurité correspondant aux limites stipulées par le modèle de sécurité de Flash Player standard. Lors de l’installation d’une application, tous les fichiers intégrés à un package AIR sont installés sur l’ordinateur de l’utilisateur dans le répertoire de l’application. Les développeurs peuvent se référer à ce répertoire dans le code par le modèle d’URL app:/. Voir la section Modèles d’URI. Tous les fichiers qui se trouvent dans l’arborescence du répertoire de l’application sont affectés au sandbox de l’application lorsque celle-ci est exécutée. Le contenu du sandbox de l’application est doté de tous les privilèges disponibles pour une application AIR, y compris l’interaction avec le système des fichiers locaux. De nombreuses applications AIR n’utilisent que ces fichiers installés localement pour exécuter l’application. Toutefois, les applications AIR ne se limitent pas uniquement aux fichiers contenus dans le répertoire de l’application ; elles peuvent charger tout type de fichier à partir de n’importe quelle source. Ceci inclut aussi bien les fichiers locaux par rapport à l’ordinateur de l’utilisateur que ceux accessibles à partir des sources externes, comme ceux sur un réseau local ou sur Internet. Le type de fichier n’a pas d’impact sur les restrictions relatives à la sécurité ; les fichiers HTML chargés sont dotés des mêmes privilèges de sécurité que les fichiers SWF chargés à partir de la même source. Le contenu du sandbox de sécurité de l’application a accès aux interfaces de programmation d’AIR que le contenu des autres sandbox n’est pas autorisé à utiliser. Par exemple, la propriété air.NativeApplication.nativeApplication.applicationDescriptor, qui renvoie les contenus du fichier descripteur d’application pour l’application, est limitée au contenu du sandbox de sécurité de l’application. Un autre exemple d’interface de programmation limitée : la classe FileStream qui contient des méthodes pour la lecture et l’écriture dans le système de fichiers local. Les interfaces de programmation ActionScript réservées au contenu du sandbox de sécurité de l’application sont dotées du logo AIR dans le manuel ActionScript 3.0 Reference for Adobe Flash Platform. L’utilisation de ces interfaces de programmation dans d’autres sandbox provoque le renvoi d’une exception SecurityError. Pour un contenu HTML, dans un objet HTMLLoader, toutes les interfaces de programmation JavaScript d’AIR (celles qui sont disponibles via la propriété window.runtime ou l’objet air lors de l’utilisation du fichier AIRAliases.js), sont mises à la disposition du contenu dans le sandbox de sécurité de l’application. Le contenu HTML d’un autre sandbox n’ayant pas accès à la propriété window.runtime, il lui est impossible d’accéder aux interfaces de programmation AIR ou Flash Player. Les restrictions complémentaires suivantes s’appliquent au content exécuté au sein du sandbox de l’application AIR :
Restrictions associées au contenu JavaScript dans AIRContrairement au contenu du sandbox de sécurité de l’application, celui de JavaScript dans un sandbox de sécurité hors application peut à tout moment appeler la fonction eval() pour exécuter dynamiquement le code généré. Des restrictions s’appliquent néanmoins dans AIR au contenu JavaScript exécuté dans un sandbox de sécurité hors application, à savoir :
Pour plus d’informations, voir Restrictions relatives au code pour un contenu dans des sandbox différents. Définition du type de sandbox des fichiers SWF locauxUn utilisateur ou l’administrateur d’un ordinateur peut spécifier si un fichier SWF local est approuvé, lui permettant ainsi de charger des données de tous les domaines, locaux ou réseau. Cette caractéristique est définie dans les répertoires Flash Player Trust global et utilisateur. Pour plus d’informations, voir Contrôles administrateur et Contrôles utilisateur. Pour plus d’informations sur les sandbox locaux, voir Sandbox locaux. Adobe Flash ProfessionalVous pouvez configurer un fichier SWF pour le sandbox local avec système de fichiers ou le sandbox local avec réseau en définissant les paramètres de publication du document dans l’outil de création. Adobe FlexVous pouvez configurer un fichier SWF pour le sandbox local avec système de fichiers ou le sandbox local avec réseau en définissant l’indicateur use-network dans le compilateur Adobe Flex. Pour plus d’informations, voir « A propos des options du compilateur d’applications » dans Développement et déploiement d’applications Adobe Flex 3. Propriété Security.sandboxTypeLa propriété statique en lecture seule Security.sandboxType permet au créateur d’un fichier SWF de déterminer le type de sandbox auquel le moteur d’exécution de Flash Player ou d’AIR a associé le fichier SWF. La classe Security inclut des constantes qui représentent les valeurs possibles de la propriété Security.sandboxType, comme suit :
|
|