Sandbox di sicurezza

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

I computer client possono ottenere singoli file contenenti codice, contenuto e dati da varie fonti, ad esempio, siti Web esterni, un file system locale o un'applicazione AIR installata. I runtime di Flash Player e AIR assegnano singolarmente file di codice e altre risorse, quali oggetti condivisi, bitmap, file audio, video e di dati, a sandbox di sicurezza in base alla loro origine, nel momento in cui vengono caricati. Nelle sezioni che seguono vengono descritte le regole, applicate dai runtime, che determinano a che cosa può accedere un codice o contenuto eseguito in una data sandbox.

Per ulteriori informazioni sulla sicurezza di Flash Player, vedete la sezione riguardante la sicurezza nel Centro per sviluppatori di Flash Player all'indirizzo www.adobe.com/go/devnet_security_it .

Funzioni di sicurezza sandbox remote

I runtime Flash Player e AIR classificano le risorse (compresi i file SWF) di Internet in sandbox separate che corrispondono al loro dominio di origine. Ad esempio, le risorse caricate da example.com vengono inserite in funzioni di sicurezza sandbox diverse rispetto alle risorse caricate da foo.org . Per impostazione predefinita, questi file sono autorizzati ad accedere a risorse appartenenti al proprio server. Ai file SWF remoti può essere consentito l'accesso a dati aggiuntivi appartenenti ad altri domini tramite siti Web o specifiche autorizzazioni dell'autore, quali file di criteri degli URL e il metodo Security.allowDomain() . Per ulteriori informazioni, vedete Controlli del sito Web (file di criteri) e Controlli autore (sviluppatore) .

I file SWF remoti non possono caricare file o risorse locali.

Per ulteriori informazioni sulla sicurezza di Flash Player, vedete la sezione riguardante la sicurezza nel Centro per sviluppatori di Flash Player all'indirizzo www.adobe.com/go/devnet_security_it .

Funzioni di sicurezza sandbox locali

Si definisce file locale qualunque file al quale si fa riferimento mediante il protocollo file: o un percorso UNC (Universal Naming Convention). I file SWF locali si trovano in una delle quattro sandbox locali:

  • La sandbox locale con file system: per ragioni di sicurezza, i runtime Flash Player e AIR inseriscono per impostazione predefinita tutti i file locali nella sandbox locale con file system. Da questa sandbox, il codice eseguibile è in grado di leggere file locali (mediante la classe URLLoader, ad esempio), ma non può comunicare in alcun modo con la rete. Ciò garantisce all'utente che i dati locali non possano essere diffusi nella rete o altrimenti condivisi in modo inadeguato.

  • Sandbox locale con rete: quando si compila un file SWF, è possibile specificare che esso abbia accesso alla rete se eseguito come file locale (vedete Impostazione del tipo di sandbox per file SWF locali ). Questi file vengono collocati nella sandbox locale con rete. I file SWF assegnati alla sandbox locale con rete rinunciano all'accesso ai file locali. In compenso, ai file SWF è consentito l'accesso ai dati della rete. Tuttavia, un file SWF locale con rete non può comunque leggere dati ottenuti dalla rete se non sono presenti autorizzazioni per tale operazione, quali un file di criteri degli URL o una chiamata al metodo Security.allowDomain() . Per concedere tale autorizzazione, un file di criteri degli URL deve concedere l'autorizzazione di accesso a tutti i domini mediante <allow-access-from domain="*"/> o Security.allowDomain("*") . Per ulteriori informazioni, vedete Controlli del sito Web (file di criteri) e Controlli autore (sviluppatore) .

  • Sandbox locale affidabile: i file SWF locali registrati come affidabili (da programmi di utenti o installatori) vengono collocati nella sandbox locale affidabile. Gli amministratori di sistema e gli utenti possono riassegnare o spostare un file SWF locale alla o dalla sandbox locale attendibile in base a considerazioni di sicurezza (vedete Controlli amministratore e Controlli utente ). I file SWF assegnati alla sandbox locale affidabile possono interagire con qualunque altro file SWF e caricare i dati da qualsiasi postazione (remota o locale).

  • Sandbox dell'applicazione AIR: questa sandbox include il contenuto che è stato installato con l'applicazione AIR in uso. Per impostazione predefinita, il codice in esecuzione nella sandbox dell'applicazione AIR può effettuare scambi di script con qualsiasi codice in qualunque dominio. I file esterni alla sandbox dell'applicazione AIR non possono tuttavia effettuare scambi di script con codice nella sandbox dell'applicazione. Per impostazione predefinita, il codice e il contenuto nella sandbox dell'applicazione AIR possono caricare contenuto e dati da qualsiasi dominio.

Le comunicazioni tra la sandbox locale con rete e la sandbox locale con file system, così come le comunicazioni tra sandbox locale con file system e sandbox remote, sono assolutamente proibite. Le autorizzazioni per tali comunicazioni non possono essere concesse da un'applicazione in esecuzione in Flash Player o da utenti o amministratori.

