Panoramica sulla sicurezza della piattaforma Flash

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

Molti dei modelli di sicurezza utilizzati dai runtime di Flash Player e AIR sono basati sul dominio di origine per i file SWF, il contenuto HTML, i supporti e altre risorse caricate. Il codice eseguibile in un file di un dominio Internet specifico, quale www.example.com, può sempre accedere ai dati di tale dominio. Tali risorse sono inserite nello stesso raggruppamento di sicurezza, conosciuto come funzione di sicurezza sandbox. Per ulteriori informazioni, vedete Sandbox di sicurezza.

Ad esempio, il codice ActionScript in un file SWF può caricare altri file SWF, bitmap, file audio e di testo e qualsiasi altra risorsa appartenente al suo stesso dominio. Inoltre, lo scambio di script tra due file SWF dello stesso dominio è sempre consentito, a condizione che entrambi siano stati scritti con ActionScript 3.0. Lo scambio di script consiste nella capacità del codice di un file di accedere alle proprietà, ai metodi e agli oggetti definiti dal codice in un altro file.

Lo scambio di script non è supportato tra file SWF scritti con ActionScript 3.0 e file scritti con versioni precedenti di ActionScript; tuttavia, questi file sono in grado di comunicare tra loro mediante la classe LocalConnection. Inoltre, per impostazione predefinita è impossibile per un file SWF scambiare script con file SWF di ActionScript 3.0 appartenenti ad altri domini e caricare i dati da altri domini; tuttavia, è possibile concedere tale diritto di accesso con una chiamata al metodo Security.allowDomain() all'interno del file SWF caricato. Per ulteriori informazioni, vedete Scambio di script.

Le seguenti regole di sicurezza di base vengono sempre applicate per impostazione predefinita:

  • Le risorse che condividono la stessa funzione di sicurezza sandbox possono sempre accedere le une alle altre.

  • Il codice eseguibile in file appartenenti a una funzione di sicurezza sandbox remota non possono accedere a file e dati locali.

I runtime Flash Player e AIR considerano i domini seguenti come singoli e impostano sandbox di sicurezza per ciascuno:

  • http://example.com

  • http://www.example.com

  • http://store.example.com

  • https://www.example.com

  • http://192.0.34.166

Anche se un dominio con nome, quale http://example.com, viene mappato su un indirizzo IP specifico, quale http://192.0.34.166, i runtime impostano una sandbox di sicurezza specifica per entrambi.

Sono disponibili due diversi metodi fondamentali per garantire a un file SWF l'accesso a risorse appartenenti a sandbox diverse da quelle del file stesso:

Nei modelli di sicurezza di Flash Player e AIR si fa distinzione tra caricamento di contenuto ed estrazione o accesso ai dati. Con contenuto si intende qualsiasi tipo di contenuto multimediale, inclusi file multimediali visivi visualizzati dai runtime, file audio, video o file SWF o HTML contenenti file multimediali visualizzati. Con dati si intende qualcosa di accessibile unicamente tramite il codice. È possibile caricare il contenuto e i dati in vari modi diversi:

  • Caricamento del contenuto: potete caricare contenuto utilizzando classi quali Loader, Sound e NetStream; tramite tag MXML quando utilizzate Flex; o tramite tag HTML in un'applicazione AIR.

  • Estrazione di dati: per estrarre dati da contenuto multimediale caricato potete utilizzare oggetti Bitmap, i metodi BitmapData.draw() e BitmapData.drawWithQuality(), la proprietà Sound.id3 o il metodo SoundMixer.computeSpectrum(). Il metodo drawWithQuality è disponibile in Flash Player 11.3 e versioni successive e in AIR 3.3 e versioni successive.

  • Accesso ai dati: potete accedere ai dati mediante caricamento diretto dei dati da un file esterno (quale un file XML) usando classi quali URLStream, URLLoader, FileReference, Socket e XMLSocket. AIR fornisce classi aggiuntive per il caricamento dei dati, ad esempio FileStream, e XMLHttpRequest.

Il modello di sicurezza di Flash Player definisce varie regole per il caricamento di contenuto e l'accesso ai dati. In generale, vi sono meno limitazioni al caricamento del contenuto rispetto all'accesso ai dati.

Il contenuto (file SWF, bitmap, file mp3 e video) può essere caricato ovunque, tuttavia, se si tratta di contenuto appartenente a un dominio diverso da quello del codice o contenuto che carica, esso verrà suddiviso in partizioni in una funzione di sicurezza sandbox separata.

Esistono alcune barriere al caricamento di contenuto:

  • Per impostazione predefinita, i file SWF locali (quelli caricati da indirizzi non di rete, quale un disco rigido di un utente) sono classificati nella sandbox locale con file system. Questi file non possono caricare contenuto dalla rete. Per ulteriori informazioni, vedete Funzioni di sicurezza sandbox locali.

  • I server RTMP (Real-Time Messaging Protocol) sono in grado di limitare l'accesso al contenuto. Per ulteriori informazioni, vedete Contenuto distribuito mediante server RTMP.

Se il contenuto caricato è un file immagine, audio o video, un file SWF esterno alla sua sandbox può accedere ai dati di tale file, quali dati pixel o dati audio, solo se il dominio del file SWF non è stato incluso in un file di criteri degli URL nel dominio di origine del file multimediale. Per ulteriori informazioni, vedete Accesso a file multimediali caricati come dati

Tra le altre forme di dati caricati vi sono file di testo o XML caricati con un oggetto URLLoader. Anche in questo caso, per accedere a dati appartenenti a una funzione di sicurezza sandbox diversa, è necessario ottenere un'autorizzazione mediante un file di criteri degli URL nel dominio di origine. Per ulteriori informazioni, vedete Uso di URLLoader e URLStream

Nota: i file di criteri non sono mai richiesti per consentire al codice in esecuzione nella sandbox dell'applicazione AIR di caricare contenuto o dati remoti.