Mechanizmy sterowania uprawnieniami

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

Model zabezpieczeń w czasie wykonywania klienta Flash Player opracowano, bazując na zasobach, które są obiektami takimi jak pliki SWF, dane lokalne czy adresy URL. Interesariusze są to posiadacze lub użytkownicy tych zasobów. Interesariusze mogą uzyskiwać kontrolę (za pośrednictwem ustawień zabezpieczeń) nad swoimi zasobami. Każdy zasób ma czterech interesariuszy. Program Flash Player wymusza ścisłe zachowanie hierarchii uprawnień dla tych elementów, zgodnie z poniższą ilustracją:

Hierarchia uprawnień
Hierarchia elementów sterujących zabezpieczeń

Oznacza to, na przykład, że ograniczenie dostępu do zasobu przez administratora powoduje, że ograniczenia tego nie może zmienić żadne z pozostałych interesariuszy.

W przypadku aplikacji AIR te ograniczenia mają zastosowanie tylko do treści działającej poza obszarem izolowanym aplikacji AIR.

Elementy sterujące dla administratorów

Użytkownik z uprawnieniami administratora (logujący się jako administrator) może zastosować ustawienia zabezpieczeń programu Flash Player wpływające na wszystkich użytkowników komputera. Poza organizacją, w środowisku domowym zwykle istnieje tylko jeden użytkownik i ma on wówczas uprawnienia administratora. Jednak w organizacji również poszczególni użytkownicy mogą dysponować uprawnieniami administratora.

Istnieją dwa typy mechanizmów nadzoru administratorów:

  • Plik mms.cfg

  • Katalog Global Flash Player Trust

Plik mms.cfg

Plik mms.cfg jest plikiem tekstowym umożliwiającym administratorom włączenie lub ograniczenie dostępu do szeregu funkcji. Przy uruchomieniu program Flash Player odczytuje swoje ustawienia zabezpieczeń z tego pliku i stosownie do nich ogranicza swoją funkcjonalność. Plik mms.cfg zawiera ustawienia, z których korzysta administrator w celu zarządzania opcjami, takimi jak ustawienia prywatności, zabezpieczenia pliku lokalnego, połączenia przez gniazda itp.

Plik SWF może uzyskiwać dostęp do niektórych informacji o możliwościach, które zostały wyłączone, przez wywołanie właściwości Capabilities.avHardwareDisable i Capabilities.localFileReadDisable. O większość z ustawień w pliku mms.cfg nie można jednak zapytać z poziomu języka ActionScript.

W celu wymuszenia dla komputera zabezpieczeń oraz strategii prywatności niezależnych od aplikacji należy dokonać modyfikacji w pliku mms.cfg — powinni to robić jednak wyłącznie administratorzy systemu. Plik mms.cfg nie jest plikiem przeznaczonym do użytku przez programy instalacyjne. Mimo że program instalacyjny uruchomiony z uprawnieniami administracyjnymi mógłby modyfikować treść pliku mms.cfg, firma Adobe uważa takie działanie za naruszenie zasad zaufania użytkownika, i wzywa twórców programów instalacyjnych do powstrzymania się od modyfikowania pliku mms.cfg za pośrednictwem tych programów.

Plik mms.cfg jest przechowywany w następującej lokalizacji:

  • Windows: system\Macromed\Flash\mms.cfg

    (na przykład C:\WINDOWS\system32\Macromed\Flash\mms.cfg)

  • Macintosh: app support/Macromedia/mms.cfg

    (na przykład /Library/Application Support/Macromedia/mms.cfg)

Więcej informacji na temat pliku mms.cfg zawiera przewodnik Flash Player Administration Guide pod adresem www.adobe.com/go/flash_player_admin_pl.

Katalog Global Flash Player Trust

Użytkownicy z uprawnieniami administracyjnymi, a także programy instalacyjne mogą zarejestrować określone lokalne pliki SWF jako zaufane dla wszystkich użytkowników. Te pliki SWF są przypisywane do obszaru izolowanego lokalnego zaufanego. Możliwe są ich interakcje z innymi plikami SWF, a ponadto mogą one ładować dane z dowolnej lokalizacji (lokalnej lub zdalnej). Pliki są oznaczane jako zaufane w katalogu Global Flash Player Trust, w następującej lokalizacji:

  • Windows: system\Macromed\Flash\FlashPlayerTrust

    (na przykład C:\WINDOWS\system32\Macromed\Flash\FlashPlayerTrust)

  • Macintosh: app support/Macromedia/FlashPlayerTrust

    (na przykład /Library/Application Support/Macromedia/FlashPlayerTrust)

