Contrôle de l’accès URL externe

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

Les API suivantes gèrent la génération de scripts et l’accès URL externes (par le biais d’URL HTTP, de mailto:, etc.) :

  • La fonction flash.system.fscommand()

  • La méthode ExternalInterface.call()

  • La fonction flash.net.navigateToURL()

Si un contenu est chargé à partir du système de fichiers local, les appels à ces méthodes n’aboutissent que si le code et la page Web qui le contient (le cas échéant) se trouvent dans le sandbox approuvé localement ou le sandbox d’application AIR. Ils échouent si le contenu provient du sandbox local avec accès au réseau ou local avec système de fichiers.

Si le contenu n’est pas chargé localement, toutes ces API peuvent communiquer avec la page Web à laquelle elles sont intégrées, selon la valeur du paramètre AllowScriptAccess décrit ci-dessous. La fonction flash.net.navigateToURL() peut en outre communiquer avec toute fenêtre ou tout cadre de navigateur ouvert, pas seulement avec la page contenant le fichier SWF. Pour plus d’informations à ce sujet, voir Utilisation de la fonction navigateToURL().

Le paramètre AllowScriptAccess du code HTML qui charge un fichier SWF permet de contrôler l’accès URL externe à partir du fichier SWF. Définissez ce paramètre dans la balise PARAM ou EMBED. Si la valeur du paramètre AllowScriptAccess n’est pas définie, le fichier SWF et la page HTML peuvent uniquement communiquer s’ils appartiennent au même domaine.

Le paramètre AllowScriptAccess prend en charge trois valeurs : "always", "sameDomain" et "never".
  • Lorsque le paramètre AllowScriptAccess est défini sur "always", le fichier SWF peut communiquer avec la page HTML à laquelle il est intégré, même s’il ne provient pas du même domaine qu’elle.

  • Lorsque le paramètre AllowScriptAccess est défini sur "sameDomain", le fichier SWF peut communiquer avec la page HTML à laquelle il est intégré, uniquement s’il provient du même domaine. Il s’agit de la valeur par défaut du paramètre AllowScriptAccess. Utilisez ce réglage ou ne définissez pas la valeur du paramètre AllowScriptAccess pour empêcher un fichier SWF d’un domaine d’accéder à un script sur une page HTLM issue d’un autre domaine.

  • Lorsque le paramètre AllowScriptAccess est défini sur "never", le fichier SWF ne peut communiquer avec aucune page HTML. L’utilisation de cette valeur est désapprouvée depuis la sortie d’Adobe Flash CS4 Professional. Elle n’est pas recommandée et elle ne devrait pas s’avérer nécessaire si vous ne servez pas de fichiers SWF non approuvés à partir de votre propre domaine. Si vous devez envoyer des fichiers SWF non approuvés, Adobe vous conseille de créer un sous-domaine distinct et d’y placer l’ensemble du contenu non approuvé.

L’exemple suivant illustre le réglage de la balise AllowScriptAccess dans une page HTML pour autoriser l’accès URL externe à un autre domaine :

<object id='MyMovie.swf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' height='100%' width='100%'> 
<param name='AllowScriptAccess' value='always'/> 
<param name='src' value=''MyMovie.swf'/> 
<embed name='MyMovie.swf' pluginspage='http://www.adobe.com/go/getflashplayer' src='MyMovie.swf' height='100%' width='100%' AllowScriptAccess='never'/> 
</object> 

Utilisation de la fonction navigateToURL()

Outre le réglage de sécurité spécifié par le paramètre allowScriptAccess (voir plus haut), la fonction navigateToURL() propose un autre paramètre facultatif : target. Le paramètre target permet de spécifier le nom d’une fenêtre ou d’un cadre HTML auquel envoyer la requête URL. D’autres restrictions de sécurité s’appliquent à de telles requêtes et elles varient selon que la fonction navigateToURL() est utilisée comme instruction de programmation ou non.

Pour les instructions de programmation, telles que navigateToURL("javascript: alert('Hello from Flash Player.')"), les règles suivantes s’appliquent :

  • Si le fichier SWF est un fichier local approuvé, la requête aboutit.

  • Si la cible est la page HTML à laquelle le fichier SWF est intégré, les règles allowScriptAccess décrites plus haut s’appliquent.

  • Si la cible contient du contenu issu du même domaine que le fichier SWF, la requête aboutit.

  • Si la cible contient du contenu issu d’un autre domaine que le fichier SWF et qu’aucune des deux conditions précédentes n’est remplie, la requête échoue.

Pour les instructions autres que les instructions de programmation (telles que HTTP, HTTPS et mailto:), la requête échoue si toutes les conditions suivantes sont réunies :

  • La cible correspond à un des mots clés spéciaux "_top" ou "_parent"

  • Le fichier SWF se trouve dans une page Web hébergée dans un domaine différent et

  • Le paramètre allowScriptAccess n’est pas défini sur "always" dans le fichier SWF

Pour plus d’informations

Pour plus d’informations sur l’accès URL externe, voir les sections suivantes du manuel Guide de référence ActionScript 3.0 pour la plate-forme Adobe Flash :