Flash Platform güvenliğine genel bakış

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

Flash Player ve AIR çalışma zamanlarında kullanılan güvenlik modelinin çoğunun temelinde, yüklenen SWF dosyaları, HTML, medya ve diğer varlıklar için orijin alanı bulunur. www.example.com gibi belirli bir internet alanından gelen bir dosyadaki yürütülebilir kod her zaman o alandaki tüm verilere erişebilir. Bu varlıklar, güvenlik sanal alanı olarak bilinen aynı güvenlik grubuna koyulur. (Daha fazla bilgi için, bkz. Güvenlik sanal alanları.)

Örneğin bir SWF dosyasındaki ActionScript kodu SWF dosyalarını, bitmap'leri, ses dosyalarını, metin dosyalarını ve diğer tüm varlıkları kendi alanından yükleyebilir. Ayrıca, her iki dosya da ActionScript 3.0. kullanılarak yazılmışsa, aynı alandaki iki SWF dosyası arasında çapraz komut dosyası oluşturulmasına her zaman izin verilir.Çapraz komut dosyası oluşturma, bir dosyadaki bir kodun başka bir dosyadaki özelliklere, yöntemlere ve nesnelere erişim becerisidir.

ActionScript 3.0 kullanılarak yazılmış SWF dosyaları ile önceki ActionScript sürümleri kullanılarak yazılmış SWF dosyaları arasında çapraz komut dosyası oluşturmaya izin verilmez; ancak bu dosyalar LocalConnection sınıfını kullanarak iletişim kurabilir. Ayrıca SWF dosyasının başka etki alanlarındaki ActionScript 3.0 SWF dosyalarının çapraz komut dosyasını oluşturması ve başka etki alanlarından veri yüklemesi yeteneği de varsayılan olarak yasaklanmıştır; ancak yüklenen SWF dosyasında Security.allowDomain() öğesine yapılan bir çağrıyla bu erişime izin verilebilir. Daha fazla bilgi için, bkz. Çapraz komut dosyası oluşturma.

Aşağıdaki temel güvenlik kuralları her zaman varsayılan olarak geçerlidir:

  • Aynı güvenlik sanal alanında bulunan kaynaklar her zaman birbirine erişebilir.

  • Uzak bir sanal alanda bulunan SWF dosyaları asla yerel dosyalar ile verilere erişemez.

Flash Player ve AIR çalışma zamanları, aşağıdakileri bağımsız alanlar olarak değerlendirir ve her biri için bağımsız güvenlik sanal kutuları kurar:

  • http://example.com

  • http://www.example.com

  • http://store.example.com

  • https://www.example.com

  • http://192.0.34.166

http://example.com gibi adlandırılmış bir alan, http://192.0.34.166 gibi belirli bir IP adresiyle eşlense bile, çalışma zamanı her biri için ayrı güvenlik sanal alanı kurar.

Geliştiricinin bir SWF dosyasına kendi sanal alanı dışındaki sanal alanlarda bulunan varlıklara erişim hakkı vermek için kullanabileceği iki temel yöntem vardır:

Flash Player ve AIR çalışma zamanı güvenlik modellerinde içerik yükleme ile verileri ayıklama veya verilere erişme arasında bir ayrım vardır. İçerik, çalışma zamanının görüntüleyebildiği görsel medyalar ve görüntülenen ortamın içerdiği ses, video veya SWF dosyalarının bulunduğu medya olarak tanımlanır. Veri, yalnızca kodu tarafından erişilebilen herhangi bir şey olarak tanımlanır. İçerik ve veriler farklı şekillerde yüklenir.

  • Yükleme içeriği — İçeriği Loader, Sound ve NetStream gibi sınıfları kullanarak, Flex kullanımı sırasında MXML etiketleri veya AIR uygulamasındaki HTML etiketleri üzerinden yükleyin.

  • Verileri ayıklama—Bitmap nesnelerini, BitmapData.draw() yöntemini, Sound.id3 özelliğini veya SoundMixer.computeSpectrum() yöntemini kullanarak, yüklenen ortamdan verileri ayıklayabilirsiniz.

  • Verilere erişme - URLStream, URLLoader, FileReference, Socket ve XMLSocket gibi sınıfları kullanarak verileri doğrudan harici dosyadan (örn. bir XML dosyası) yükleyerek o verilere doğrudan erişebilirsiniz. AIR uygulaması, veri yüklemek için FileStream ve XMLHttpRequest gibi ek sınıflar sunar.

Flash Player güvenlik modeli, içerik yüklenmesi ve verilere erişilmesi için farklı kurallar tanımlar. Genellikle, içerik yüklenmesinde, verilere erişilmesine göre daha az kısıtlama vardır.

Genel olarak içerik (SWF dosyaları, bitmap'ler, mp3 dosyaları ile videolar) herhangi bir yerden yüklenebilir ancak içerik, yüklemeyi yapan kodun veya içeriğin bulunduğu alandan başka bir alandaysa, söz konusu içerik ayrı bir güvenlik sanal alanından bölümlenir.

İçerik yüklenmesine yönelik birkaç engel vardır:

  • Varsayılan olarak, yerel SWF dosyaları (kullanıcının sabit sürücüsü gibi ağ dışındaki bir adresten indirilen SWF dosyaları), dosya sistemiyle yerel sanal alanda sınıflandırılır. Bu dosyalar, ağdan içerik yükleyemez. Daha fazla bilgi için, bkz. Yerel sanal alanlar.

  • Real-Time Messaging Protocol (RTMP) sunucuları içeriğe erişimi sınırlar. Daha fazla bilgi için, bkz. RTMP sunucuları kullanılarak teslim edilen içerik.

Yüklenen ortam bir görüntü, ses veya video ise, ortamın piksel verileri ve ses verileri gibi verilerine kendi güvenlik sanal alanı dışındaki bir SWF dosyası tarafından erişilebilmesi için, o SWF dosyasının etki alanının, ortamın kaynak etki alanındaki URL ilke dosyasına dahil edilmiş olması gerekir. Ayrıntılar için, bkz. Veri olarak yüklenen ortama erişme.

Diğer yüklenmiş veri şekilleri arasında, URLLoader nesnesiyle yüklenen metin veya XML dosyaları yer alır. Yine bu durumda da, başka bir güvenlik sanal alanındaki verilere erişmek için, kaynak etki alanındaki URL ilke dosyası aracılığıyla izin verilmesi gerekir. Ayrıntılar için, bkz. URLLoader ve URLStream öğelerini kullanma.

Not: Uzaktaki içeriği ya da verileri yüklemek için AIR uygulamasının sanal alanında kod yürütümü için hiçbir zaman ilke dosyalarına gerek yoktur.