Aan het beveiligingssandboxmodel van Flash Player, wordt door de runtime van Adobe AIR nog een sandbox toegevoegd, namelijk de sandbox van de
toepassing
. Bestanden die worden geïnstalleerd als deel van een AIR-toepassing, worden in de sandbox van de toepassing geplaatst. Voor andere bestanden die door de toepassing worden geladen, gelden beveiligingsbeperkingen die overeenkomen met de beperkingen die in het reguliere Flash Player-beveiligingsmodel zijn opgegeven.
Bij de installatie van een toepassing worden alle bestanden in het AIR-pakket geïnstalleerd in een toepassingsmap op de computer van de gebruiker. Ontwikkelaars kunnen in de programmacode naar deze map verwijzen via het URL-schema
app:/
(zie
URI-schema's
). Alle bestanden in de toepassingsmapstructuur worden bij het starten van de toepassing aan de toepassingssandbox toegewezen. De inhoud van de toepassingssandbox heeft alle toegangsrechten die beschikbaar zijn voor een AIR-toepassing, zoals interactie met het lokale bestandssysteem.
Vele AIR-toepassingen gebruiken alleen deze lokaal geïnstalleerde bestanden om de toepassing uit te voeren. AIR-toepassingen zijn echter niet beperkt tot de bestanden in de toepassingsmap; ze kunnen een willekeurig type bestand van een willekeurige bron laden. Dit geldt onder andere voor lokale bestanden op de computer van de gebruiker en bestanden op beschikbare externe bronnen, zoals op een lokaal netwerk of internet. Het type van de bestanden heeft geen invloed op de beveiligingsbeperkingen: geladen HTML-bestanden hebben dezelfde beveiligingsrechten als geladen SWF-bestanden van dezelfde bron.
De inhoud van de toepassingsbeveiligingssandbox heeft toegang tot AIR API's die niet kunnen worden gebruikt door de inhoud van andere sandboxen. Voorbeeld: de eigenschap
air.NativeApplication.nativeApplication.applicationDescriptor
, die de inhoud van het descriptorbestand van de toepassing weergeeft, is beperkt tot de inhoud van de toepassingsbeveiligingssandbox. Een ander voorbeeld van een beperkte API is de klasse FileStream, die methoden voor het lezen van en schrijven naar het lokale bestandssysteem bevat.
ActionScript-API's die alleen beschikbaar zijn voor de inhoud in de beveiligingssandbox van een toepassing, zijn in de
Naslaggids voor ActionScript 3.0 voor het Adobe Flash-platform
gemarkeerd met het AIR-logo. Als deze API's in andere sandboxen worden gebruikt, genereert de runtime een SecurityError-fout.
Bij HTML-inhoud (in een HTMLLoader-object) zijn alle AIR JavaScript API's (de API's die beschikbaar zijn via de eigenschap
window.runtime
, of via het object
air
bij het gebruik van het bestand AIRAliases.js) beschikbaar voor inhoud van de toepassingsbeveiligingssandbox. De HTML-inhoud in andere sandboxen heeft geen toegang tot de eigenschap
window.runtime
, zodat deze inhoud geen toegang heeft tot de API's van AIR of Flash.
Voor inhoud die binnen de sandbox van een AIR-toepassing wordt uitgevoerd, gelden de volgende aanvullende beperkingen:
-
Voor de HTML-inhoud van de toepassingsbeveiligingssandbox zijn er beperkingen betreffende het gebruik van API's die tekenreeksen dynamisch in programmacode kunnen omzetten nadat de code is geladen. Hierdoor wordt voorkomen dat de toepassing onbedoeld code van niet-toepassingsbronnen (zoals mogelijk onveilige netwerkdomeinen) opneemt (en uitvoert). Een voorbeeld hiervan is het gebruik van de functie
eval()
. Zie
Codebeperkingen voor de inhoud van verschillende sandboxen
voor meer informatie.
-
Om mogelijke phishingaanvallen te blokkeren worden
img
-tags in de HTML-inhoud van ActionScript TextField-objecten genegeerd in de SWF-inhoud van de toepassingsbeveiligingssandbox.
-
De inhoud van de toepassingssandbox kan geen gebruik maken van het protocol
asfunction
in de HTML-inhoud van ActionScript 2.0-tekstvelden.
-
De SWF-inhoud van de toepassingssandbox kan geen gebruik maken van de cross-domain cache, een nieuwe functie vanaf Flash Player 9 Update 3. Met deze functie kan Flash Player de inhoud van componenten van het Adobe-platform opslaan in een niet-vluchtige cache en vervolgens op aanvraag opnieuw gebruiken in geladen SWF-inhoud (zodat de inhoud niet meerdere keren opnieuw hoeft te worden geladen).