L'invio di script in entrambe le direzioni tra file HTML locali e file SWF locali (ad esempio, mediante la classe ExternalInterface) richiede che sia il file HTML che il file SWF si trovino nella stessa sandbox locale affidabile. I modelli di sicurezza locali dei browser infatti sono differenti dal modello di sicurezza locale di Flash Player.

I file SWF nella sandbox locale con rete non possono caricare file SWF nella sandbox locale con file system. I file SWF nella sandbox locale con file system non possono caricare file SWF nella sandbox locale con rete.

Sandbox dell'applicazione AIR

Il runtime Adobe AIR aggiunge una sandbox aggiuntiva, denominata application , al modello sandbox di sicurezza di Flash Player. I file installati come parte di un'applicazione AIR si caricano nella sandbox dell'applicazione. Eventuali altri file caricati dall'applicazione hanno restrizioni di sicurezza corrispondenti a quelli specificati dal modello di sicurezza Flash Player normale.

Durante l'installazione di un'applicazione, tutti i file inclusi in un pacchetto AIR vengono installati sul computer dell'utente in una directory dell'applicazione. Gli sviluppatori possono fare riferimento a questa directory nel codice utilizzando lo schema URL app:/ (vedete Schemi URI ). Tutti i file presenti nella struttura di directory dell'applicazione vengono assegnati alla sandbox dell'applicazione al momento dell'esecuzione dell'applicazione. Al contenuto presente nella sandbox dell'applicazione sono concessi tutti i privilegi disponibili per un'applicazione AIR, compresa l'interazione con il file system locale.

Molte applicazioni AIR utilizzano solo questi file installati localmente per la loro esecuzione. Tuttavia, le applicazioni AIR non sono limitate solo ai file contenuti nella directory dell'applicazione; infatti possono caricare qualsiasi tipo di file da qualsiasi origine, inclusi i file locali presenti nel computer dell'utente e i file dalle origini esterne disponibili, ad esempio quelli su una rete locale o su Internet. Il tipo di file non influisce delle restrizioni di sicurezza; i file HTML caricati dispongono degli stessi privilegi di sicurezza dei file SWF caricati dalla stessa origine.

Il contenuto nella sandbox di sicurezza dell'applicazione dispone dell'accesso alle API AIR, il cui uso è invece impedito al contenuto di altre sandbox. La proprietà air.NativeApplication.nativeApplication.applicationDescriptor , ad esempio, che restituisce il contenuto del file del descrittore dell'applicazione per l'applicazione, è limitata al contenuto presente nella sandbox di sicurezza dell'applicazione. Un altro esempio di API con restrizioni è costituito dalla classe FileStream, che contiene i metodi per la lettura e la scrittura nel file system locale.

Le API ActionScript disponibili solo per il contenuto presente nella sandbox di sicurezza dell'applicazione sono contrassegnate dal logo AIR in ActionScript 3.0 Reference for Adobe Flash Platform (Guida di riferimento di ActionScript 3.0 per la piattaforma Adobe Flash). L'uso di queste API in altre sandbox comporta la generazione di un'eccezione SecurityError da parte del runtime.

