Jednym z głównych założeń modelu zabezpieczeń używanego w środowiskach wykonawczych Flash Player i AIR jest kontrola domeny, z której pochodzą ładowane pliki SWF, HTML, multimedia i inne zasoby. Kod wykonywalny z określonej domeny internetowej, taki jak www.example.com, może zawsze uzyskiwać dostęp do wszystkich danych z tej domeny. Zasoby te są odpowiednio grupowane w
obszary izolowane zabezpieczeń
. (Więcej informacji zawiera sekcja
Obszary izolowane
).
Na przykład kod ActionScript w pliku SWF może ładować plik SWF, bitmapy, pliki audio, pliki tekstowe oraz wiele innych zasobów z własnej domeny. Ponadto dozwolone są zawsze odwołania do skryptów między dwoma plikami z tej samej domeny, pod warunkiem że oba pliki napisano w języku ActionScript 3.0.
Wywoływanie skryptu
jest to możliwość uzyskiwania przez jeden plik dostępu do właściwości, metod i obiektów w innym pliku.
Wywoływanie skryptu nie jest obsługiwane między plikami SWF: napisanym w języku ActionScript 3.0 oraz napisanym w poprzedniej wersji ActionScript; pliki te mogą się jednak ze sobą komunikować za pośrednictwem klasy LocalConnection. Ponadto możliwość odwoływania się do skryptu przez plik SWF ActionScript 3.0 z innej domeny oraz ładowania danych z innej domeny jest domyślnie wzbroniona; dostęp taki może zostać przyznany po wywołaniu metody
Security.allowDomain()
w załadowanym pliku SWF. Więcej informacji zawiera sekcja
Odwołania do skryptów między domenami
.
Domyślnie maja zastosowanie następujące podstawowe reguły zabezpieczeń:
-
Zasoby z tego samego obszaru izolowanego zabezpieczeń maja zawsze dostęp do siebie nawzajem.
-
Kod wykonywalny w plikach w zdalnym obszarze izolowanym zabezpieczeń nie może nigdy uzyskać dostępu do lokalnych plików ani danych.
Środowiska wykonawcze Flash Player i AIR traktują poniższe adresy jak odrębne domeny i dla każdej z nich tworzą odrębny obszar izolowany:
-
http://example.com
-
http://www.example.com
-
http://store.example.com
-
https://www.example.com
-
http://192.0.34.166
Mimo, że domena z nazwą, np. http://example.com, odwzorowuje na określony adres IP, taki jak http://192.0.34.166, środowisko wykonawcze ustawia dla każdego z tych adresów osobny obszar izolowany zabezpieczeń.
Istnieją dwie podstawowe metody, których może użyć deweloper w celu przyznania plikowi SWF dostępu do zasobów z obszarów izolowanych innych niż ten z pliku SWF:
Modele zabezpieczeń środowisk wykonawczych Flash Player i AIR zakładają rozróżnienie między ładowaniem treści oraz wyodrębnianiem lub uzyskiwaniem dostępu do danych.
Treść
jest definiowana jako multimedia, w tym multimedia wizualne wyświetlane przez środowisko wykonawcze, albo pliki audio, wideo, czy SWF zawierające wyświetlane multimedia.
Dane
są definiowane jako informacje, do których dostęp można uzyskać wyłącznie za pośrednictwem kodu. Wczytywanie zawartości i danych jest realizowane na różne sposoby.
-
Ładowanie treści — treść można ładować za pomocą takich klas, jak Loader, Sound i NetStream; przy użyciu znaczników MXML w aplikacji Flex; a także przy użyciu znaczników HTML w aplikacji AIR.
-
Wyodrębnianie danych. Do wyodrębniania danych z wczytanej zawartości multimedialnej służą obiekty Bitmap, metody
BitmapData.draw()
i
BitmapData.drawWithQuality()
, właściwość
Sound.id3
oraz metoda
SoundMixer.computeSpectrum()
. Metoda
drawWithQuality
jest dostępna w programie Flash Player 11.3 lub nowszym oraz środowisku AIR 3.3 lub nowszym.
-
Uzyskiwanie dostępu — możliwe jest uzyskiwanie dostępu do danych bezpośrednio przez załadowanie ich z pliku zewnętrznego (takiego jak plik XML) za pośrednictwem takich klas, jak URLStream, URLLoader, FileReference, Socket i XMLSocket. Środowisko AIR udostępnia dodatkowe klasy służące do ładowania danych, takie jak FileStream i XMLHttpRequest.
Model zabezpieczeń Flash Player definiuje różne reguły dla ładowania treści oraz uzyskiwania dostępu do danych. W ogólnym przypadku ładowania treści dotyczy mniej ograniczeń, niż uzyskiwania dostępu do danych.
W ogólnym przypadku treść (pliki SWF, bitmapy, pliki mp3 oraz wideo) mogą być ładowane z dowolnego miejsca, lecz jeśli ich treść pochodzi z domeny innej niż domena ładowania kodu lub treści, zostanie ona przydzielona do osobnego obszaru izolowanego.
Istnieje kilka barier związanych z ładowaniem treści:
-
Domyślnie lokalne pliki SWF (ładowane z adresu poza siecią, np. dysku twardego użytkownika) są zaklasyfikowane do obszaru izolowanego lokalnego z systemem plików. Pliki te nie mogą ładować treści pochodzących z sieci. Więcej informacji zawiera sekcja
Lokalne obszary izolowane
.
-
Serwery RTMP (ang. Real-Time Messaging Protocol) mogą ograniczyć dostęp do treści. Więcej informacji zawiera sekcja
Zawartość dostarczana przy użyciu serwerów RTMP
.
Jeśli załadowane multimedia to obrazy, audio, wideo, dostęp do ich danych, np. danych pikseli czy dźwięku, można uzyskiwać za pośrednictwem pliku SWF spoza obszaru izolowanego tylko, jeśli domena tego pliku SWF została objęta plikiem strategii URL w domenie pochodzenia danych multimediów. Szczegółowe informacje zawiera sekcja
Załadowane multimedia jako dane
.
Inne postacie ładowanych danych to pliki tekstowe lub XML, ładowane za pośrednictwem obiektu URLLoader. Również w tym przypadku uzyskanie dostępu do jakichkolwiek danych z innego obszaru izolowanego zabezpieczeń wymaga przyznania dostępu przez plik strategii URL w domenie pochodzenia. Szczegółowe informacje zawiera sekcja
Korzystanie z klas URLLoader i URLStream
.
Uwaga:
Plik strategii nie są nigdy wymagane do ładowania zdalnych treści lub danych przez kod wykonywany w obszarze izolowanym aplikacji AIR.