Kontrola żądań wychodzących do adresów URL

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

Wychodzące wywołania skryptów oraz wychodzące żądania kierowane do zewnętrznych adresów URL (adresów HTTP, mailto: itd.) realizowane są przez następujące interfejsy API:

  • funkcję flash.system.fscommand() ;

  • metodę ExternalInterface.call() l

  • funkcję flash.net.navigateToURL() .

W przypadku treści załadowanych z lokalnego systemu plików wywołania tych metod są udane tylko, jeżeli kod i zawierająca go strona WWW (o ile taka istnieje) znajdują się w lokalnie zaufanym obszarze izolowanym lub obszarze izolowanym aplikacji AIR. Wywołania tych metod kończą się niepowodzeniem, jeśli zawartość znajduje się w lokalnym obszarze izolowanym z obsługą sieci lub lokalnym obszarze izolowanym z systemem plików.

Dla treści, które nie są załadowane lokalnie, wszystkie te wywołania interfejsu API umożliwiają komunikację ze stroną sieci Web, w której treści te są osadzone, z uwzględnieniem wartości parametru AllowScriptAccess opisanego poniżej. Funkcja flash.net.navigateToURL() oferuje dodatkową możliwość komunikacji z dowolną otwartą ramką przeglądarki, nie tylko stroną, w której osadzony jest plik SWF. Więcej informacji na temat tej funkcjonalności zawiera sekcja Korzystanie z funkcji navigateToURL() .

Parametr AllowScriptAccess w kodzie HTML ładującym plik SWF steruje możliwością realizacji żądań z pliku SWF skierowanych do zewnętrznych adresów URL. Parametr ten należy ustawić wewnątrz znacznika PARAM lub EMBED. Jeśli wartość parametru AllowScriptAccess nie zostanie określona, plik SWF oraz strona HTML będą mogły komunikować się tylko wówczas, gdy będą znajdować się w tej samej domenie.

Parametr AllowScriptAccess może przyjmować jedną z trzech wartości : "always" , "sameDomain" lub "never" .
  • Gdy parametr allowScriptAccess ma wartość "always" , plik SWF może komunikować się ze stroną HTML, w której jest osadzony, nawet gdy pochodzi z innej domeny niż ta strona.

  • Gdy parametr AllowScriptAccess ma wartość "sameDomain" , plik SWF może komunikować się ze stroną HTML, w której jest osadzony, tylko wtedy, gdy znajduje się w tej samej domenie, co ta strona. Jest to domyślna wartość parametru AllowScriptAccess . Należy użyć tego ustawienia lub nie ustawiać wartości parametru AllowScriptAccess , aby uniemożliwić plikowi SWF obsługiwanemu w jednej domenie dostęp do skryptów na stronach HTML w innej domenie.

  • Gdy parametr AllowScriptAccess ma wartość "never" , plik SWF nie może komunikować się z żadnymi stronami HTML. Ta wartość ma status przestarzałej począwszy od wersji Adobe Flash CS4 Professional. Nie jest zalecane i nie powinno być konieczne, jeśli użytkownik nie będzie obsługiwał niezaufanych plików SWF z własnej domeny. Jeśli zachodzi konieczność udostępniania niezaufanych plików SWF, firma Adobe zaleca utworzenie odrębnej poddomeny i umieszczenie w niej całej niezaufanej treści.

Oto przykład ustawienia znacznika AllowScriptAccess na stronie HTML w sposób umożliwiający dostęp do adresów URL w innej domenie:

<object id='MyMovie.swf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' height='100%' width='100%'> 
<param name='AllowScriptAccess' value='always'/> 
<param name='src' value=''MyMovie.swf'/> 
<embed name='MyMovie.swf' pluginspage='http://www.adobe.com/go/getflashplayer' src='MyMovie.swf' height='100%' width='100%' AllowScriptAccess='never'/> 
</object> 

Korzystanie z funkcji navigateToURL()

Oprócz opisanego powyżej parametru allowScriptAccess , funkcja navigateToURL() ma opcjonalny drugi parametr — target . Parametr target może posłużyć do określenia nazwy okna lub ramki HTML, do którego/której ma być wysyłane żądanie kierowane pod adres URL. Takie żądania podlegają dodatkowym ograniczeniom dotyczącym zabezpieczeń, a ograniczenia te zależą od tego, czy wywołanie navigateToURL() jest wywołaniem skryptu, czy nie.

W przypadku wywołań skryptów, takich jak navigateToURL("javascript: alert('Hello from Flash Player.')") , obowiązują następujące reguły.

  • Jeśli plik SWF jest plikiem zaufanym lokalnie, żądanie realizowane jest pomyślnie.

  • Jeśli parametr target wskazuje stronę HTML, w której plik SWF jest osadzony, mają zastosowanie opisane wyżej reguły interpretacji parametru allowScriptAccess .

  • Jeśli parametr target wskazuje na treść załadowaną z tej samej domeny, co plik SWF, żądanie jest realizowane pomyślnie.

  • Jeśli parametr target wskazuje na treść załadowaną z domeny innej niż domena pliku SWF, a żaden z powyższych dwóch warunków nie jest spełniony, żądanie kończy się niepowodzeniem.

W przypadku instrukcji niebędących wywołaniem skryptu (takich jak żądania HTTP, HTTPS i mailto: , żądanie kończy się niepowodzeniem jeśli spełnione są łącznie wszystkie poniższe warunki.:

  • Parametr target jest jednym ze specjalnych słów kluczowych "_top" albo "_parent" .

  • Plik SWF jest osadzony na stronie sieci Web obsługiwanej przez inną domenę.

  • Plik SWF jest osadzony z parametrem allowScriptAccess o wartości innej niż "always" .

Więcej informacji

Więcej informacji o dostępie do zewnętrznych adresów URL zawierają następujące sekcje w Skorowidzu języka ActionScript 3.0 dla platformy Adobe Flash: