Objets partagés

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

Flash Player offre la possibilité d’utiliser des objets partagés, c’est-à-dire des objets ActionScript qui persistent en dehors d’un fichier SWF, soit localement dans le système de fichiers de l’utilisateur, soit à distance sur un serveur RTMP. Les objets partagés, comme d’autres médias dans Flash Player, sont répartis dans des sandbox de sécurité. Le modèle de sandbox des objets partagés s’avère toutefois différent parce que les objets partagés ne sont pas des ressources accessibles depuis d’autres domaines. Les objets partagés sont au contraire extraits d’un magasin d’objets partagés propre au domaine de chaque fichier SWF qui appelle les méthodes de la classe SharedObject. En règle générale, un magasin d’objets partagés est encore plus spécifique que le domaine d’un fichier SWF : par défaut, chaque fichier SWF utilise un magasin d’objets partagés propre à la totalité de son URL d’origine. Pour plus d’informations sur les objets partagés, voir Objets partagés.

Le fichier SWF peut utiliser le paramètre localPath des méthodes SharedObject.getLocal() et SharedObject.getRemote() afin d’exploiter un magasin d’objets partagés associé à une partie de son URL seulement. Ainsi, le fichier SWF peut autoriser le partage avec d’autres fichiers SWF issus d’autres URL. Même si la valeur transmise au paramètre localPath est '/' , celle-ci spécifie tout de même un magasin d’objets partagés propres à son domaine.

Les utilisateurs peuvent limiter l’accès aux objets partagés via la boîte de dialogue Paramètres de Flash Player ou via le Gestionnaire des paramètres. Par défaut, le volume d’objets partagés créés ne peut dépasser 100 Ko de données par domaine. Les administrateurs et les utilisateurs peuvent également limiter la capacité à écrire dans le système de fichiers. Pour plus d’informations, voir Contrôles administrateur et Contrôles utilisateur.

Vous pouvez définir la sécurisation d’un objet partagé en attribuant la valeur true au paramètre secure de la méthode SharedObject.getLocal() ou SharedObject.getRemote(). Notez les points suivants concernant le paramètre secure :

  • Si ce paramètre est défini sur true, Flash Player crée un nouvel objet partagé sécurisé ou obtient une référence à un objet partagé sécurisé existant. Cet objet sécurisé partagé peut uniquement être lu par des fichiers SWF ou écrit dans des fichiers SWF reçus via HTTPS appelant SharedObject.getLocal() avec le paramètre secure défini sur true.

  • Si ce paramètre est défini sur false, Flash Player crée un objet partagé ou obtient une référence à un objet partagé existant, qui peut être lu ou écrit par des fichiers SWF reçus via des connexions autres que HTTPS.

Si le fichier SWF appelant ne provient pas d’une URL HTTPS, l’attribution de la valeur true au paramètre secure de la méthode SharedObject.getLocal() ou SharedObject.getRemote() renvoie une exception SecurityError.

Le choix du magasin d’objets partagé dépend de l’URL d’origine du fichier SWF. Cela reste vrai même dans les deux cas de figure où un fichier SWF ne provient pas d’une URL simple : importation et chargement dynamique. L’importation s’applique lorsque vous chargez un fichier SWF dont la propriété LoaderContext.securityDomain a la valeur SecurityDomain.currentDomain. Dans ce cas, le fichier SWF chargé portera une pseudo-URL qui commence par le domaine du fichier SWF à l’origine du chargement, puis spécifie sa véritable URL d’origine. Le chargement dynamique renvoie au chargement d’un fichier SWF à l’aide de la méthode Loader.loadBytes(). Dans cette situation, le fichier SWF chargé porte une pseudo-URL qui commence par l’URL complète du fichier SWF à l’origine du chargement, suivie d’un entier d’identification. Dans les deux cas de figure (importation et chargement dynamique), la pseudo-URL du fichier SWF peut être analysée à l’aide de la propriété LoaderInfo.url. Cette pseudo-URL est traitée comme une URL réelle pour définir le magasin d’objets partagés. Elle peut être utilisée en partie ou dans son intégralité comme paramètre localPath d’un objet partagé.

Les utilisateurs et les administrateurs peuvent choisir de désactiver l’utilisation d’objets partagés tiers. Il s’agit des objets partagés utilisés par tout fichier SWF exécuté dans un navigateur Web lorsque l’URL d’origine de ce fichier SWF est d’un domaine différent de l’URL affichée dans la barre d’adresse du navigateur. Les administrateurs et utilisateurs peuvent choisir de désactiver l’utilisation des objets partagés tiers pour des raisons de confidentialité, s’ils souhaitent éviter la surveillance inter-domaines. Pour éviter cette restriction, il est judicieux de veiller à ce que tous les fichiers SWF utilisant des objets partagés soient chargés uniquement dans une structure de pages HTML qui garantit que le fichier provient du même domaine que celui affiché dans la barre d’adresse du navigateur. Si vous essayez d’utiliser des objets partagés à partir d’un fichier SWF tiers et que l’utilisation des objets partagés tiers est désactivée, les méthodes SharedObject.getLocal() et SharedObject.getRemote() renvoient la valeur null. Pour plus d’informations, voir les adresses www.adobe.com/fr/products/flashplayer/articles/thirdpartylso.