Suggerimento rapido una guida ai file di criteri di dominio incrociato

Ad un certo punto, tutti gli sviluppatori Flash o Flex che hanno dovuto accedere alle risorse remote hanno trovato un file di criteri crossdomain.xml. Questo articolo dà un'occhiata a cosa sono questi file di criteri, come funzionano e come puoi crearne uno per te stesso.

Esempio

Diamo un'occhiata a un esempio di ciò di cui stiamo parlando:

Cosa c'è di così speciale in questo? Bene, l'SWF sta caricando l'immagine sorridente da http://mytestgae.appspot.com/images/smiley.jpg, non dal dominio Activetuts +. Senza un file di criteri interdominio, provare a caricare l'immagine attiverebbe un SecurityError.


Che cos'è un file di criteri di dominio incrociato?

Il modello di sicurezza noto come criterio di "stessa origine", implementato dalla maggior parte dei moderni browser Web, impedisce l'accesso o la modifica di alcuni tipi di contenuto se il file esiste in un altro dominio. Non è una regola dura e veloce; Le pagine HTML mostreranno felicemente immagini e HTML da pagine su altri domini. Ma per JavaScript lo stesso criterio di origine impedisce a un documento o uno script caricato da un'origine di ottenere o impostare proprietà di un documento da un altro.

Flash include una politica di sicurezza simile che generalmente impedisce a un'applicazione Flash di accedere ai dati ospitati su un dominio remoto. Tuttavia ci sono molte circostanze in cui non solo è utile, ma ci si aspetta che le risorse siano accessibili da remoto. Un album fotografico online si troverebbe limitato se le applicazioni esterne non potessero scaricare le sue immagini. Sarebbe anche stupido se un servizio web non consentisse alle applicazioni esterne di interagire con esso.

Per questo motivo è possibile creare un file XML, chiamato crossdomain.xml, che specifica in che modo è possibile accedere ai dati su un dominio da un'applicazione Flash ospitata su un dominio remoto. Per la maggior parte questi file di criteri sono abbastanza semplici, ma ci sono alcuni dettagli di cui è utile essere a conoscenza.

Se si ospitano contenuti a cui si desidera accedere da applicazioni Flash esterne, sarà necessario creare un file crossdomain.xml. Iniziamo dando un esempio di base.


Passaggio 1: un file di base crossdomain.xml

Ecco un file crossdomain.xml molto semplice. Quando questo file è ospitato nella root del tuo dominio, consente alle applicazioni Flash esterne di accedere a tutte le risorse del tuo dominio.

    

Il file della politica contiene un singolo etichetta. All'interno di questo puoi avere zero o più tag. Ogni il tag può essere utilizzato per definire un dominio o un indirizzo IP da cui un'applicazione Flash può accedere alle risorse locali. L'attributo domain = "*" specifica che tutti i domini hanno accesso. Questo grazie al carattere jolly asterisco, che viene utilizzato qui per abbinare tutti i domini e gli indirizzi IP.

Per la maggior parte delle situazioni questo file di criteri "consenti tutti" è sufficiente. Garantisce l'accesso alle applicazioni Flash a tutte le risorse pubiche, mentre qualsiasi protezione in atto (come le pagine protette da password) impedisce comunque alle applicazioni Flash di accedere a dati sensibili.

(Nota che non puoi inserire un file crossdomain.xml sul tuo dominio che permetta ai file SWF anche nel tuo dominio di accedere ai file remoti su un altro dominio!)


Passaggio 2: domini specificati

Se non si desidera consentire l'accesso globale alle risorse pubbliche, l'attributo dominio nel file il tag può essere usato per concedere l'accesso a domini specifici.

È possibile specificare un dominio nella sua interezza. L'esempio seguente darà accesso alle applicazioni Flash ospitate nel dominio www.example.com.

È possibile utilizzare il carattere jolly asterisco per abbinare quei domini che terminano con il suffisso dato. Qui concediamo l'accesso alle applicazioni Flash sui domini example.com, www.example.com, Whatever.example.com ecc.


Passaggio 3: indirizzi IP specificati

È possibile specificare l'accesso tramite l'indirizzo IP così come è possibile concedere l'accesso alle applicazioni Flash ospitate su domini specifici. Vengono utilizzati lo stesso tag e gli stessi attributi, tranne in questo caso si utilizza un indirizzo IP:


Passaggio 4: utilizzo di HTTPS

Per impostazione predefinita, un'applicazione Flash ospitata su un server HTTPS può accedere solo alle risorse su server HTTPS remoti. Ma dato il sovraccarico che HTTPS può aggiungere a un server potresti non volerlo usare. In questo caso, impostare il sicuro attribuire a falso consentirà a un'applicazione Flash su un server HTTPS di accedere ai dati da un server HTTP.


