Inhoud van andere domeinen kan normaal gesproken geen scripts in andere domeinen oproepen. Om AIR-toepassingen te beschermen tegen onbedoelde lekkage van informatie of besturingselementen waarvoor speciale toegangsrechten gelden, gelden de volgende beperkingen voor de inhoud van de beveiligingssandbox
application
(inhoud die met de toepassing is geïnstalleerd):
-
Code in de toepassingsbeveiligingssandbox mag geen toegang bieden tot andere sandboxen door de methode
Security.allowDomain()
op te roepen. Het oproepen van deze methode vanuit de toepassingsbeveiligingssandbox veroorzaakt een fout.
-
Het importeren van niet-toepassingsinhoud in de toepassingssandbox door de eigenschap
LoaderContext.securityDomain
of
LoaderContext.applicationDomain
te activeren, wordt verhinderd.
Er zijn echter situaties waarin de AIR-hoofdtoepassing inhoud van een extern domein nodig heeft voor gecontroleerde toegang tot scripts in de AIR-hoofdtoepassing, of omgekeerd. Hiervoor biedt de runtime het mechanisme
sandboxbridge
, dat als gateway tussen beide sandboxen fungeert. Een sandboxbridge kan expliciete interactie tussen externe en toepassingsbeveiligingssandboxen bieden.
De sandboxbridge maakt twee objecten toegankelijk, waartoe zowel geladen als ladende scripts toegang hebben:
-
Het object
parentSandboxBridge
staat ladende inhoud toe om eigenschappen en functies toegankelijk te maken voor scripts in de geladen inhoud.
-
Het object
childSandboxBridge
staat geladen inhoud toe om eigenschappen en functies toegankelijk te maken voor scripts in de ladende inhoud.
Objecten die via de sandboxbridge toegankelijk worden gemaakt, worden doorgegeven op basis van waarde en niet op basis van referentie. Alle gegevens zijn geserialiseerd. Dit betekent dat de objecten die door de ene kant van de bridge toegankelijk zijn gemaakt, niet door de andere kant kunnen worden ingesteld, en dat alle toegankelijke objecten geen specifiek type hebben. Bovendien kunt u alleen eenvoudige objecten en functies toegankelijk maken, geen complexe objecten.
Als onderliggende inhoud een eigenschap van het object parentSandboxBridge probeert in te stellen, genereert de runtime een SecurityError-fout. Evenzo genereert de runtime een SecurityError-fout als bovenliggende inhoud een eigenschap van het object childSandboxBridge probeert in te stellen.