Obszary izolowane

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Komputery klienckie mogą uzyskiwać poszczególne pliki zawierające kod, treści i dane z różnych źródeł, takich jak zewnętrzne witryny WWW, lokalny system plików lub zainstalowana aplikacja AIR. Środowiska wykonawcze Flash Player i AIR indywidualnie przypisują pliki kodu oraz pozostałe zasoby, takie jak obiekty współużytkowane, bitmapy, dźwięki, wideo i pliki danych, do obszarów izolowanych zabezpieczeń w oparciu o ich pochodzenie w chwili ładowania. W poniższych sekcjach opisano egzekwowane przez środowiska wykonawcze reguły rządzące dostępem kodu i treści w danym obszarze izolowanym do zasobów zewnętrznych.

Więcej informacji na temat zabezpieczeń w programie Flash Player zawiera temat „Security” w serwisie Flash Player Developer Center pod adresem www.adobe.com/go/devnet_security_pl .

Zdalne obszary izolowane

Środowiska wykonawcze Flash Player i AIR przypisują zasoby (w tym pliki SWF) pochodzące z Internetu do odrębnych obszarów izolowanych, które odpowiadają domenom pochodzenia tych zasobów. Na przykład zasoby załadowane z domeny example.com będą umieszczane w innym obszarze izolowanym niż zasoby załadowane z domeny foo.org . Domyślnie pliki te mogą mieć autoryzację do odstępu do dowolnych zasobów z własnego serwera. Zdalne pliki SWF mogą mieć uprawnienia do dostępu do danych dodatkowych z innych domen za pośrednictwem jawnych uprawnień witryny i autora, takich jak pliki strategii URL oraz metoda Security.allowDomain() . Szczegółowe informacje zawarto w rozdziałach Internetowe elementy sterujące (pliki zasad) oraz Mechanizmy nadzoru programistów .

Zdalne pliki SWF nie mogą ładować ani plików ani innych zasobów lokalnych.

Więcej informacji na temat zabezpieczeń w programie Flash Player zawiera temat „Zabezpieczenia” w Centrum programistów programu Flash Player pod adresem www.adobe.com/go/devnet_security_pl .

Lokalne obszary izolowane

Plik lokalny jest to dowolny plik, do którego istnieje odwołanie za pośrednictwem protokołu file: lub ścieżki UNC (ang. Universal Naming Convention). Lokalne pliki SWF trafiają do jednego z czterech lokalnych obszarów izolowanych:

  • Obszar izolowany lokalny z systemem plików — ze względów bezpieczeństwa środowiska wykonawcze Flash Player i AIR domyślnie umieszczają wszystkie pliki lokalne w obszarze izolowanym lokalnym z systemem plików. Z tego obszaru izolowanego kod wykonywalny może odczytywać lokalne pliki (na przykład przy wykorzystaniu klasy URLLoader), nie może jednak w żaden sposób komunikować się z siecią. Zapewnia to użytkownikowi zabezpieczenie przed wyciekiem danych lokalnych do sieci lub ich udostępnieniem w inny nieodpowiedni sposób.

  • Obszar izolowany lokalny z siecią — podczas kompilacji pliku SWF można zdecydować, że powinien mieć on dostęp do sieci w przypadku uruchomienia go jako pliku lokalnego (patrz sekcja Ustawianie typu obszaru izolowanego lokalnych plików SWF ). Pliki takie trafiają do obszaru izolowanego lokalnego z siecią. Pliki SWF, które przypisano do obszaru izolowanego lokalnego z siecią, tracą swój dostęp do plików lokalnych. Zamiast tego pliki SWF mają dostęp do danych z sieci. Plik SWF lokalny z siecią nadal nie ma uprawnień do odczytu żadnych danych pochodzących z sieci, o ile uprawnienia dla takiej czynności nie zostały zapisane w pliku strategii URL lub określone przez wywołanie metody Security.allowDomain() . Aby nadać takie uprawnienie, plik strategii URL musi nadać uprawnienie do wszystkich domen za pośrednictwem opcji <allow-access-from domain="*"/> lub Security.allowDomain("*") . Więcej informacji zawierają rozdziały Internetowe elementy sterujące (pliki zasad) i Mechanizmy nadzoru programistów .

  • Lokalny zaufany obszar izolowany — lokalne pliki SWF zarejestrowane jako zaufane (przez użytkowników bądź programy instalacyjne) trafiają do lokalnego zaufanego obszaru izolowanego. Administratorzy systemu oraz użytkownicy mogą również dysponować możliwością przepisania (przeniesienia) lokalnego pliku SWF do lub z innego lokalnego zaufanego obszaru izolowanego w oparciu o kwestie zabezpieczeń (zobacz Elementy sterujące dla administratorów i Mechanizmy nadzoru użytkowników ). Pliki SWF, które przypisano do lokalnego obszaru izolowanego mogą reagować z innymi plikami SWF oraz ładować dane z dowolnej lokalizacji (lokalnej lub zdalnej).

  • Obszar izolowany aplikacji AIR — ten obszar izolowany zawiera treść zainstalowaną wraz z uruchomioną aplikacją AIR. Domyślnie kod wykonywany w obszarze izolowanym aplikacji AIR może wywoływać kod z dowolnej innej domeny. Jednak pliki spoza obszaru izolowanego aplikacji AIR nie mają uprawnień do wywoływania kodu z obszaru izolowanego aplikacji. Domyślnie kod i treść z obszaru izolowanego aplikacji AIR może ładować treść i dane z dowolnej domeny.