Katalog Flash Player Trust może zawierać dowolną liczbę plików tekstowych, z których każdy zawiera listę zaufanych ścieżek, po jednej na wiersz. Każda ścieżka może być osobnym plikiem SWF, HTML lub katalogiem. Wiersze komentarzy rozpoczynają się od symbolu #. Na przykład plik konfiguracji statusu zaufania programu Flash Player zawierający poniższy tekst przyznaje status zaufanego wszystkim plikom w podanym katalogu oraz jego podkatalogach:

# Trust files in the following directories: 
C:\Documents and Settings\All Users\Documents\SampleApp

Ścieżki wymienione w pliku konfiguracji statusu zaufania powinny zawsze być ścieżkami lokalnymi lub ścieżkami sieciowymi SMB. Wszelkie ścieżki HTTP w pliku konfiguracji statusu zaufania są ignorowane; plikami zaufanymi mogą być wyłącznie pliki lokalne.

Aby uniknąć konfliktów, należy nadać każdemu zaufanemu plikowi konfiguracji nazwę pliku odpowiadającą programowi instalacyjnemu i użyć rozszerzenia .cfg.

Programista dystrybuujący lokalnie uruchamiany plik SWF za pośrednictwem programu instalacyjnego może również dodać plik konfiguracji do katalogu Global Flash Player Trust, przyznając pełny zakres uprawnień do dystrybuowanego pliku. Program instalacyjny musi być uruchamiany przez użytkownika z uprawnieniami administratora. Inaczej niż w przypadku pliku mms.cfg, katalog Global Flash Player Trust jest dołączany na użytek programów instalacyjnych przyznających status zaufany. Zarówno użytkownicy z uprawnieniami administracyjnymi jak i programy instalacyjne mogą wyznaczać zaufane aplikacje lokalne za pośrednictwem katalogu Global Flash Player Trust.

Ponadto dostępne są również katalogi Flash Player Trust dla poszczególnych użytkowników (patrz sekcja Mechanizmy nadzoru użytkowników).

Mechanizmy nadzoru użytkowników

Program Flash Player udostępnia trzy różne mechanizmy umożliwiające ustawienie uprawnień na poziomie użytkownika: Settings UI oraz Settings Manager, a także katalog User Flash Player Trust.

Settings UI i Settings Manager

Interfejs Settings UI to szybko działający, interaktywny mechanizm przeznaczony do konfigurowania ustawień dla określonych domen. Menedżer Settings Manager udostępnia bardziej szczegółowy interfejs i umożliwia wykonywanie zmian globalnych, które wpływają na wiele domen lub wszystkie domeny. Ponadto w przypadku żądania nowych uprawnień przez plik SWF, w przypadku których wymagane są decyzje dotyczące bezpieczeństwa lub prywatności podejmowane w środowisku wykonawczym, wyświetlane są okna dialogowe, w których użytkownicy mogą dostosowywać niektóre ustawienia programu Flash Player.

Menedżer ustawień oraz interfejs użytkownika ustawień udostępniają opcje dotyczące zabezpieczeń, takie jak ustawienia kamery i mikrofonu, ustawienia magazynu obiektów udostępnionych oraz ustawienia dotyczące starej zawartości. Menedżer Settings Manager i interfejs Settings UI nie są dostępne dla aplikacji AIR.

Uwaga: Ustawienia określone w pliku mms.cfg (patrzElementy sterujące dla administratorów) nie są uwzględniane w menedżerze Settings Manager.

Szczegółowe informacje na temat menedżera Settings Manager są dostępne na stronie www.adobe.com/go/settingsmanager_pl.

Katalog User Flash Player Trust

