Säkerhetssandlådor

Flash Player 9 och senare, Adobe AIR 1.0 och senare

Klientdatorer kan hämta individuella filer som innehåller kod, innehåll och data från ett antal källor, till exempel externa webbplatser, från ett lokalt filsystem eller från ett installerat AIR-program. I Flash Player- och AIR-körtider tilldelas kodfiler och andra resurser enskilt till säkerhetssandlådor utifrån deras ursprung när de läses in. Exempel på resurser är delade objekt, bitmappar, ljud, video och datafiler. I följande avsnitt beskrivs de regler som upprätthålls av körtiderna och som styr vad en kod eller ett innehåll som körs inom en given sandlåda kan komma åt.

Mer information om säkerhet i Flash Player finns i avsnittet om säkerhet på Player Developer Center på www.adobe.com/go/devnet_security_en .

Fjärrsandlådor

I Flash Player- och AIR-körtiderna klassificeras resurser (även SWF-filer) från Internet i separata sandlådor som motsvarar deras ursprungsdomän. Resurser som läses in från example.com placeras till exempel i en annan säkerhetssandlåda än resurser som läses in från foo.org . Som standard har dessa filer åtkomst till alla resurser från den egna servern. Externa SWF-filer kan ges åtkomst till ytterligare data från andra domäner via specifika webbplats- och författarbehörigheter, t.ex. URL-principfiler och metoden Security.allowDomain() . Mer information finns i Webbplatsinställningar (principfiler) och Författarinställningar (för utvecklare) .

Externa SWF-filer kan inte läsa in några lokala filer eller resurser.

Mer information om säkerhet i Flash Player finns i avsnittet om säkerhet på Player Developer Center på www.adobe.com/go/devnet_security_en .

Lokala sandlådor

Lokala filer beskriver filer som refereras via protokollet file: eller en UNC-sökväg (Universal Naming Convention). Lokala SWF-filer placeras i en av fyra lokala sandlådor:

  • Sandlådan lokal-med-filsystem – i Flash Player- och AIR-körtiderna placeras av säkerhetsskäl alla lokala filer i sandlådan lokal-med-filsystem som standard. Från den här sandlådan kan körbar kod läsa lokala filer (genom att till exempel använda klassen URLLoader), men koden kan inte kommunicera med nätverket på något sätt. Detta gör att användaren kan vara säker på att lokala data inte läcker ut från nätverket eller delas ut på annat sätt.

  • Sandlådan lokal-med-nätverk – vid kompileringen av en SWF-fil kan du ange att den har nätverksåtkomst vid körning som lokal fil (se Inställning av sandlådetyp för lokala SWF-filer ). Dessa filer placeras i sandlådan lokal-med-nätverk. SWF-filer som har tilldelats sandlådan lokal-med-nätverk förlorar åtkomsten till de lokala filerna. I gengäld får SWF-filerna åtkomst till data i nätverket. En SWF-fil som är lokal-med-nätverk kan däremot fortfarande inte läsa data från nätverket, såvida det inte finns behörighet för den åtgärden, via en URL-principfil eller anrop till metoden Security.allowDomain() . En sådan behörighet tilldelas genom att en URL-principfil ger behörighet till alla domäner genom att använda <allow-access-from domain="*"/> eller Security.allowDomain("*") . Mer information finns i Webbplatsinställningar (principfiler) och Författarinställningar (för utvecklare) .

  • Sandlådan lokal-tillförlitlig – lokala SWF-filer som är registrerade som tillförlitliga (av användare eller installationsprogram) placeras i sandlådan lokal-tillförlitlig. Systemadministratörer och användare har även möjlighet att omtilldela (flytta) en lokal SWF-fil till eller från sandlådan lokal-tillförlitlig baserat på säkerhetsfrågor (se Administrativa inställningar och Användarinställningar ). SWF-filer som kopplats till sandlådan lokal-tillförlitlig kan samverka med alla andra SWF-filer och läsa in data från alla platser (externa eller lokala).

  • Sandlådan application i AIR – den här säkerhetssandlådan rymmer innehåll som har installerats med AIR-programmet som körs. Som standard kan koder som körs i AIR-programsandlådan utföra korsskriptning för kod från alla domäner. Men filer som finns utanför AIR-programsandlådan tillåts inte utföra korsskriptning av kod i programsandlådan. Som standard kan kod och innehåll i AIR-programsandlådan läsa in innehåll och data från alla domäner.