Komunikacja między obszarem izolowanym lokalnym z siecią a lokalnym z systemem plików, a także komunikacja między obszarem izolowanym lokalnym z systemem plików a obszarami zdalnymi jest ściśle wzbroniona. Zezwolenia na taką komunikację nie można przyznać za pośrednictwem aplikacji działającej w programie Flash Player, nie może też tego dokonać użytkownik ani administrator.

Przesyłanie skryptów w dowolnym kierunku między lokalnymi plikami HTML a lokalnymi plikami SWF — na przykład, za pośrednictwem klasy ExternalInterface — wymaga, aby zarówno plik HTML jak i plik SWF należały do obszaru izolowanego lokalnego zaufanego. Jest to spowodowane faktem, że lokalne modele zabezpieczeń dla przeglądarek różnią się od lokalnego modelu zabezpieczeń programu Flash Player.

Pliki SWF w obszarze izolowanym lokalnym z siecią nie mogą ładować plików SWF znajdujących sie w obszarze izolowanym lokalnym z systemem plików. Pliki SWF w obszarze izolowanym lokalnym z systemem plików nie mogą ładować plików SWF znajdujących sie w obszarze izolowanym lokalnym z siecią.

Obszar izolowany aplikacji AIR

W środowisku wykonawczym Adobe AIR model obszarów izolowanych programu Flash Player został uzupełniony o dodatkowy obszar izolowany, nazywany obszarem izolowanym aplikacji . Do obszaru izolowanego aplikacji ładowane są pliki zainstalowane jako część aplikacji AIR. Wszelkie inne pliki ładowane przez aplikację podlegają takim samym ograniczeniom, jakie obowiązują w zwykłym modelu zabezpieczeń programu Flash Player.

Podczas instalowania aplikacji wszystkie pliki zawarte w pakiecie AIR zostają zainstalowane na komputerze użytkownika, w katalogu aplikacji. Programiści mogą uwzględnić w kodzie odniesienie do tego katalogu za pomocą schematu adresu URL app:/ URL (zobacz Schematy URI ). Wszystkie pliki z drzewa katalogów aplikacji zostają przypisane do obszaru izolowanego aplikacji po uruchomieniu aplikacji. Treść obszaru izolowanego aplikacji ma pełne uprawnienia, jakie posiada aplikacja AIR, łącznie z możliwością oddziaływania z lokalnym systemem plików.

Podczas działania wiele aplikacji AIR korzysta tylko z tych lokalnie zainstalowanych plików. Jednak aplikacje AIR nie są ograniczone tylko do plików w katalogu aplikacji — mogą załadować dowolny typ pliku z dowolnego źródła. Łącznie z plikami lokalnymi na komputerze użytkownika, a także plikami z dostępnych źródeł zewnętrznych, np. w lokalnej sieci lub w Internecie. Typy plików nie mają wpływu na zabezpieczenia; załadowane pliki HTML mają te same uprawnienia, co załadowane pliki SWF z tego samego źródła.

