Controllo dell’accesso agli URL in uscita

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

L'accesso agli script e agli URL in uscita (mediante l'uso di URL HTTP, mailto: e così via) viene ottenuto tramite il ricorso alle seguenti API:

  • Funzione flash.system.fscommand()

  • Metodo ExternalInterface.call()

  • Funzione flash.net.navigateToURL()

Per il contenuto caricato dal file system locale, le chiamate a questi metodi vanno a buon fine solo se il codice e la pagina Web (se presente) che lo contiene si trovano nelle sandbox di sicurezza locali attendibili o dell'applicazione AIR. Le chiamate a questi metodi non hanno esito positivo se il contenuto si trova nella sandbox locale con rete o locale con file system.

Per contenuto non caricato localmente, tutte le API citate possono comunicare con la pagina Web in cui si trovano i file a seconda del valore del parametro AllowScriptAccess descritto più avanti. La funzione flash.net.navigateToURL() consente anche di comunicare con qualunque finestra o frame di un browser aperto e non solo con la pagina in cui si trova il file SWF. Per ulteriori informazioni, vedete Uso della funzione navigateToURL() .

Il parametro AllowScriptAccess , inserito all'interno del codice HTML che carica un file SWF, consente di controllare l'accesso all'URL in uscita dal file SWF. Impostate questo parametro tramite il tag PARAM o EMBED. Se non impostate un valore per AllowScriptAccess , il file SWF e la pagina HTML possono comunicare solo se appartengono allo stesso dominio.

Il parametro AllowScriptAccess può avere uno dei tre seguenti possibili valori: "always" , "sameDomain" o "never" .
  • Se AllowScriptAccess è impostato su "always" , il file SWF può comunicare con la pagina HTML in cui è incorporato anche se il file SWF appartiene a un dominio diverso rispetto alla pagina HTML.

  • Se AllowScriptAccess è impostato su "sameDomain" , il file SWF può comunicare con la pagina HTML in cui è incorporato solo se il file SWF appartiene allo stesso dominio della pagina HTML. Questo è il valore predefinito del parametro AllowScriptAccess . Utilizzate questa impostazione, o non impostate un valore per il parametro AllowScriptAccess , per impedire che un file SWF appartenente a un dominio possa accedere a uno script in una pagina HTML di un dominio differente.

  • Quando AllowScriptAccess è impostato su "never" , il file SWF non può comunicare con nessuna pagina HTML. L'uso di questo valore è sconsigliato a partire da Adobe Flash CS4 Professional. e non dovrebbe essere necessario se dal vostro dominio non servite file SWF non attendibili. Se dovete gestire file SWF non attendibili, Adobe consiglia di creare un sottodominio separato in cui conservare tutto il contenuto non affidabile.

Segue un esempio di impostazione del tag AllowScriptAccess in una pagina HTML in cui viene concesso l'accesso all'URL in uscita per un dominio diverso:

<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> 

Uso della funzione navigateToURL()

In aggiunta alle impostazioni di sicurezza impostate con il parametro allowScriptAccess appena trattate, la funzione navigateToURL() prevede un secondo parametro: target . Potete utilizzare il parametro target per specificare il nome di una finestra o un frame HTML a cui inviare le richieste URL. A tali richieste si applicano ulteriori limitazioni di sicurezza che variano in base a come viene usato il parametro navigateToURL() : come istruzione di scripting oppure no.

Per le istruzioni di scripting, ad esempio navigateToURL("javascript: alert('Hello from Flash Player.')") , valgono le regole seguenti.

  • Se il file SWF è un file affidabile memorizzato localmente, la richiesta ha esito positivo.

  • Se la destinazione è la pagina HTML in cui il file SWF è incorporato, valgono le regole descritte in precedenza per il parametro allowScriptAccess .

  • Se la destinazione include contenuto caricato dallo stesso dominio del file SWF, la richiesta ha esito positivo.

  • Se la destinazione include contenuto caricato da un diverso dominio rispetto a quello del file SWF, la richiesta ha esito negativo.

Per le istruzioni non di scripting (ad esempio HTTP, HTTPS e mailto: ), la richiesta ha esito negativo se si verificano tutte le condizioni seguenti:

  • la destinazione è una delle parole chiave speciali "_top" o "_parent" , e

  • il file SWF si trova in una pagina Web appartenente a un dominio diverso, e

  • il file SWF è incorporato con un valore del parametro allowScriptAccess diverso da "always" .

Ulteriori informazioni

Per ulteriori informazioni sull'accesso agli URL in uscita, vedete le voci seguenti nella Guida di riferimento di Adobe ActionScript 3.0 per la piattaforma Adobe Flash: