Overzicht van beveiliging in het Flash-platformFlash Player 9 of hoger, Adobe AIR 1.0 of hoger Een groot deel van het beveiligingsmodel dat door de runtimes van Flash Player en AIR wordt gebruikt, is gebaseerd op het domein waaruit geladen SWF-bestanden, HTML, media en andere elementen afkomstig zijn. Uitvoerbare code in een bestand uit een specifiek internetdomein, zoals www.example.com, heeft altijd toegang tot alle gegevens van dat domein. Deze elementen worden in dezelfde beveiligingsgroep geplaatst, die een beveiligingssandbox wordt genoemd. (Zie Beveiligingssandboxen voor meer informatie.) ActionScript-code in een SWF-bestand kan bijvoorbeeld SWF-bestanden, bitmaps, audio, tekstbestanden en andere elementen uit het eigen domein laden. Ook is cross-scripting tussen twee SWF-bestanden uit hetzelfde domein altijd toegestaan, mits beide bestanden met ActionScript 3.0 zijn geschreven. Cross-scripting is het vermogen van code in het ene bestand om toegang te krijgen tot de eigenschappen, methoden en objecten die door de code in het andere bestand worden gedefinieerd. Cross-scripting wordt niet ondersteund tussen SWF-bestanden die met ActionScript 3.0 of lager zijn geschreven. Deze bestanden kunnen echter communiceren door middel van de klasse LocalConnection. Verder is het standaard verboden om een SWF-bestand cross-scripting te laten voeren in ActionScript 3.0 SWF-bestanden uit andere domeinen en gegevens uit andere domeinen te laden. Dit soort toegang kan echter wel worden toegestaan met een aanroep van de methode Security.allowDomain() in het geladen SWF-bestand. Zie Cross-scripting voor meer informatie. De volgende basisregels voor beveiliging zijn standaard van toepassing:
De runtimes van Flash Player en AIR beschouwen de volgende vermeldingen als individuele domeinen en hebben voor deze domeinen afzonderlijke beveiligingssandboxen ingesteld:
Zelfs als een benoemd domein, zoals http://example.com, aan een specifiek IP-adres wordt toegewezen, zoals http://192.0.34.166, stellen de runtimes voor beide afzonderlijke beveiligingssandboxen in. Een ontwikkelaar kan twee basismethoden gebruiken om ervoor te zorgen dat een SWF-bestand toegang heeft tot elementen van andere sandboxen dan die van het SWF-bestand:
In het beveiligingsmodel van de Flash Player- en AIR-runtimes wordt onderscheid gemaakt tussen het laden van inhoud en het extraheren of ophalen van gegevens. Inhoud wordt als media gedefinieerd, zoals visuele media die de runtime kan weergeven, audio, video of een SWF- of HTML-bestand dat weergegeven media bevat. Gegevens worden gedefinieerd als iets dat alleen door code toegankelijk is. Inhoud en gegevens worden op verschillende manieren geladen.
Het Flash Player-beveiligingsmodel heeft verschillende regels gedefinieerd voor het laden van inhoud en het benaderen van gegevens. Over het algemeen gelden er minder beperkingen voor het laden van inhoud dan voor het benaderen van gegevens. Over het algemeen kan inhoud (SWF-bestanden, bitmaps, MP3-bestanden en video’s) van een willekeurige plaats worden geladen, maar als de inhoud uit een ander domein afkomstig is dan de code of de inhoud die wordt geladen, wordt de inhoud in een afzonderlijke beveiligingssandbox geplaatst. Er zijn een aantal obstakels bij het laden van inhoud:
Wanneer de geladen media een afbeelding, audio of video is, kunnen de gegevens zoals pixel- en geluidsgegevens alleen worden benaderd door een SWF-bestand dat zich buiten de beveiligingssandbox bevindt als het domein van dat SWF-bestand in een bestand met URL-domeinbeleid was opgenomen in het oorspronkelijke domein van de media. Zie Geladen media benaderen als gegevens voor meer informatie. Andere vormen van geladen gegevens zijn tekst- of XML-bestanden die met een object URLLoader worden geladen. Wanneer u gegevens uit een andere beveiligingssandbox wilt benaderen, moet ook hier toestemming worden gegeven aan de hand van een URL-domeinbeleid in het oorspronkelijke domein. Zie URLLoader en URLStream gebruiken voor meer informatie. Opmerking: Beleidsbestanden zijn nooit vereist om code die wordt uitgevoerd in de sandbox van een AIR-toepassing, externe inhoud of gegevens te laten laden.
|
![]() |