Passaggio 5: applicazioni Flash remote

Che cosa succede se non vuoi che le applicazioni Flash remote accedano ai tuoi dati? Puoi creare un file crossdomain.xml che non ne include nessuno tags:

  

O semplicemente non puoi avere un file crossdomain.xml.


Passaggio 6: controllo granulare delle sottodirectory

Un file di criteri di dominio incrociato controllerà l'accesso alla directory in cui si trova e tutte le sottodirectory sottostanti. Questo è il modo in cui l'immissione di un file di criteri "Consenti tutto" nella directory principale del dominio consente l'accesso all'intero dominio. Ma ci possono essere situazioni in cui si desidera consentire solo l'accesso a una determinata sottodirectory.

Con le ultime versioni di Flash Player questo richiede due file XML. Innanzitutto devi inserire un file crossdomain.xml nella radice del tuo dominio che consenta a Flash di elaborare ulteriori file di criteri tra domini all'interno delle sottodirectory. Questo è fatto con il etichetta. Nell'esempio seguente abbiamo impostato il consentita-cross-domain-politiche attribuire a tutti, il che significa che i file di criteri tra domini che possono esistere nelle sottodirectory verranno elaborati. Questo comportamento è un cambiamento in Flash Player 9 Update 3 e versioni successive. In precedenza i file dei criteri nelle sottodirectory venivano elaborati per impostazione predefinita senza dover impostare il consentita-cross-domain-politiche attributo.

Si noti che non ne abbiamo aggiunto nessuno tag, il che significa che in assenza di file crossdomain.xml aggiuntivi nelle sottodirectory, le applicazioni Flash remote non avranno accesso alle risorse su questo server.

Puoi trovare ulteriori informazioni sulle opzioni di meta-policy in questo articolo.

   

Successivamente, si inserisce un file crossdomain.xml nella sottodirectory che si desidera controllare.

Per vedere un esempio di questo in azione, controlla questo file. Questo file di criteri, nella radice del dominio http://mytestgae.appspot.com/, utilizza il file tag per delegare il controllo a qualsiasi file crossdomain.xml che possa esistere nelle sottodirectory. Quindi questo file di criteri nella sottodirectory / images / garantisce l'accesso completo alla directory e qualsiasi sottodirectory sottostante. Quindi un'applicazione Flash remota può accedere all'immagine di faccine nella directory delle immagini in questo modo:

      

Tuttavia, l'accesso all'immagine di faccine nella directory / images-restricted / non è consentito perché non esiste alcun file crossdomain.xml nella directory restricted-images per sovrascrivere la (mancanza di) accesso concessa dal file crossdomain.xml nel radice del dominio. L'esecuzione del codice riportato di seguito genererà un'eccezione:

      

L'eccezione dice:
SecurityError: Errore # 2123: violazione della sicurezza sandbox: LoaderInfo.content: file: /// D | /CrossDomain.swf non può accedere a http://mytestgae.appspot.com/images-restricted/smiley.jpg. Nessun file di policy concesso accesso.
at flash.display :: LoaderInfo / get content ()
su MethodInfo-635 ()


Passaggio 7: Cross Domain Policy vs. Firewall

Pertanto, dalle informazioni di cui sopra, sembra che i file di criteri interdominio possano essere utilizzati per limitare in modo efficace l'accesso alle applicazioni Flash non ospitate sul proprio dominio. Anche se ciò è vero, non si deve fare affidamento su un file di criteri interdominio per limitare l'accesso alle informazioni sensibili. Mentre Flash può rispettare un file di criteri crossdomain.xml, altre piattaforme come PHP no. Fai una ricerca di PHP Flash Proxy per vedere cosa intendo. Utilizzando un proxy è possibile accedere a tutti i dati disponibili al pubblico indipendentemente dall'esistenza di file di criteri tra domini. E non hai nemmeno bisogno di pagare per un server PHP - come dimostrerò in un prossimo articolo, Google App Engine può essere utilizzato come proxy senza costi iniziali iniziali.

La linea di fondo è che i file di criteri interdominio forniscono un modo per concedere in modo selettivo l'accesso alle risorse locali tramite applicazioni Flash remote, ma solo se tutti giocano secondo le regole. Se vuoi assicurarti che i tuoi dati privati ​​rimangano privati, non c'è alcun sostituto per un firewall.


Conclusione

Gestire i file dei criteri di dominio incrociato non deve essere complicato. Una volta comprese le nozioni di base su come funzionano, è abbastanza semplice concedere o limitare l'accesso ai dati tramite applicazioni Flash remote. Basta essere consapevoli del fatto che non sono sicuri come potrebbero sembrare inizialmente.

Spero che questo Quick Tip ti sia piaciuto, grazie per la lettura!