Un certain nombre de règles de sécurité ont changé avec le lecteur Flash 7 mais elles s'appliquent également aux versions précédentes de Flash, ce qui est plutôt discutable. Dans tous les cas il vaut mieux savoir comment gérer les échanges entre différents domaines (et sous-domaines).
En ce qui concerne l'accès aux données et fonctions d'un swf chargé en loadMovie, peu de choses changent par rapport à Flash MX, il est toujours nécessaire d'autoriser les domaines avec System.security.allowDomain(). Une nouvelle méthode System.security.allowInsecureDomain() permet également d'accéder à des domaines sécurisés (HTTPS), pour en savoir plus lisez le tutorial sur les nouvelles méthodes de l'objet System.
Chargement de données à partir de domaines différents
Les changements importants viennent du chargement de données provenant de domaines et sous-domaines différents. Il faut maintenant autoriser les domaines susceptibles d'accéder aux fichiers ou scripts appelés par l'intermédiaire de LoadVariables, LoadVars, XML, Remoting et XML Socket sous peine de voir s'afficher ce charmant panneau d'avertissement:
Comme il n'est pas possible d'exécuter une instruction de type System.Security.allowDomain() vu qu'il ne s'agit pas de fichier swf, les autorisations sont réalisées par l'intermédiaire d'un fichier xml placé à la racine du site autorisant l'accès à ses données. Ce fichier doit impérativement se nommer crossdomain.xml et ressembler à cela:
Vous pouvez insérer autant de noeud "allow-access-from" que vous le souhaitez et remplacer certain éléments par une astérisque pour autoriser de multiples domaines. Si vous souhaitez autoriser tous les domaines vous pouvez créer un fichier crossdomain.xml ressemblant à ceci:
<?xml version="1.0"?> <cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
Ce système est assez pratique puisqu'il n'oblige maintenant plus à passer par un swf "shim" sur le domaine distant, mais il nécessite impérativement que les fichiers dont vous voulez autoriser l'accès soient disponibles par http, https ou ftp ce qui dans certain cas (par exemple pour un serveur Xml Socket) peut être assez gênant car il oblige à installer un serveur web sur une machine qui n'en avait pas nécessairement besoin.
L'exemple suivant est un swf placé sur Flashxpress.net et qui charge un fichier texte placé sur le site regart.net:
Vous pouvez télécharger l'ensemble des fichiers de cet exemple ici: cross.zip
Revenons maintenant au panneau de sécurité présenté en début de cette section, vous avez du constater la case à cocher "ne plus demander". Cette case permet d'autoriser définitivement tous les domaines à accéder à des domaines distants sans avertissement ou au contraire refuser systématiquement (ce qui est plutôt dangereux). Si vous avez coché cette case et souhaitez revenir plus tard sur votre décision, le panneau paramètre auquel vous accéder en cliquant sur une animation flash avec le bouton droit ne vous permet pas de modifier ce choix. Pour cela vous devez accéder au gestionnaire de paramètres Macromedia Flash player sur le site de Macromedia. Vous accédez à une application flash avec plusieurs onglets, choisissez le troisième onglet (avec le cadenas) comme le présente la figure suivante:
Au moment de l'écriture de ce tutorial, le formulaire est partiellement buggué pour les personnes ayant un système d'exploitation dont la langue n'est pas l'anglais. Si le bug n'a toujours pas été corrigé vous devriez ne voir que les trois boutons du bas sans légende. Voila en version anglaise le texte qui accompagne ces boutons. Si vous souhaitez revenir sur votre décision, vous pouvez changer la sélection en sélectionnant "always ask".
Mise à jour automatique du lecteur
Nouveauté accompagnant l'installation du lecteur Flash 7, une petite application destinée à vérifier régulièrement si vous avez la dernière version du lecteur Flash. Ce fichier installé avec le lecteur se trouve dans le dossier C:\WINDOWS\system32\Macromed\Flash\getFlash.exe. A noter que ce programme ne marche que pour Internet Explorer PC.
Quand ce programme se déclenche (symbolisé par l'icône dans le systray) vous pouvez mettre à jour votre lecteur:
Si vous cliquez sur Settings vous accédez au gestionnaire de paramètres Macromedia Flash player, le 4eme onglet vous permet de régler la fréquence de déclenchement du programme de mise à jour comme l'indique l'image suivante:
Autorisations d'accès à sa machine par Flash
Comme nous l'avons vu au cours de ce tutorial, Macromedia a mis en place le gestionnaire de paramètres Macromedia Flash player qui vous permet de gérer un certain nombre de paramètres comme l'autorisation d'accès à des domaines distants ou la mise à jour du lecteur. Ce programme vous permet également de gérer les autorisations d'accès à votre machine comme l'accès au microphone, caméra ou l'espace réservé aux SharedObjects:
Vous pouvez le faire pour l'ensemble des domaines ou plus finement pour chaque domaine que vous avez déjà visité.