Treść bezpiecznego obszaru izolowanego aplikacji ma dostęp do interfejsów API AIR, do których nie ma dostępu treść innych obszarów izolowanych. Na przykład: właściwość air.NativeApplication.nativeApplication.applicationDescriptor , która zwraca treść pliku deskryptora aplikacji dla aplikacji, ma dostęp wyłącznie do treści bezpiecznego obszaru izolowanego aplikacji. Innym przykładem interfejsu API o ograniczonych uprawnieniach jest klasa FileStream, która zawiera metody odczytu i zapisu w lokalnym systemie plików.

Elementy interfejsu API ActionScript, które są dostępne wyłącznie dla treści bezpiecznego obszaru izolowanego aplikacji, są oznaczone logo AIR w Skorowidzu języka ActionScript 3.0 dla platformy Adobe Flash . Użycie tych interfejsów API w innych bezpiecznych obszarach izolowanych powoduje wyjątek SecurityError w środowisku wykonawczym.

W przypadku treści HTML (w obiekcie HTMLLoader) wszystkie interfejsy API AIR JavaScript (dostępne za pośrednictwem właściwości window.runtime lub obiektu air podczas korzystania z pliku AIRAliases.js) są dostępne dla treści bezpiecznego obszaru izolowanego aplikacji. Treść HTML w innym obszarze izolowanym nie ma dostępu do właściwości window.runtime , dlatego ta treść nie może uzyskać dostępu do interfejsów API środowisk Flash Player i AIR.

Treść wykonywana w obszarze izolowanym aplikacji AIR podlega następującym dodatkowym ograniczeniom:

  • Dla treści HTML w bezpiecznym obszarze izolowanym aplikacji obowiązują ograniczenia dotyczące korzystania z interfejsów API, które mogą dynamicznie przekształcać ciągi znaków na kod wykonywalny — po załadowaniu kodu. Takie rozwiązanie zapobiega przypadkowemu wstrzyknięciu i wykonaniu kodu ze źródeł nieaplikacyjnych (np. potencjalnie niebezpiecznych domen sieciowych). Przykładem może być użycie funkcji eval() . Szczegółowe informacje zawiera sekcja Ograniczenia kodu dotyczące treści różnych obszarów izolowanych .

  • Aby zapobiec możliwym próbom oszukańczego pozyskania informacji poufnej, znaczniki img w treści HTML w obiektach TextField ActionScript są ignorowane w treści SWF w bezpiecznym obszarze izolowanym aplikacji.

  • Treść obszaru izolowanego aplikacji nie może korzystać z protokołu asfunction w treści HTML w polach tekstowych języka ActionScript 2.0.

  • Treść SWF w obszarze izolowanym aplikacji nie może korzystać z buforu międzydomenowego — korzystanie z tego buforu było możliwe od aktualizacji 3. programu Flash Player 9. Takie ustawienie umożliwiało programowi Flash Player trwałe zapisywanie w buforze treści składników platformy Adobe, a także ponowne używanie tej treści w załadowanej treści SWF na żądanie (co eliminuje potrzebę wielokrotnego ładowania treści).

Ograniczenia obowiązujące dla kodu JavaScript w środowisku AIR

Zawartość JavaScript w obszarze izolowanym niezwiązanym z aplikacją może — w odróżnieniu od zawartości obszaru izolowanego aplikacji — wywołać funkcję eval() w celu wykonania kodu wygenerowanego w sposób dynamiczny w dowolnej chwili. Obowiązują jednak pewne ograniczenia dotyczące wykonywania kodu JavaScript w obszarze izolowanym innym niż obszar aplikacji w środowisku AIR. Przykłady:

  • Kod JavaScript w nieaplikacyjnym obszarze izolowanym nie ma dostępu do obiektu window.runtime i dlatego kod nie może uruchamiać interfejsów API AIR.

  • Domyślnie treść nieaplikacyjnego bezpiecznego obszaru izolowanego nie może wywoływać żądań XMLHttpRequest w celu załadowania danych z domen innych niż domena wywołująca żądanie. Jednak kod aplikacji może nadawać treści nieaplikacyjnej uprawienia do wywoływania tych zadań — w tym celu ustawia atrybut allowCrossdomainXHR w ramce zawierającej lub ramce pływającej. Więcej informacji zawiera sekcja Ograniczenia kodu dotyczące treści różnych obszarów izolowanych .

  • Istnieją ograniczenia dotyczące wywoływania metody window.open() JavaScript. Szczegółowe informacje zawiera sekcja Ograniczenia dotyczące wywoływania metody window.open() JavaScript .

  • Treść HTML w zdalnych (sieciowych) obszarach izolowanych może ładować tylko treść CSS, treść frame , iframe i img z domen zdalnych (z sieciowych adresów URL).

  • Treść HTML w lokalnym obszarze izolowanym z systemem plików, lokalnym obszarze izolowanym z obsługą sieci lub lokalnym zaufanym obszarze izolowanym może ładować tylko treść CSS, treść frame , iframe i img z lokalnych obszarów izolowanych (nie z aplikacji ani sieciowych adresów URL).

