Limitazioni delle API di connettività di reteFlash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive È possibile limitare le API per la connettività di rete in due modi. Per impedire attività pericolose, viene bloccato l'accesso alle porte che sono in genere riservate; non è possibile usare il codice per forzare questi blocchi. Per controllare l'accesso di un file SWF alle funzionalità di rete in riferimento alle altre porte, potete utilizzare l'impostazione allowNetworking. Porte bloccateCome accade ad alcuni browser, anche Flash Player e Adobe AIR hanno delle limitazioni in riferimento all'accesso HTTP ad alcune porte. Le richieste HTTP non sono autorizzate su alcune porte standard che vengono utilizzate convenzionalmente per i server di tipo non HTTP. Tutte le API che accedono all'URL della rete sono soggette a tali limitazioni. Le uniche eccezioni sono costituite dalle API che chiamano direttamente i socket, come Socket.connect() e XMLSocket.connect(), e dalle chiamate a Security.loadPolicyFile() con cui viene caricato un file di criteri socket. Le connessioni socket sono consentite o negate attraverso l'uso di file di criteri socket sul server di destinazione. Nell'elenco seguente sono riportate le API di ActionScript 3.0 a cui si applica il blocco delle porte: FileReference.download(),FileReference.upload(), Loader.load(), Loader.loadBytes(), navigateToURL(), NetConnection.call(), NetConnection.connect(), NetStream.play(), Security.loadPolicyFile(), sendToURL(), Sound.load(), URLLoader.load(), URLStream.load() Il blocco delle porte è applicato anche all'importazione della librerie condivise, all'uso del tag <img> nei campi di testo e al caricamento di file SWF nelle pagine HTML tramite i tag <object> e <embed>. Il blocco delle porte è applicato anche all'uso del tag <img> nei campi di testo e al caricamento di file SWF nelle pagine HTML tramite i tag <object> e <embed>. Nell'elenco seguente sono riportate le porte bloccate: HTTP: 20 (dati ftp), 21 (controllo ftp) HTTP e FTP: 1 (tcpmux), 7 (echo), 9 (discard), 11 (systat), 13 (daytime), 15 (netstat), 17 (qotd), 19 (chargen), 22 (ssh), 23 (telnet), 25 (smtp), 37 (time), 42 (name), 43 (nicname), 53 (domain), 77 (priv-rjs), 79 (finger), 87 (ttylink), 95 (supdup), 101 (hostriame), 102 (iso-tsap), 103 (gppitnp), 104 (acr-nema), 109 (pop2), 110 (pop3), 111 (sunrpc), 113 (auth), 115 (sftp), 117 (uucp-path), 119 (nntp), 123 (ntp), 135 (loc-srv / epmap), 139 (netbios), 143 (imap2), 179 (bgp), 389 (ldap), 465 (smtp+ssl), 512 (print / exec), 513 (login), 514 (shell), 515 (printer), 526 (tempo), 530 (courier), 531 (chat), 532 (netnews), 540 (uucp), 556 (remotefs), 563 (nntp+ssl), 587 (smtp), 601 (syslog), 636 (ldap+ssl), 993 (ldap+ssl), 995 (pop3+ssl), 2049 (nfs), 4045 (lockd), 6000 (x11) Uso del parametro allowNetworkingPotete controllare l'accesso di un file SWF alle funzionalità di rete impostando il parametro allowNetworking dei tag <object> e <embed> nella pagina HTML in cui si trova il contenuto SWF. I valori possibili di allowNetworking sono:
Il parametro allowNetworking è progettato per essere utilizzato principalmente quando il file SWF e la pagina HTML in cui è contenuto appartengono a domini differenti. Si sconsiglia di utilizzare i valori "internal" e "none" quando il file SWF da caricare proviene dallo stesso dominio delle pagine HTML che lo contengono, in quanto non è possibile garantire che il file SWF venga sempre caricato insieme alla pagina HTML prevista. Un file SWF potrebbe essere caricato da un dominio senza la pagina HTML che lo contiene e in questo caso la limitazione del parametro allowNetworking non funzionerebbe come previsto. La chiamata di un'API non consentita provoca un'eccezione SecurityError. Aggiungete il parametro allowNetworking e impostatene il valore nei tag <object> ed <embed> nella pagina HTML che contiene un riferimento al file SWF, come illustrato nell'esempio seguente: <object classic="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
Code base="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,124,0"
width="600" height="400" ID="test" align="middle">
<param name="allowNetworking" value="none" />
<param name="movie" value="test.swf" />
<param name="bgcolor" value="#333333" />
<embed src="test.swf" allowNetworking="none" bgcolor="#333333"
width="600" height="400"
name="test" align="middle" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
Una pagina HTML può anche usare uno script per generare tag di incorporamento SWF. Dovete modificare lo script in modo da inserire le impostazioni allowNetworking corrette. Le pagine HTML generate da Adobe Flash Professional e Adobe Flash Builder utilizzano la funzione AC_FL_RunContent() per incorporare riferimenti a file SWF. Aggiungete allo script le impostazioni del parametro allowNetworking come indicato di seguito: AC_FL_RunContent( ... "allowNetworking", "none", ...) Le seguenti API sono disabilitate quando allowNetworking è impostato su "internal": navigateToURL(), fscommand(), ExternalInterface.call() Oltre alle API elencate sopra, le seguenti API sono disabilitate quando allowNetworking è impostato su "none": sendToURL(), FileReference.download(), FileReference.upload(), Loader.load(), LocalConnection.connect(), LocalConnection.send(), NetConnection.connect(), NetStream.play(), Security.loadPolicyFile(), SharedObject.getLocal(), SharedObject.getRemote(), Socket.connect(), Sound.load(), URLLoader.load(), URLStream.load(), XMLSocket.connect() Anche se l'impostazione allowNetworking selezionata consente a un file SWF di utilizzare un'API di connettività di rete, potrebbero essere attive altre restrizioni dovute ai limiti della funzione di sicurezza sandbox (vedete Funzioni di sicurezza sandbox). Se allowNetworking è impostato su "none", non è possibile fare riferimento a file multimediali esterni in un tag <img> nella proprietà htmlText di un oggetto TextField (viene generata un'eccezione SecurityError). Se allowNetworking è impostato su "none", un simbolo appartenente a una libreria condivisa importata inserito in Flash Professional (non in ActionScript) viene disabilitato in fase di runtime. |
|