Cette section décrit les divers Sandbox locaux dans lesquels sont placés les fichiers SWF.
Flash Player définit les types de privilèges suivants pour les fichiers locaux :
Lecture locale. Ce privilège est disponible pour les fichiers SWF local/système de fichiers, mais pas pour les fichiers SWF local/réseau. Il comprend les opérations qui chargent des données à partir de fichiers externes dans des variables ActionScript, où les données proviennent de fichiers résidant dans les systèmes de fichiers locaux. Des exemples de formes d'URL locales ont déjà été proposés dans la section « Eléments affectés ». Les opérations de chargement de données affectées sont les suivantes :
Envoi Net. Ce privilège est disponible pour les fichiers SWF local/réseau, mais pas pour les fichiers SWF local/système de fichiers. Il comprend des opérations qui envoient des données ou des requêtes vers des emplacements Internet ou des serveurs HTTP, y compris toutes les opérations suivantes utilisées avec des URL non locales :
Lecture Net. Les fichiers SWF local/réseau peuvent exécuter les opérations d'envoi Net. Certaines d'entre elles sont à sens unique : les données sont envoyées, mais aucune réponse ne revient. D'autres opérations d'envoi Net sont des requêtes pour lesquelles une réponse est reçue. Ces dernières sont appelées opérations Lecture Net, super-ensemble d'opérations Envoi Net. Les fichiers SWF local/réseau peuvent tenter les opérations de lecture Net, bien qu'une autorisation soit nécessaire à partir du domaine d'origine des données. Ces opérations sont les suivantes, à l'aide d'URL non locales :
SWF-HTML. Cela comprend les opérations qui autorisent les fichiers SWF à mettre en script des fichiers HTML et vice versa. Des trois Sandbox locaux, seuls les fichiers approuvé/local disposent du droit SWF-HTML, du fait des non concordances potentielles entre les modèles de sécurité de Flash Player et des navigateurs Web. Ces opérations comprennent :
Opérations SWF vers HTML :
fscommand
getURL("javascript:...")
ExternalInterface.call
Opérations HTML vers SWF :
L'API JavaScript* (SetVariable, GotoFrame, etc.)
Rappel établi avec ExternalInterface.addCallback
Un fichier SWF local est placé dans ce Sandbox lorsqu'il contient un indicateur appelé UseNetwork. Cet indicateur peut être placé dans un fichier SWF de n'importe quelle version, bien qu'il n'ait de sens que pour les versions Flash Player 8 et ultérieures. Cet indicateur est mis en place par l'une des deux méthodes suivantes :
Lors d'une publication depuis Flash 8, dans la boîte de dialogue Paramètres de publication, sélectionnez l'onglet Flash, localisez l'option Sécurité de lecture locale, puis choisissez Accès au réseau uniquement (figure 1).
Figure 1. Définition de la sécurité de lecture locale pour accéder au réseau uniquement
Notez que l'indicateur UseNetwork n'affecte pas les fichiers SWF chargés via HTTP (toujours placés dans des Sandbox distants) ou que l'utilisateur a approuvé (toujours placés dans le Sandbox approuvé/local). L'indicateur UseNetwork n'affecte que les fichiers SWF qui seraient autrement placés dans le sandbox Local/Système de fichiers.
Les fichiers SWF (ou HTML) locaux sont placés dans ce Sandbox s'ils correspondent à un chemin local désigné comme approuvé par la configuration locale de l'utilisateur. Il est possible d'approuver des chemins vers des fichiers individuels ou des répertoires, tout leur contenu, fichiers et sous-répertoires, devenant alors également approuvé. Deux méthodes permettent d'accorder des approbations :
Gestionnaire des paramètres. Les utilisateurs peuvent ouvrir le Panneau Sécurité du Gestionnaire de paramètres et ajouter, modifier ou supprimer manuellement des chemins approuvés dans la liste (figure 2).
Figure 2. Paramètres de sécurité du Gestionnaire de paramètres de Flash Player
Les utilisateurs peuvent également choisir le traitement global que Flash Player doit réserver aux anciens fichiers SWF (SWF local/système de version 7 et antérieures) par l'intermédiaire des options 'Demander/Autoriser/Refuser' de ce panneau. L'option par défaut est 'Demander' ; elle empêche toute opération non autorisée mais affiche la boîte de dialogue d'avertissement. Le choix de l'option 'Toujours autoriser' permet par contre les opérations interdites, revenant ainsi au comportement par défaut de Flash Player 7. Toutefois, ce paramètre n'affecte pas les fichiers SWF de version 8 ou ultérieure, mais uniquement le contenu développé avant la mise en place des nouvelles règles locales. L'activation de l'option 'Toujours refuser' entraîne l'échec de toutes les opérations interdites, sans affichage de la boîte de dialogue.
Remarque<:hs>: Les options 'Demander/Autoriser/Refuser' contrôlent non seulement les questions de sécurité locale mais également celles de correspondance exacte de domaine* survenues depuis Flash Player 7.
Fichiers de configuration FlashPlayerTrust Il s'agit de simples fichiers texte qui contiennent la liste des chemins approuvés. Ils doivent être créés par des programmes d'installation exécutables. Lorsque l'un de ces programmes installe des fichiers SWF sur l'ordinateur d'un utilisateur, il peut installer des fichiers de configuration de confiance pour désigner les fichiers SWF approuvés. Bien que chaque fichier SWF ne soit pas approuvé explicitement par l'utilisateur, celui-ci fait simplement confiance au programme d'installation lorsqu'il l'exécute—il s'agit, après tout, d'un programme exécutable. Flash Player reconnaît les fichiers de configuration de confiance en deux emplacements : l'un qui affecte tous les utilisateurs de l'ordinateur et l'autre qui n'affecte que l'utilisateur en cours. L'emplacement réservé à tous les utilisateurs a été défini de manière à exiger des droits administratifs au niveau du système d'exploitation. Les emplacements sont les suivants :
Tous les utilisateurs Windows :
<système>\Macromed\Flash\FlashPlayerTrust
(ex. : c:\WINNT\system32\Macromed\Flash\FlashPlayerTrust)
Utilisateur Windows unique :
<app data>\Macromedia\Flash Player\#Security\FlashPlayerTrust
(ex. : c:\Documents and Settings\fred\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust)
Tous les utilisateurs Mac OS :
<app support>/Macromedia/FlashPlayerTrust
(ex. : /Library/Application Support/Macromedia/FlashPlayerTrust)
Utilisateur Mac OS unique :
<app data>/Macromedia/Flash Player/#Security/FlashPlayerTrust
(ex. : /Users/fred/Library/Preferences/Macromedia/Flash Player/#Security/FlashPlayerTrust)
Ces emplacements sont des répertoires, pas des fichiers individuels. Autant de fichiers de configuration que nécessaire peuvent y être installés, Flash Player lira tous les fichiers stockés dans ces répertoires. Les fichiers de configuration ne doivent cependant pas être placés dans des sous-répertoires de FlashPlayerTrust, mais directement dans les répertoires FlashPlayerTrust. Le nom donné aux fichiers de configuration individuels n'a pas d'importance. Cependant, pour éviter les conflits de nom, il est préférable que les programmes d'installation nomment leurs fichiers de configuration de sorte qu'ils demeurent spécifiques à leur produit. Les répertoires FlashPlayerTrust n'étant pas présents dans tous les systèmes, les programmes d'installation doivent parfois les créer.
La syntaxe de ces fichiers est simple : ils contiennent autant de chemins d'accès local que nécessaire, un par ligne. Les espaces blancs et les lignes vierges sont autorisés. Des commentaires peuvent être inclus avec le caractère #, à la fin d'une ligne. Les guillemets sont inutiles (et seront la cause de problèmes) pour les chemins contenant des espaces.
Ces fichiers contenant des chemins de système de fichiers qui peuvent comporter des caractères non ASCII dans certains ordinateurs, le codage de texte utilisé dans les fichiers FlashPlayerTrust est important. Flash Player recherchera des caractères de marque d'ordre d'octet Unicode au début de ces fichiers, et reconnaîtra les marques d'ordre UTF-8 et UTF-16, traitant le reste du fichier en UTF-8 ou UTF-16 de façon appropriée. (Le Bloc-notes de Windows et TextEdit de Mac, par exemple, peuvent écrire des fichiers texte Unicode contenant ses marques d'ordre d'octet. Nombre d'autres éditeurs de texte peuvent également le faire.) Si Flash Player ne trouve pas de marque d'ordre d'octet au début d'un fichier FlashPlayerTrust, il interprète le fichier à l'aide de la 'page de codes' actuelle (codage local par défaut) de l'ordinateur.
Bien que l'on parle généralement de fichiers SWF placés dans des Sandbox, il est également vrai que Flash Player place lui aussi des fichiers HTML dans des Sandbox pour contrôler les interactions SWF/HTML. Les fichiers HTML locaux ne possèdent que deux Sandbox : approuvés et non approuvés. Par défaut, les fichiers HTML locaux ne sont pas approuvés, mais peuvent être désignés comme approuvés de la même façon que les fichiers SWF. Le Sandbox d'un fichier HTML local ne concerne que la mise en script d'HTML en SWF, comme avec l'API JavaScript de Flash Player.
Un fichier SWF peut choisir son propre type de Sandbox à l'aide de la propriété ActionScript en lecture seule suivante :
Cette propriété peut prendre l'une des quatre valeurs de chaînes suivantes :
Les fichiers SWF d'un sandbox local/système de fichiers peuvent exécuter des opérations en Lecture locale mais pas d'opérations Envoi Net ou SWF/HTML.
Si vous utilisez une version de débogage de Flash Player et que vous êtes connecté(e) au débogueur dans Macromedia Flash, dès qu'un fichier SWF de ce sandbox tente une opération interdite, un message de diagnostic s'affiche dans le panneau de résultats et décrit l'opération avortée.
Lorsqu'un utilisateur lit un fichier SWF avec une version de publication 7 ou antérieure dans ce Sandbox et que le fichier SWF tente une opération interdite, une boîte de dialogue d'avertissement de sécurité s'affiche, signalant que le fonctionnement prévu du contenu a pu être interrompu du fait d'une modification des règles de sécurité locales de Flash Player 8 (figure 3).
Figure 3. Boîte de dialogue Sécurité alertant l'utilisateur de l'abandon d'une opération
Cette boîte de dialogue apparaît tout au plus à chaque exécution d'une application. Les opérations suivantes ne déclencheront pas son ouverture, mais échoueront discrètement.
La tentative d'opération échouera quelle que soit la mesure prise par l'utilisateur dans la boîte de dialogue. Toutefois, si l'utilisateur clique sur le bouton Paramètres, une nouvelle fenêtre affiche le Gestionnaire de paramètres, où il peut choisir d'approuver le contenu local à l'origine de la tentative d'opération interdite. Si l'utilisateur choisit la commande d'ajout d'emplacement, rapidement après l'affichage du Gestionnaire de paramètres de Flash Player (figure 2), une info-bulle présente le chemin du fichier SWF local à l'origine de la tentative d'opération interdite (figure 4).
Figure 4. Définition d'un emplacement approuvé avec une invite 'd'info-bulle'
L'utilisateur peut choisir de simplement copier ce chemin dans le champ de texte 'Faire confiance à cet emplacement', approuvant ainsi le fichier SWF individuel qui avait entraîné l'ouverture de la boîte de dialogue. Cela est parfois suffisant. Toutefois, les applications se composent parfois de plusieurs fichiers et plusieurs d'entre eux doivent alors être approuvés pour que l'application fonctionne correctement. (Voir la section coopération des médias ultérieure.) L'utilisateur peut donc être amené à approuver plusieurs fichiers ou l'ensemble du répertoire contenant le fichier SWF à l'origine de l'ouverture de la boîte de dialogue.
Si l'utilisateur effectue des changements dans le Gestionnaire de paramètres, il doit ensuite redémarrer l'application originale (généralement en actualisant son navigateur) pour que ces changements soient pris en compte.
La documentation relative au Panneau de sécurité du Gestionnaire de paramètres décrit la procédure ci-dessus pour les utilisateurs. Ces derniers peuvent également accéder à la TechNote, How Do I Let Local Flash Content Communicate with the Internet?* (Comment autoriser le contenu Flash local à communiquer avec Internet ?), pour obtenir la procédure détaillée d'approbation d'un contenu local.
Pour les utilisateurs, la boîte de dialogue d'avertissement de sécurité locale ne s'affiche que pour les fichiers SWF de version 7 et antérieures. Cette boîte de dialogue permet aux utilisateurs de corriger le contenu pré–Flash 8 affecté par les nouvelles règles de sécurité locales.
Toutefois, pour les auteurs de contenu Flash, la boîte de dialogue d'avertissement de sécurité peut être un indicateur pratique des causes d'échec. Les auteurs peuvent souhaiter être immédiatement informés lorsqu'un fichier SWF, quelle que soit la version, tente une opération interdite par les règles de sécurité locales.
En réponse à ce besoin, divers outils de programmation Macromedia, dont Macromedia Flash 8, installent un fichier appelé FlashAuthor.cfg qui demande à Flash Player d'afficher la boîte de dialogue d'avertissement dès qu'un fichier SWF Local/Système tente une opération interdite, quelle que soit sa version. Les utilisateurs sont également libres de créer eux-mêmes ce fichier. Celui-ci peut être placé en deux emplacements, chacun à côté des répertoires FlashPlayerTrust :
Tous les utilisateurs Windows :
<système>\Macromed\Flash\FlashAuthor.cfg
(ex. : c:\WINNT\system32\Macromed\Flash\FlashAuthor.cfg)
Utilisateur Windows unique :
<app data>\Macromedia\Flash Player\#Security\FlashAuthor.cfg
(ex. : c:\Documents and Settings\fred\Application Data\Macromedia\Flash Player\#Security\FlashAuthor.cfg)
Tous les utilisateurs Mac OS :
<app support>/Macromedia/FlashAuthor.cfg
(ex. : /Library/Application Support/Macromedia/FlashAuthor.cfg)
Utilisateur Mac OS unique :
<app data>/Macromedia/Flash Player/#Security/FlashAuthor.cfg
(ex. : /Users/fred/Library/Preferences/Macromedia/Flash Player/#Security/FlashAuthor.cfg)
Une seule instruction est pour l'instant reconnue dans ce fichier :
LocalSecurityPrompt=Author
Cette instruction demande à Flash Player d'ignorer la version du fichier SWF lorsqu'il choisit d'afficher ou non la boîte de dialogue d'avertissement de la figure 3.
FlashAuthor.cfg peut également contenir des espaces et des commentaires, signalés par le caractère # et placés en fin de ligne.
Si vous développez du contenu SWF destiné à être lu sous forme de fichier local, l'instruction LocalSecurityPrompt=Author peut se révéler inopportune car elle empêche Flash Player d'imiter parfaitement le comportement de l'utilisateur. Vous pouvez désactiver le comportement spécifique aux auteurs en choisissant un contenu de FlashAuthor.cfg autre que LocalSecurityPrompt=Author, comme illustré ci-dessus. Par exemple, vous pouvez commenter la ligne ci-dessus ou la modifier en quelque chose de facile à comprendre, tel que :
LocalSecurityPrompt=User
Notez que Macromedia Flash 8 installe FlashAuthor.cfg dans les deux emplacements réservés, tous les utilisateurs et utilisateur unique. Lorsque FlashAuthor.cfg est présent aux deux emplacements, Flash Player effectue la copie de l'emplacement de l'utilisateur unique, alors n'oubliez pas de modifier le fichier concerné.
Les fichiers SWF d'un sandbox local/réseau peuvent exécuter des opérations Envoi Net mais pas d'opérations en Lecture locale ou SWF/HTML.
Si vous utilisez une version de débogage de Flash Player et que vous êtes connecté au débogueur dans Flash, dès qu'un fichier SWF de ce sandbox tente une opération interdite, un message de diagnostic s'affiche dans le panneau de résultats et décrit l'opération avortée.
Les fichiers SWF placés dans ce Sandbox n'entraîneront pas l'ouverture de la boîte de dialogue d'avertissement de sécurité car le contenu ne peut pas avoir été créé avant la modification des règles de sécurité locales et se trouver dans un Sandbox local/réseau. Du point de vue de l'utilisateur, toutes les opérations interdites de ce Sandbox échoueront discrètement.
Les fichiers SWF local/réseau peuvent exécuter des opérations Envoi Net. Certaines d'entre elles sont à sens unique : les données sont envoyées, mais aucune réponse ne revient. D'autres opérations d'envoi Net sont des requêtes pour lesquelles une réponse est reçue. Ces dernières sont appelées opérations Lecture Net, super-ensemble d'opérations Envoi Net. XML.load("http://mysite.com/data/schedule.xml") est un exemple d'opération en lecture seule. Les fichiers SWF local/réseau peuvent tenter des opérations de Lecture seule. Toutefois, pour respecter le principe d'autorisations globales de Flash Player afin qu'un fichier SWF local/réseau charge des données depuis un domaine donné, celui-ci doit servir un fichier de régulation* qui autorise tous les domaines à lire les données concernées, en indiquant <allow-access-from domain="*" />. Dans l'exemple ci-dessus, mysite.com aurait besoin d'un fichier de régulation placé soit dans l'emplacement par défaut (http://mysite.com/crossdomain.xml) ou à côté des données désirées (http://mysite.com/data/crossdomain.xml). Dans ce dernier cas, le chargement du fichier SWF doit appeler le code suivant pour informer Flash Player de l'emplacement, pas par défaut, du fichier de régulation :
System.security.loadPolicyFile("http://mysite.com/data/crossdomain.xml")