Szczegółowe informacje zawiera sekcja Ograniczenia kodu dotyczące treści różnych obszarów izolowanych .

Ustawianie typu obszaru izolowanego lokalnych plików SWF

Użytkownik końcowy lub administrator komputera może zdefiniować lokalny plik SWF jak zaufany, zezwalając mu na ładowanie danych ze wszystkich domen, zarówno lokalnych jak i sieciowych. Ustawień tych można dokonać w katalogach Global Flash Player Trust i User Flash Player Trust. Więcej informacji zawarto w rozdziałach Elementy sterujące dla administratorów i Mechanizmy nadzoru użytkowników .

Więcej informacji na temat lokalnych obszarów izolowanych zawiera sekcja Lokalne obszary izolowane .

Adobe Flash Professional

Możliwe jest skonfigurowanie pliku SWF dla obszaru izolowanego lokalnego z systemem plików przez ustawienie opcji publikowania dokumentu w narzędziu do tworzenia treści.

Adobe Flex

Możliwe jest skonfigurowanie pliku SWF dla obszaru izolowanego lokalnego z systemem plików przez ustawienie flagi use-network w kompilatorze Adobe Flex. Więcej informacji zawiera sekcja „About the application compiler options” w podręczniku Building and Deploying Adobe Flex 3 Applications .

Właściwość Security.sandboxType

Autor pliku SWF może użyć statycznej właściwości tylko do odczytu Security.sandboxType do określenia typu obszaru izolowanego, do którego środowisko Flash Player lub AIR przypisało plik SWF. Klasa Security obejmuje stałe reprezentujące możliwe wartości właściwości Security.sandboxType , jak poniżej:

  • Security.REMOTE — plik pochodzi z internetowego adresu URL i jest kontrolowany przez reguły domenowe obszaru izolowanego.

  • Security.LOCAL_WITH_FILE — Plik SWF jest plikiem lokalnym, lecz nie został zaakceptowany przez użytkownika jako plik zaufany i nie został opublikowany z oznaczeniem sieciowym. Plik SWF może odczytywać lokalne źródła danych, ale nie może komunikować się z Internetem.

  • Security.LOCAL_WITH_NETWORK — plik SWF jest plikiem lokalnym, lecz nie został zaakceptowany przez użytkownika jako plik zaufany, ale został opublikowany z oznaczeniem sieciowym. Plik SWF może komunikować się z Internetem, ale nie może czytać z lokalnych źródeł danych.

  • Security.LOCAL_TRUSTED — plik SWF jest plikiem lokalnym, a użytkownik nadał mu status pliku zaufanego za pośrednictwem Menedżera ustawień lub pliku konfiguracji statusu zaufanego programu Flash Player. Plik SWF może odczytywać lokalne źródła danych i może komunikować się z Internetem.

  • Security.APPLICATION — plik SWF działa w aplikacji AIR i został zainstalowany z pakietem (plik AIR) dla tej aplikacji. Domyślnie pliki w obszarze izolowanym aplikacji AIR mogą wymieniać skrypty z dowolnym innym plikiem z dowolnej domeny. Pliki spoza obszaru izolowanego aplikacji AIR nie mają uprawnień do wywoływania skryptu w pliku AIR. Domyślnie pliki z obszaru izolowanego aplikacji AIR mogą ładować zawartość i dane z dowolnej domeny.