Kommunikation mellan sandlådorna lokal-med-nätverk och lokal-med-filsystem, liksom kommunikation mellan sandlådan lokal-med-filsystem och externa sandlådor, är förbjuden. Behörighet att tillåta sådan kommunikation kan inte ges via ett program som körs i Flash Player eller av en användare eller administratör.

För skriptning i någondera riktning mellan lokala HTML-filer och lokala SWF-filer (t.ex. med klassen ExternalInterface) krävs att både HTML-filen och SWF-filen finns i sandlådan lokal-tillförlitlig. Detta beror på att de lokala säkerhetsmodellerna för webbläsare skiljer sig från den lokala säkerhetsmodellen i Flash Player.

SWF-filer i sandlådan lokal-med-nätverk kan inte läsa in SWF-filer i sandlådan lokal-med-filsystem. SWF-filer i sandlådan lokal-med-filsystem kan inte läsa in SWF-filer i sandlådan lokal-med-nätverk.

AIR-programsandlådan

I Adobe AIR-körningstiden läggs en extra sandlåda till, som kallas program sandlådan, i modellen för säkerhetssandlåda i Flash Player. De filer som installeras som en del av ett AIR-program läses in i programsandlådan. Alla andra filer som läses in av programmet har säkerhetsrestriktioner som motsvarar de som är angivna i den vanliga säkerhetsmodellen för Flash Player.

När ett program installeras, installeras alla filer som finns i ett AIR-paket till en programkatalog på användarens dator. Utvecklare kan använda URL-schemat app:/ för att hänvisa till den här katalogen med kod (se URI-scheman ). Alla filer inuti programkatalogträdet tilldelas till programsandlådan när programmet körs. Innehåll i programsandlådan har de fullständiga behörigheter som är tillgängliga för ett AIR-program, inklusive interaktion med det lokala filsystemet.

Många AIR-program använder bara dessa lokalt installerade filer för att köra programmet. AIR-program är dock inte begränsade till bara filerna i programkatalogen - de kan läsa in alla typer av filer från alla källor. Detta inkluderar filer som är lokala på användarens dator och filer från tillgängliga fjärrkällor, som till exempel filer på ett lokalt nätverk eller på Internet. Filtyper har ingen påverkan på säkerhetsrestriktioner. Inlästa HTML-filer har samma säkerhetsbehörighet som inlästa SWF-filer från samma källa.

Innehåll i programsäkerhetssandlådan har tillgång till AIR-API:n som innehåll i andra sandlådor inte har tillgång till. Egenskapen air.NativeApplication.nativeApplication.applicationDescriptor , som returnerar innehållet i programbeskrivningsfilen för programmet, är till exempel begränsad till innehåll i programsäkerhetssandlådan. Ett annat exempel på ett begränsat API är klassen FileStream som innehåller metoder för att läsa och skriva i det lokala filsystemet.

ActionScript-API:er som endast är tillgängliga för innehåll i programsäkerhetssandlådan markeras med AIR-logotypen i Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen . Om dessa API:er används i andra sandlådor, initierar körtiden ett SecurityError-undantag.

För HTML-innehåll (i ett HTMLLoader-objekt) är alla AIR-JavaScript-API:n (de som är tillgängliga via egenskapen window.runtime , eller via objektet air när filen AIRAliases.js används) tillgängliga för innehåll i programsäkerhetssandlådan. HTML-innehåll i en annan sandlåda har inte åtkomst till egenskapen window.runtime , och därför kan inte innehållet komma åt API:erna för AIR eller Flash Player.

Följande ytterligare begränsningar gäller för innehållskörning inne i AIR-programmet:

  • HTML-innehåll i programsäkerhetssandlådan har begränsningar i att använda API:er som kan omforma strängar dynamiskt till körbar kod efter att koden har lästs in. Detta är till för att förhindra programmet från att av misstag föra in (och köra) kod från källor som inte tillhör programmet (som till exempel potentiellt osäkra nätverksdomäner). Ett exempel är användningen av funktionen eval() . Detaljer finns under Kodrestriktioner för innehåll i olika sandlådor .

  • För att förhindra möjliga nätfiskeattacker ignoreras img -taggar i HTML-innehåll i ActionScript-objekt av typen TextField som ligger i programsäkerhetssandlådan.

  • Innehåll i programsandlådan kan inte använda protokollet asfunction i HTML-innehåll i textfält av typen ActionScript 2.0.

  • SWF-innehåll i programsandlådan kan inte använda korsdomän-cachen, vilket är en funktion som lades till i uppdatering 3 av Flash Player 9. Med den här funktionen kan Flash Player lagra Adobe-plattformskomponentinnehåll beständigt och återanvända det i SWF-innehåll vid behov (vilket eliminerar behovet att läsa in innehållet igen flera gånger).

