BeveiligingssandboxenFlash Player 9 of hoger, Adobe AIR 1.0 of hoger Clientcomputers kunnen individuele bestanden met code, inhoud en gegevens uit een aantal bronnen verkrijgen, zoals via externe websites, lokale bestandssystemen of geïnstalleerde AIR-toepassingen. De runtimes van Flash Player en AIR wijzen codebestanden en andere resources (zoals gezamenlijke objecten, bitmaps, geluiden, video’s en gegevensbestanden) afzonderlijk aan beveiligingssandboxen toe op basis van hun locatie op het moment dat deze werden geladen. In de volgende secties worden de regels beschreven die door de runtimes worden afgedwongen en die bepalen waartoe code of inhoud die binnen een bepaalde sandbox wordt uitgevoerd, toegang kan krijgen. Zie het Flash Player Developer Center-onderwerp over beveiliging op www.adobe.com/go/devnet_security_nl voor meer informatie over beveiliging in Flash Player. Externe sandboxenDe runtimes van Flash Player en AIR plaatsen elementen (waaronder SWF-bestanden) van internet in afzonderlijke sandboxen die dezelfde naam hebben als het domein waaruit ze afkomstig zijn. Elementen die bijvoorbeeld zijn geladen van example.com, worden in een andere beveiligingssandbox geplaatst dan elementen die zijn geladen van foo.org. Deze bestanden hebben standaard toegang tot alle bronnen van de eigen server. Externe SWF-bestanden kunnen toegang krijgen tot aanvullende gegevens op andere domeinen via expliciete bevoegdheden van de website of maker, zoals URL-beleidsbestanden en de methode Security.allowDomain(). Zie Controlemiddelen voor websites (beleidsbestanden) en Controlemiddelen voor auteurs (ontwikkelaars) voor meer informatie. Externe SWF-bestanden kunnen geen lokale bestanden of bronnen laden. Zie het Flash Player Developer Center-onderwerp over beveiliging op www.adobe.com/go/devnet_security_nl voor meer informatie over beveiliging in Flash Player. Lokale sandboxenLokaal bestand beschrijft elk bestand waarnaar wordt verwezen door gebruik van het bestand: protocol of een UNC-pad (Universal Naming Convention). Lokale SWF-bestanden worden in een van vier lokale sandboxen geplaatst:
Communicatie tussen de sandbox Lokaal-met-netwerk en de sandbox Lokaal-met-bestandssysteem, alsmede tussen de sandbox Lokaal-met-bestandssysteem en de externe sandboxen, is ten strengste verboden. Er kan geen toestemming voor dergelijke communicatie worden verleend door een toepassing die wordt uitgevoerd in Flash Player of door een gebruiker of beheerder. Voor scriptbewerkingen tussen lokale HTML-bestanden en lokale SWF-bestanden (in beide richtingen), bijvoorbeeld via de klasse ExternalInterface, moeten zowel het HTML-bestand als het SWF-bestand zich in de sandbox Lokaal-vertrouwd bevinden. De reden hiervoor is dat de lokale-beveiligingsmodellen voor browsers afwijken van het lokale-beveiligingsmodel van Flash Player. SWF-bestanden in de sandbox Lokaal-met-netwerk kunnen geen SWF-bestanden laden die zich in de sandbox Lokaal-met-bestandssysteem bevinden. SWF-bestanden in de sandbox Lokaal-met-bestandssysteem kunnen geen SWF-bestanden laden die zich in de sandbox Lokaal-met-netwerk bevinden. De sandbox van AIR-toepassingenAan 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 ActionScript 3.0 Reference for 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:
Beperkingen voor JavaScript in AIRIn tegenstelling tot de inhoud van de toepassingsbeveiligingssandbox kan JavaScript-inhoud van een niet-toepassingsbeveiligingssandbox wel de functie eval() aanroepen om op elk gewenst moment dynamisch gegenereerde code uit te voeren. Er gelden in AIR echter wel beperkingen voor JavaScript-inhoud die in een beveiligingssandbox die niet van een toepassing is, wordt uitgevoerd. Onder andere:
Zie Codebeperkingen voor de inhoud van verschillende sandboxen voor meer informatie. Het type sandbox van lokale SWF-bestanden instellenEen eindgebruiker of de beheerder van een computer kan opgeven dat een lokaal SWF-bestand vertrouwd is, zodat dit bestand gegevens van alle domeinen kan laden, zowel lokaal als op het netwerk. Dit wordt opgegeven in de algemene map voor Flash Player-vertrouwen en in de gebruikersmap voor Flash Player-vertrouwen. Zie Controlemiddelen voor beheerders en Controlemiddelen voor gebruikers voor meer informatie. Zie Lokale sandboxen voor meer informatie over lokale sandboxen. Adobe Flash ProfessionalU kunt een SWF-bestand voor de lokaal-met-bestandssysteem of de lokaal-met-netwerk sandbox configureren door de publicatie-instellingen van het document in het programma voor het schrijven van programmacode in te stellen. Adobe FlexU kunt een SWF-bestand configureren voor de sandbox Lokaal-met-bestandssysteem of voor de sandbox Lokaal-met-netwerk door de markering use-network in de Adobe Flex-compiler in te stellen. Zie “About the application compiler options” in Building and Deploying Adobe Flex 3 Applications voor meer informatie. De eigenschap Security.sandboxTypeEen maker van een SWF-bestand kan aan de hand van de statische alleen-lezen eigenschap Security.sandboxType bepalen aan welk type sandbox de runtime van Flash Player of AIR het SWF-bestand heeft toegewezen. De klasse Security bevat de volgende constanten die mogelijke waarden van de eigenschap Security.sandboxType vertegenwoordigen:
|
![]() |