Per il contenuto HTML (in un oggetto HTMLLoader), tutte le API JavaScript AIR (quelle disponibili tramite la proprietà window.runtime o l'oggetto air quando utilizzate il file AIRAliases.js) sono disponibili per il contenuto presente nella sandbox di sicurezza dell'applicazione. Il contenuto HTML in un'altra sandbox non dispone dell'accesso alla proprietà window.runtime , quindi non può accedere alle API AIR o Flash Player.

Il contenuto in esecuzione all'interno della sandbox dell'applicazione AIR dispone delle restrizioni aggiuntive seguenti:

  • Per il contenuto HTML presente nella sandbox di sicurezza dell'applicazione, sono presenti limitazioni all'uso di API che possono trasformare dinamicamente delle stringhe in codice eseguibile dopo il caricamento del codice. Questa limitazione ha lo scopo di impedire che l'applicazione introduca inavvertitamente, ed esegua, codice da origini non dell'applicazione (ad esempio domini di rete potenzialmente non sicuri). Un esempio è costituito dall'uso della funzione eval() . Per maggiori dettagli, consultate Restrizioni relative al codice per il contenuto presente in diverse sandbox .

  • Per impedire possibili attacchi mediante phishing, i tag img nel contenuto HTML degli oggetti TextField di ActionScript vengono ignorati nel contenuto SWF presente nella sandbox di sicurezza dell'applicazione.

  • Al contenuto nella sandbox dell'applicazione non è consentito utilizzare il protocollo asfunction nel contenuto HTML presente nei campi di testo di ActionScript 2.0.

  • Al contenuto SWF nella sandbox dell'applicazione non è consentito utilizzare la cache tra domini, una funzione aggiunta a Flash Player 9 Aggiornamento 3. Questa funzione consente a Flash Player di memorizzare nella cache in modo persistente il contenuto dei componenti della piattaforma Adobe e di riutilizzarlo nel contenuto SWF caricato su richiesta (eliminando la necessità di ricaricare il contenuto più volte).

Restrizioni per JavaScript in AIR

A differenza del contenuto presente nella sandbox di sicurezza dell'applicazione, al contenuto JavaScript in una sandbox di sicurezza non dell'applicazione è consentito chiamare la funzione eval() per eseguire il codice generato dinamicamente in qualsiasi momento. Tuttavia, esistono delle restrizioni su JavaScript in esecuzione in una sandbox di sicurezza non dell'applicazione in AIR, Ad esempio:

  • Il codice JavaScript HTML in una sandbox non dell'applicazione non dispone dell'accesso all'oggetto window.runtime , pertanto questo codice non può eseguire le API AIR.

  • Per impostazione predefinita, al contenuto di una sandbox di sicurezza non dell'applicazione non è consentito utilizzare chiamate a XMLHttpRequest per caricare i dati da domini diversi da quello da cui ha origine la chiamata di richiesta. Tuttavia, il codice dell'applicazione può concedere tale autorizzazione al contenuto non dell'applicazione mediante l'impostazione dell'attributo allowCrossdomainXHR nel frame o iframe che lo contiene. Per ulteriori informazioni, vedete Restrizioni relative al codice per il contenuto presente in diverse sandbox .

  • Sono presenti restrizioni relative alla chiamata al metodo JavaScript window.open() . Per maggiori dettagli, consultate Restrizioni relative alla chiamata al metodo JavaScript window.open() .

  • Al contenuto HTML nelle sandbox di sicurezza (di rete) remote è consentito caricare solo contenuto CSS, frame , iframe e img da domini remoti (da URL di rete).

  • Al contenuto HTML nella sandbox di sicurezza locale con file system, locale con rete o locale affidabile è consentito caricare solo contenuto CSS, frame , iframe e img da sandbox locali (non da URL dell'applicazione o di rete).

Per maggiori dettagli, consultate Restrizioni relative al codice per il contenuto presente in diverse sandbox .

Impostazione del tipo di sandbox per file SWF locali

Un utente finale o l'amministratore di un computer possono classificare un file SWF locale come affidabile e consentire a tale file di caricare dati da tutti i domini, sia locali che di rete. Tale informazione viene specificata nelle directory Global Flash Player Trust e User Flash Player Trust. Per ulteriori informazioni, vedete Controlli amministratore e Controlli utente .

Per ulteriori informazioni sulle sandbox locali, vedete Funzioni di sicurezza sandbox locali .

Adobe Flash Professional

È possibile configurare un file SWF per la sandbox locale con file system o per la sandbox locale con rete configurando le impostazioni di pubblicazione del documento nello strumento di creazione.

Adobe Flex

È possibile configurare un file SWF per la sandbox locale con file system o per la sandbox locale con rete impostando il flag use-network nel compilatore di Adobe Flex. Per ulteriori informazioni, vedete “About the application compiler options” (Informazioni sulle opzioni del compilatore applicazioni) nel documento Building and Deploying Adobe Flex 3 Applications (Sviluppo e implementazione delle applicazioni Adobe Flex 3).

Proprietà Security.sandboxType

L'autore di un file SWF può utilizzare la proprietà statica di sola lettura Security.sandboxType per determinare a quale tipo di sandbox il runtime Flash Player o AIR ha assegnato il file SWF. La classe Security include costanti che rappresentano possibili valori della proprietà Security.sandboxType , come indicato di seguito:

  • Security.REMOTE : il file SWF deriva da un URL Internet e viene gestito tramite regole sandbox basate sul dominio.

  • Security.LOCAL_WITH_FILE : questo file SWF è un file locale che non è considerato affidabile dall'utente e non è stato pubblicato con una designazione di rete. Il file SWF può leggere le origini dati locali, ma non può comunicare con Internet.

  • Security.LOCAL_WITH_NETWORK : questo file SWF è un file locale che non è considerato affidabile dall'utente, ma è stato pubblicato con una designazione di rete. Il file SWF può comunicare con Internet ma non può leggere da origini dati locali.

  • Security.LOCAL_TRUSTED : questo file SWF è un file locale che è stato considerato affidabile dall'utente tramite Gestione impostazioni o il file di configurazione Flash Player Trust. Il file SWF può leggere le origini dati locali e comunicare con Internet.

  • Security.APPLICATION : questo file SWF è in esecuzione in un'applicazione AIR ed è stato installato con il pacchetto (file AIR) per tale applicazione. Per impostazione predefinita, i file nella sandbox dell'applicazione AIR possono scambiare script con qualsiasi file in qualunque dominio. I file esterni alla sandbox dell'applicazione AIR non possono tuttavia scambiare script il file AIR. Per impostazione predefinita, i file nella sandbox dell'applicazione AIR possono caricare contenuto e dati da qualsiasi dominio.