Begränsningar för JavaScript inne i AIR

Till skillnad från innehåll i programsäkerhetssandlådan kan JavaScript-innehåll i en icke-programsäkerhetssandlåda anropa funktionen eval() när som helst för att köra dynamiskt genererad kod. Men det finns begränsningar för JavaScript som körs i en icke-programsäkerhetssandlåda inne i AIR. Dessa inkluderar:

  • JavaScript-kod i en icke-programsandlåda har inte tillgång till objektet window.runtime , och kan därför inte köra AIR-API:er.

  • Som standard kan innehåll i en icke-programsäkerhetssandlåda inte använda anrop av typen XMLHttpRequest för att läsa in data från andra domäner än den domän som gör anropet. Programkod kan dock skapa sådan åtkomst för icke-programinnehåll genom att ställa in ett allowCrossdomainXHR -attribut i innehållande frame eller iframe. Mer information finns i Kodrestriktioner för innehåll i olika sandlådor .

  • Det finns begränsningar för anrop till JavaScript-metoden window.open() . Mer detaljer finns under Begränsningar för anrop till JavaScript-metoden window.open() .

  • HTML-innehåll i fjärrsäkerhetssandlådor (nätverk) kan bara läsa in CSS-, frame -, iframe - och img -innehåll från fjärrdomäner (nätverks-URL:er).

  • HTML-innehåll i sandlådor av typerna lokal-med-filsystem, lokal-med-nätverk eller lokal-tillförlitlig, kan endast läsa in CSS-, frame -, iframe - och img -innehåll från lokala sandlådor (inte från program- eller nätverks-URL:er).

Detaljer finns under Kodrestriktioner för innehåll i olika sandlådor .

Inställning av sandlådetyp för lokala SWF-filer

En användare av eller administratören för datorn kan ange att en lokal SWF-fil är tillförlitlig, vilket ger tillstånd att läsa in data från alla domäner, både lokala och i nätverk. Detta anges i katalogerna Global Flash Player Trust och User Flash Player Trust. Mer information finns i avsnitten Administrativa inställningar och Användarinställningar .

Mer information om lokala sandlådor finns i Lokala sandlådor .

Adobe Flash Professional

Du kan konfigurera en SWF-fil för sandlådan lokal-med-filsystem eller lokal-med-nätverk genom att ange dokumentets publiceringsinställning i utvecklingsverktyget.

Adobe Flex

Du kan konfigurera en SWF-fil för sandlådan lokal-med-filsystem eller lokal-med-nätverk genom att ange flaggan använd-nätverk i Adobe Flex-kompilatorn. Mer information finns i ”Om alternativ för programkompilering” i Bygga och installera Flex 3-program .

Egenskapen Security.sandboxType

En författare till en SWF-fil kan använda den skrivskyddade statiska egenskapen Security.sandboxType för att avgöra vilken sandlådetyp som SWF-filen har tilldelats i Flash Player eller AIR-körningstiden. Klassen Security innehåller följande konstanter som representerar tillåtna värden för egenskapen Security.sandboxType :

  • Security.REMOTE – SWF-filen finns på en URL-adress och fungerar enligt domänbaserade sandlåderegler.

  • Security.LOCAL_WITH_FILE – SWF-filen är en lokal fil som inte har registrerats som tillförlitlig av användaren och som inte har publicerats med en nätverksbeteckning. SWF-filen kan läsa från lokala datakällor, men inte kommunicera med Internet.

  • Security.LOCAL_WITH_NETWORK – SWF-filen är en lokal fil som inte har registrerats som tillförlitlig av användaren, men som har publicerats med någon nätverksbeteckning. SWF-filen kan kommunicera med Internet men kan inte läsa från lokala datakällor.

  • Security.LOCAL_TRUSTED – SWF-filen är en lokal fil som har registrerats som tillförlitlig av användaren, antingen med inställningshanteraren eller med en Trust-konfigurationsfil i Flash Player. SWF-filen kan både läsa från lokala datakällor och kommunicera med Internet.

  • Security.APPLICATION ) – SWF-filen körs i ett AIR-program och den installerades med paketet (AIR-filen) för det programmet. Som standard kan filer i sandlådan application i AIR utföra korsskriptning för valfri fil från alla domäner. Filer som finns utanför sandlådan application i AIR tillåts inte att utföra korsskriptning av AIR-filen. Som standard kan filer i sandlådan application i AIR läsa in innehåll och data från alla domäner.