Użytkownicy, a także programy instalacyjne mogą zarejestrować określone lokalne pliki SWF jako zaufane. Te pliki SWF są przypisywane do lokalnego obszaru izolowanego zaufanego. Możliwe są ich interakcje z innymi plikami SWF, a ponadto mogą one ładować dane z dowolnej lokalizacji (lokalnej lub zdalnej). Użytkownik oznacza plik jako zaufany w katalogu User Player Trust, który jest w tym samym katalogu co obszar przechowywania obiektów współużytkowanych Flash, w następujących lokalizacjach (lokalizacje odpowiadają bieżącym użytkownikom):

  • Windows: app data\Macromedia\Flash Player\#Security\FlashPlayerTrust

    (na przykład C:\Documents and Settings\JohnD\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust w systemie Windows XP lub C:\Users\JohnD\AppData\Roaming\Macromedia\Flash Player\#Security\FlashPlayerTrust w systemie Windows Vista)

    W systemie Windows folder Dane aplikacji jest domyślnie ukryty. Aby pokazać ukryte pliki i foldery, wybierz ikonę Mój komputer, aby otworzyć Eksploratora Windows, wybierz polecenie Narzędzia > Opcje folderów, a następnie wybierz kartę Widok. Na karcie Widok zaznacz pole wyboru Pokaż ukryte pliki i foldery.

  • Macintosh: app data/Macromedia/Flash Player/#Security/FlashPlayerTrust

    (na przykład /Users/JohnD/Library/Preferences/Macromedia/Flash Player/#Security/FlashPlayerTrust)

    Ustawienia te mają wpływ wyłącznie na konfigurację bieżącego użytkownika i nie obejmują innych użytkowników logujących się na tym komputerze. W przypadku, gdy użytkownik bez uprawnień administracyjnych zainstaluje aplikację w swojej części systemu, katalog User Flash Player Trust zezwala programowi instalacyjnemu zarejestrować tę aplikację jako zaufaną dla tego użytkownika.

    Programista dystrybuujący lokalnie uruchamiany plik SWF za pośrednictwem programu instalacyjnego może również dodać plik konfiguracji do katalogu User Flash Player Trust, przyznając pełny zakres uprawnień do dystrybuowanego pliku. Nawet w takiej sytuacji plik katalogu User Flash Player Trust jest uznawany za będący pod kontrolą użytkownika, ponieważ za jego zainicjowanie (instalację) odpowiada użytkownik.

    Ponadto istnieje katalog Global Flash Player Trust, używany przez użytkowników z uprawnieniami administracyjnymi lub programy instalacyjne do rejestrowania aplikacji dla wszystkich użytkowników danego komputera (patrz Elementy sterujące dla administratorów).

Internetowe elementy sterujące (pliki zasad)

W celu udostępnienia danych z serwera sieci Web plikom SWF z innych domen możliwe jest utworzenie na serwerze pliku strategii. Plik strategii jest plikiem XML umieszczonym w określonej lokalizacji na serwerze.

Pliki strategii mają wpływ na uprawnienia dostępu do szeregu zasobów, w tym do:

  • Danych w bitmapach, dźwiękach i obrazach wideo

  • Ładowania plików XML i plików tekstowych

  • Importowania plików SWF z innych domen zabezpieczeń do domeny zabezpieczeń ładowanego pliku SWF

  • Uzyskiwania dostępu do gniazda oraz połączeń gniazda XML

Obiekty ActionScript tworzą instancje dwu różnych rodzajów połączeń z serwerem: połączeń w oparciu o dokument oraz połączeń z gniazdem. Obiekty ActionScript takie jak Loader, Sound, URLLoader, czy URLStream tworzą instancje połączeń z serwerem bazujących na dokumentach, a te z kolei ładują plik z adresu URL. Obiekty Socket i XMLSocket języka ActionScript nawiązują połączenia z gniazdem, które operuje na danych przesyłanych strumieniowo, nie zaś na ładowanych dokumentach.

Ponieważ program Flash Player obsługuje dwa rodzaje połączeń z serwerem, istnieją dwa typy plików strategii — pliki strategii URL oraz pliki strategii gniazd.
  • Połączenia w oparciu o dokument wymagają plików strategii URL. Pliki te umożliwiają serwerowi określenie, że wszystkie jego dane i dokumenty są udostępnione dla plików SWF z konkretnych lub ze wszystkich domen.

  • Połączenia oparte na gnieździe wymaga pliku strategii gniazda, która umożliwia nawiązywanie połączeń sieciowych na niższym poziomie gniazda TCP, za pośrednictwem klas Socket i XMLSocket.

Program Flash Player wymaga, aby pliki strategii były przesyłane za pośrednictwem protokołu proponowanego przez połączenie, które próbowano nawiązać. Na przykład w przypadku umieszczenia pliku strategii na serwerze HTTP pliki SWF z innych domen mogą ładować z nich dane tak, jak z serwera HTTP. Jeśli plik zasad gniazd nie zostanie udostępniony na tym samym serwerze, będzie to równoznaczne z zakazaniem plikom SWF z innych domen nawiązywania połączeń z serwerem na poziomie gniazd. Innymi słowy, sposób pobierania pliku strategii musi odpowiadać sposobowi łączenia.

Użycie i składnię pliku strategii omówiono pokrótce dalej w tej sekcji, jako że odnoszą się one do plików SWF opublikowanych dla programu Flash Player 10. (Implementacja pliku strategii jest nieco inna we wcześniejszych wersjach programu Flash Player, gdyż w miarę kolejnych wersji programu Flash Player zwiększano poziom zabezpieczeń). Więcej informacji na temat plików strategii zawiera temat „Policy File Changes in Flash Player 9” w centrum Flash Player Developer Center pod adresem www.adobe.com/go/devnet_security_pl.

Kod wykonywany w obszarze izolowanym aplikacji AIR może uzyskiwać dostęp do danych z adresu URL lub gniazda bez konieczności stosowania pliku strategii. Jednak kod w aplikacji AIR, który wykonywany jest poza obszarem izolowanym aplikacji, wymaga pliku strategii.

Nadrzędne pliki zasad

Domyślnie program Flash Player (i treść AIR, która nie znajduje się w obszarze izolowanym aplikacji AIR) najpierw wyszukuje plik strategii URL o nazwie crossdomain.xml w katalogu głównym serwera, a następnie poszukuje pliku strategii gniazda na porcie 843. Plik, niezależnie od tego, w której z wymienionych lokalizacji się znajduje, jest nazywany nadrzędnym plikiem strategii. (W przypadku połączeń z gniazdem program Flash Player poszukuje również pliku strategii gniazda w tym samym porcie, co dla połączenia głównego. Plik strategii znaleziony w tym porcie nie jest jednak uważany za nadrzędny plik strategii).

Poza określeniem uprawnień dostępu nadrzędny plik strategii może również zawierać instrukcję strategii meta. Instrukcja ta określa, w jakich lokalizacjach należy szukać plików strategii. Domyślną instrukcją meta-policy dla plików strategii URL jest wartość „master-only”, oznaczająca, że jedynym dopuszczalnym plikiem strategii na serwerze jest /crossdomain.xml. Domyślna instrukcja meta-policy dla plików strategii gniazda to „all”, co oznacza, że każde gniazdo na hoście może stanowić plik strategii gniazda.

Uwaga: W programie Flash Player 9 i wcześniejszych wersjach domyślna instrukcja meta-policy dla plików strategii URL brzmiała „all”, co oznacza, że każdy (dowolny) katalog może zawierać plik strategii. W przypadku, jeśli wdrożono aplikacje ładujące pliki strategii z lokalizacji innych niż domyślny plik /crossdomain.xml, i aplikacje te mogą teraz działać w programie Flash Player 10, należy upewnić się, że zmodyfikowano nadrzędny plik strategii tak, aby zezwalał on na dodawanie dodatkowych plików strategii. Modyfikacji może dokonać administrator serwera. Więcej informacji na temat określania różnych instrukcji meta-policy zawiera temat „Policy File Changes in Flash Player 9” w centrum Flash Player Developer Center pod adresem www.adobe.com/go/devnet_security_pl.

Plik SWF może sprawdzać, czy istnieje inna nazwa pliku lub plik znajduje się w innym katalogu, przez wywołanie metody Security.loadPolicyFile(). Jeśli jedna nadrzędny plik strategii nie zezwala, aby lokalizacja docelowa była miejscem lokalizacji plików strategii, wywołanie metody loadPolicyFile() nie odniesie skutku, nawet jeśli we wskazanej lokalizacji znajduje się faktycznie plik strategii. Wywołanie metody loadPolicyFile() powinno mieć miejsce przed podjęciem próby wykonania operacji sieciowych wymagających pliku strategii. Program Flash Player automatycznie kolejkuje żądania sieciowe za odpowiadającymi im próbami odnalezienia plików strategii. Dlatego na przykład dopuszczalne jest wywołanie metody Security.loadPolicyFile() tuż przed inicjacją operacji sieciowej.

Poszukując nadrzędnego pliku strategii, program Flash Player czeka trzy sekundy na odpowiedź serwera. Jeśli nie otrzyma odpowiedzi, zakłada, że nadrzędny plik strategii nie istnieje. Nie istnieje jednak żadna domyślna wartość limitu czasu dla wywołania metody loadPolicyFile(); program Flash Player zakłada, że wywoływany plik istnieje, i oczekuje tak długo, jak to tylko potrzebne, w celu jego załadowania. Stąd, aby upewnić się, że nadrzędny plik strategii został załadowany, należy użyć metody loadPolicyFile() w celu wywołania go w sposób jawny.

Mimo, ze metoda ma nazwę Security.loadPolicyFile(), plik strategii nie zostanie załadowany, dopóki nie pojawi się wywołanie sieciowe wymagające pliku strategii. Wywołanie metody loadPolicyFile() powoduje po prostu przekazanie do programu Flash Player informacji o lokalizacji, w której ma on w razie potrzeby szukać plików strategii.

Nie jest możliwe odebranie powiadomienia o zainicjowaniu lub ukończeniu żądania pliku strategii, nie ma zresztą takiej potrzeby. Program Flash Player poszukuje pliku strategii asynchronicznie i automatycznie oczekuje na inicjację połączeń do chwili, gdy poszukiwanie pliku strategii zakończy się powodzeniem.

W poniższych sekcjach zawarto informacje dotyczące wyłącznie plików strategii URL. Więcej informacji na temat plików strategii gniazda zawiera sekcja Nawiązywanie połączeń z gniazdami.

Zakres pliku strategii URL

Plik strategii URL dotyczy wyłącznie katalogu, z którego dane są ładowane, oraz katalogów podrzędnych. Plik strategii w katalogu głównym dotyczy całego serwera; plik strategii ładowany z dowolnego podkatalogu dotyczy wyłącznie tego katalogu oraz jego podkatalogów.

Plik strategii ma wpływ na dostęp wyłącznie do serwera, na którym rezyduje. Na przykład plik strategii zlokalizowany pod adresem https://www.adobe.com:8080/crossdomain.xml dotyczy tylko wywołań ładowania danych wykonanych dla adresu www.adobe.com za pośrednictwem protokołu HTTPS przez port 8080.

Określanie uprawnień dostępu w pliku strategii URL

Plik strategii zawiera pojedynczy znacznik <cross-domain-policy>, który z kolei zawiera zero lub więcej znaczników <allow-access-from>. Każdy znacznik <allow-access-from> zawiera atrybut domain, który określa albo dokładny adres IP, albo dokładną domenę, albo domenę wieloznaczną (dowolną domenę). Domeny wieloznaczne są oznaczane na dwa sposoby:
  • Pojedynczym symbolem gwiazdki (*), który odpowiada wszystkim domenom oraz wszystkim adresom IP

  • Symbolem gwiazdki oraz przyrostkiem który odpowiada tylko tym domenom, które kończą się określonym przyrostkiem

Przyrostki muszą rozpoczynać się od kropki. Domeny wieloznaczne z przyrostkami mogą jednak odpowiadać domenom składającym się wyłącznie z przyrostka, bez kropki wiodącej. Na przykład xyz.com może być fragmentem domeny *.xyz.com. Nie dopuszcza się znaków wieloznacznych w specyfikacjach domeny IP.

Poniższy przykład ilustruje plik strategii URL oferujący dostęp do plików SWF pochodzących z adresu *.example.com, www.friendOfExample.com oraz 192.0.34.166:

<?xml version="1.0"?> 
<cross-domain-policy> 
    <allow-access-from domain="*.example.com" /> 
    <allow-access-from domain="www.friendOfExample.com" /> 
    <allow-access-from domain="192.0.34.166" /> 
</cross-domain-policy>

Określając adres IP, można nadać dostęp wyłącznie do plików SWF ładowanych z tego adresu IP z wykorzystaniem składni (na przykład http://65.57.83.12/flashmovie.swf). Dostęp nie jest przyznawany dla plików SWF korzystających ze składni domena-nazwa. Program Flash Player nie rozpoznaje adresów DNS.

Możliwe jest zatem przyznanie dostępu do dokumentów pochodzących z dowolnej domeny, zgodnie z poniższym przykładem:

<?xml version="1.0"?> 
<!-- http://www.foo.com/crossdomain.xml --> 
<cross-domain-policy> 
<allow-access-from domain="*" /> 
</cross-domain-policy>

Każdy znacznik <allow-access-from> ma również atrybut opcjonalny secure, który ma domyślnie wartość true. Jeśli plik strategii znajduje się na serwerze HTTPS, to w przypadku zamiaru zezwolenia na ładowanie przez pliki SWF na serwerze niekorzystającym z protokołu HTTPS danych z serwera HTTPS można ustawić ten atrybut na wartość false.

Ustawienie atrybutu secure na wartość false może obniżyć poziom bezpieczeństwa oferowany przez protokół HTTPS. W szczególności, ustawienie tego atrybutu na wartość false spowoduje wystawienie treści zabezpieczanej na ataki polegające na „podsłuchiwaniu” i „podszywaniu się”. Firma Adobe zdecydowanie odradza ustawianie atrybutu secure na wartość false.

Jeśli dane do załadowania znajdują się na serwerze HTTPS, lecz ładujący plik SWF znajduje się na serwerze HTTP, firma Adobe zaleca przeniesienie ładującego pliku SWF na serwer HTTPS. Pozwoli to objąć wszystkie kopie zabezpieczanych danych ochroną protokołu HTTPS. Jeśli jednak zostanie podjęta decyzja o konieczności pozostawienia ładujące pliku SWF na serwerze HTTP, należy wówczas dodać atrybut secure="false" do znacznika <allow-access-from>, zgodnie z informacją w poniższym kodzie:

<allow-access-from domain="www.example.com" secure="false" /> 
Kolejnym elementem, którego należy użyć w celu zyskania dostępu, jest znacznik allow-http-request-headers-from. Element ten przydziela klientowi treść obsługiwaną w innej domenie z uprawnieniami do wysyłania zdefiniowanych przez użytkownika nagłówków do domeny. Podczas gdy znacznik <allow-access-from> przydziela innym domenom uprawnienie do pobrania danych z domeny użytkownika, znacznik allow-http-request-headers-from przydziela pozostałym domenom uprawnienie do przekazania danych do domeny użytkownika w postaci nagłówków. W poniższym przykładzie dopuszczalne jest wysłanie przez dowolną domenę nagłówka SOAPAction do domeny bieżącej:
<cross-domain-policy> 
    <allow-http-request-headers-from domain="*" headers="SOAPAction"/> 
</cross-domain-policy>

Jeśli instrukcja allow-http-request-headers-from znajduje się w nadrzędnym pliku strategii, dotyczy ona wszystkich katalogów na hoście. W przeciwnym wypadku dotyczy ona wyłącznie katalogu pliku strategii zawierającego instrukcję oraz jego podkatalogów.

Wstępne ładowanie plików strategii

Ładowanie danych z serwera lub podłączanie do gniazda jest operacją asynchroniczną. Program Flash Player po prostu oczekuje, aż pobieranie pliku strategii zostanie zakończone, zanim rozpocznie operację główną. Wyodrębnianie danych pikseli z obrazów lub wyodrębnianie danych przykładowych z dźwięków jest operacją synchroniczną. Plik strategii musi zostać załadowany, aby możliwe było wyodrębnianie danych. Ładując multimedia, należy określić, że mają one poszukiwać pliku strategii:

  • Korzystając z metody Loader.load(), należy ustawić właściwość checkPolicyFile parametru context, który jest obiektem LoaderContext.

  • Osądzając obraz w polu tekstowym za pomocą znacznika <img>, należy ustawić atrybut checkPolicyFile znacznika <img> na wartość "true", zgodnie z poniższym przykładem:

    <img checkPolicyFile = "true" src = "example.jpg">
  • Korzystając z metody Sound.load(), należy ustawić właściwość checkPolicyFile parametru context, który jest obiektem SoundLoaderContext.

  • Korzystając z klasy NetStream, należy ustawić właściwość checkPolicyFile obiektu NetStream.

Ustawienie dowolnego z tych parametrów powoduje, że program Flash Player najpierw poszukuje dowolnego pliku strategii już pobranego z tej domeny. Następnie szuka on pliku strategii w lokalizacji domyślnej na serwerze, sprawdzając zarówno w poszukiwaniu instrukcji <allow-access-from> jak i obecności instrukcji meta-policy. Ostatecznie analizuje on wszystkie oczekujące wywołania metody Security.loadPolicyFile(), sprawdzając, czy należą one do właściwego zakresu.

Mechanizmy nadzoru programistów

Główny interfejs API w języku ActionScript użyty to przyznawania uprawnień bezpieczeństwa to metoda Security.allowDomain(), która przydziela uprawnienia do plików SWF w domenach określonych przez programistę. W poniższym przykładzie plik SWF przydziela dostęp do plików SWF pochodzących z domeny www.example.com:

Security.allowDomain("www.example.com")

Metoda ta powoduje przydzielenie następujących uprawnień:

Głównym celem wywołania metody Security.allowDomain() jest przyznanie uprawnień plikom SWF spoza domeny do wymiany skryptu pliku SWF wywołującego metodę Security.allowDomain(). Więcej informacji zawiera sekcja Odwołania do skryptów między domenami.

Określenie adresu IP w postaci parametru dla metody Security.allowDomain() nie umożliwia dostępu wszystkim elementom wywodzącym się z określonego adresu IP. Zamiast tego przyznaje ono dostęp tylko do części, która zawiera określony adres IP w postaci URL, a nie nazwy domeny odwzorowującej na ten adres IP. Na przykład, jeśli nazwa domeny www.example.com odwzorowuje na adres IP 192.0.34.166, wywołanie metody Security.allowDomain("192.0.34.166") nie powoduje przyznania dostępu do domeny www.example.com.

Aby przyznać dostęp dla wszystkich domen, można przekazać znak wieloznaczny "*" do metody Security.allowDomain(). Ponieważ przyznaje ona plikom SWF uprawnienia do wymiany skryptów z wszystkich domen przez wywołanie pliku SWF, znaku wieloznacznego "*" należy używać ostrożnością.

Język ActionScript zapewnia też drugi interfejs API umożliwiający udostępnianie pod nazwą Security.allowInsecureDomain(). Efekt działania tej metody jest podobny, co metody Security.allowDomain(), z wyjątkiem tego, że wywołanie z pliku SWF wywodzącego się z bezpiecznego połączenia HTTPS pozwala dodatkowo uzyskać dostęp do wywołującego pliku SWF za pośrednictwem innych plików SWF z protokołu niezabezpieczonego, takiego jak HTTP. Nie jest jednak dobrą praktyką zezwalanie na wywoływanie skryptów między plikami z protokołu bezpiecznego (HTTPS) a plikami z protokołów niezabezpieczonych (takich jak HTTP); może to wystawić zabezpieczone treści na ataki polegające na „podsłuchiwaniu” i „podszywaniu się”. Oto, jak mogą wyglądać takie ataki: ponieważ metoda Security.allowInsecureDomain() umożliwia dostęp do bezpiecznych danych HTTPS za pośrednictwem plików SWF przesyłanych protokołem HTTP, atakujący znajdujący się między serwerem HTTP programisty a jego użytkownikami może wymienić plik SWF HTTP na swój, który może następnie uzyskać dostęp do danych HTTPS programisty.

Ważne: Kod wykonywany w obszarze izolowanym aplikacji AIR nie ma uprawnień do wywoływania metod allowDomain() i allowInsecureDomain() klasy Security.

Inną ważną metodą związaną z kwestiami bezpieczeństwa jest metoda Security.loadPolicyFile(), która powoduje, że program Flash Player poszukuje pliku strategii w lokalizacji niestandardowej. Więcej informacji zawiera sekcja Internetowe elementy sterujące (pliki zasad).