Güvenlik sanal alanları

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

İstemci bilgisayarlar birkaç kaynaktan; örneğin harici web sitelerden, yerel dosya sisteminden veya kurulmuş bir AIR uygulamasından gelen kod, içerik ile verilerin yer aldığı bağımsız dosyaları elde edebilirler. Flash Player ve AIR çalışma süreleri kod dosyalarını ve diğer kaynakları, paylaşılan nesneler, bitmap'ler, sesler, videolar ile veri dosyaları gibi diğer kaynakları, Flash Player'a yüklendikleri zamanki kaynaklarını esas alarak tek tek güvenlik sanal alanlarını belirler. İlerleyen bölümlerde belirli bir sanal alanda hangi kodun veya içeriğin yürütüleceğini belirleyen, çalışma zamanları tarafından yürütülen kurallar ele alınmıştır.

Flash Player güvenliği hakkında daha fazla bilgi için, bkz. “Güvenlik” başlıklı Flash Player Developer Center konusu, www.adobe.com/go/devnet_security_tr.

Uzak sanal alanlar

FlashPlayer ve AIR çalışma zamanı internetten gelen varlıkları (SWF dosyaları dahil) orijin alanlarına denk gelen ayrı sanal alanlarda sınıflandırır. Örneğin, example.com öğesinden yüklenen varlıklar, foo.org öğesine yüklenen varlıklarınkinden farklı bir güvenlik sanal alanına yerleştirilecektir. Varsayılan olarak, bu dosyaların kendi sunucularındaki herhangi bir kaynağa erişme yetkisi vardır. Uzak SWF dosyalarının, URL ilke dosyaları ve Security.allowDomain() yöntemi gibi açık web sitesi ve yazar izinleriyle diğer etki alanlarındaki ek verilere erişmesine izin verilebilir. Ayrıntılar için, bkz. Web sitesi denetimleri (ilke dosyaları) ve Yazar (geliştirici) denetimleri.

Uzak SWF dosyaları, yerel dosyaları ve kaynakları yükleyemez.

Flash Player güvenliği hakkında daha fazla bilgi için, bkz. “Güvenlik” başlıklı Flash Player Developer Center konusu, www.adobe.com/go/devnet_security_tr.

Yerel sanal alanlar

Yerel dosya, file: protokolü veya Universal Naming Convention (UNC) yolu kullanılarak başvurulan herhangi bir dosyayı açıklar. Yerel SWF dosyaları, dört yerel sanal alandan birine yerleştirilir:

  • local-with-filesystem sanal alanı - Güvenlik amaçları açısından Flash Player ve AIR uygulamalarının çalışma zamanları tüm yerel dosyaları varsayılan olarak local-with-filesystem sanal alanına yerleştirir. Yürütülebilir kod bu sanal alandan yerel dosyaları (örneğin, URLLoader sınıfını kullanarak) okuyabilir ama ağ ile herhangi bir biçimde iletişim kuramaz. Böylece yerel verilerin ağdan sızıp uygun olmayan şekilde paylaşılamayacağı konusunda kullanıcıya güvence sağlanır.

  • Ağ iletişimiyle yerel sanal alan—Bir SWF dosyasını derlerken, bu dosyanın yerel dosya olarak çalıştırıldığında ağ erişimine sahip olduğunu belirtebilirsiniz (bkz. Yerel SWF dosyalarının sanal alan türünü ayarlama). Bu dosyalar, ağ iletişimiyle yerel sanal alana yerleştirilir. Ağ iletişimiyle yerel sanal alana atanmış SWF dosyaları, yerel dosya erişimini kaybeder. Bunu sonucunda SWF dosyalarının ağdaki verilere erişmesine izin verilir. Ancak, ağ iletişimiyle yerel bir SWF dosyasının bir URL ilke dosyası veya Security.allowDomain() yöntemine yapılan bir çağrı yoluyla söz konusu eylem için izni olmadığı sürece ağ kaynaklı verileri okumasına izin verilmez. Bu iznin verilmesi için, bir URL ilke dosyasının <allow-access-from domain="*"/> veya Security.allowDomain("*") öğesini kullanarak tüm etki alanlarına izin vermesi gerekir. Daha fazla bilgi için, bkz. Web sitesi denetimleri (ilke dosyaları) ve Yazar (geliştirici) denetimleri.

  • Yerel güvenilen sanal alan—Güvenilen olarak kaydedilen (kullanıcılar veya yükleyici programlar tarafından) yerel SWF dosyaları, yerel güvenilen sanal alana yerleştirilir. Sistem yöneticilerinin ve kullanıcılarının da güvenlikle ilgili dikkat edilmesi gereken noktaları esas alarak yerel güvenilen sanal alana yerel bir SWF dosyasını yeniden atayabilme veya bu sanal alandan SWF dosyasını taşıyabilme yeteneğine sahip olması gerekir (bkz. Yönetimsel denetimler ve Kullanıcı denetimleri). Yerel güvenilen sanal alana atanan SWF dosyaları, diğer tüm SWF dosyalarıyla etkileşim kurabilir ve herhangi bir yerden (uzak veya yerel) veri yükleyebilir.

  • AIR uygulaması sanal alanı—Bu sanal alan, çalışan AIR uygulamasıyla yüklenmiş içerikleri barındırır. Varsayılan olarak, AIR uygulamasının sanal alanında kod yürütülmesi, herhangi bir alandaki kodun çapraz dosyasını oluşturabilir. Ancak, AIR uygulamasının sanal alanının dışındaki dosyalara, uygulamanın sanal alanındaki kodun çapraz komut dosyasını oluşturmasına izin verilmez. Varsayılan olarak, AIR uygulamasının sanal alanındaki kod ve içerik, herhangi bir etki alanından içerik ile verileri yükleyebilir.

Ağ iletişimiyle yerel ve dosya sistemiyle yerel sanal alanlar arasında iletişim kurulması ve dosya sistemiyle yerel ve uzak sanal alanlar arasında iletişim kurulması kesinlikle yasaktır. Bu tür bir iletişim izni, Flash Player'da çalışan bir uygulama veya kullanıcı ya da yönetici tarafından verilemez.

Yerel HTML dosyaları ile yerel SWF dosyaları arasında herhangi bir yönde komut dosyası oluşturulması (örneğin, ExternalInterface sınıfı kullanılarak) için, hem HTML dosyasının hem de SWF dosyasının yerel güvenilen sanal alanda olması gerekir. Bunun nedeni, tarayıcılar için yerel güvenlik modellerinin Flash Player yerel güvenlik modelinden farklı olmasıdır.

Ağ iletişimiyle yerel sanal alanda bulunan SWF dosyaları, dosya sistemiyle yerel sanal alanda bulunan SWF dosyalarını yükleyemez. Dosya sistemiyle yerel sanal alanda bulunan SWF dosyaları, ağ iletişimiyle yerel sanal alanda bulunan SWF dosyalarını yükleyemez.

AIR uygulamasının sanal alanı

Adobe AIR çalışma zamanı, Flash Player güvenlik sanal alanına uygulama sanal alanı adında ilave bir sanal alan ekler. Uygulamanın sanal alanına AIR uygulamasının yükünün bir bölümü olarak kurulan dosyalar. Uygulama tarafından yüklenen diğer bütün dosyaların, Flash Player güvenlik modeli tarafından belirtilmiş olanlara benzeyen güvenlik sınırlılıkları vardır.

Uygulama yüklendiğinde, AIR paketinde bulunan tüm dosyalar kullanıcının bilgisayarındaki bir uygulama dizinine yüklenir. Geliştiriciler, koddaki bu dizine app:/ URL şeması (bkz. URI şemaları) yoluyla başburabilir. Uygulama dizin ağacındaki tüm dosyalar, uygulama çalıştığında uygulama sanal alanına atanır. Uygulama sanal alanındaki içerik, yerel dosya sistemiyle etkileşim dahil, bir AIR uygulamasının kullanabileceği tüm ayrıcalıklarla donatılmıştır.

Çoğu AIR uygulaması, uygulamayı çalıştırmak için yalnızca yerel olarak yüklenen bu dosyaları kullanır. Ancak, AIR uygulamaları yalnızca uygulama dizinindeki dosyalarla kısıtlanmamıştır - tüm kaynaklardan tüm dosya türlerini yükleyebilir. Bu, kullanıcı bilgisayarındaki yerel dosyaların yanı sıra, yerel ağda ve İnternet'te bulunan kullanılabilir harici kaynaklardaki dosyaları da içerir. Dosya türünün güvenlik kısıtlamaları üzerinde etkisi yoktur; yüklenen HTML dosyaları, aynı kaynaktan yüklenen SWF dosyalarıyla aynı güvenlik ayrıcalıklarına sahiptir.

Uygulama güvenlik sanal alanındaki içerik, diğer sanal alanlardaki içeriğin kullanımının engellendiği AIR API'lerine erişebilir. Örneğin, uygulamaya ilişkin uygulama tanımlayıcı dosyasının içeriğini döndüren air.NativeApplication.nativeApplication.applicationDescriptor özelliği, uygulama güvenlik sanal alanındaki içerikle kısıtlanmıştır. Başka bir kısıtlanmış API örneği, yerel dosya sistemine okuma ve yazma için yöntemler içeren FileStream sınıfıdır.

Yalnızca uygulamanın güvenlik sanal alanındaki içerik tarafından kullanılabilen ActionScript API'leri, Adobe Flash Platformu için ActionScript 3.0 Başvurusu içinde AIR logosuyla gösterilir. Bu API'lerin diğer sanal alanlarda kullanılması, çalışma zamanının SecurityError istisnası atmasına neden olur.

HTML içeriği (HTMLLoader nesnesindeki), tüm AIR JavaScript API'leri (AIRAliases.js dosyasının kullanımı sırasında window.runtime özelliği veya air nesnesi yoluyla kullanılabilen) uygulama güvenlik sanal alanındaki içerik tarafından kullanılabilir. Başka bir sanal alandaki HTML içeriği window.runtime özelliğine erişimi yoktur. Bu nedenle bu içerik AIR veya Flash Player API'lerine erişemez.

AIR uygulamasının sanal alanında içerik yürütmenin ek sınırlılıkları:

  • Uygulama güvenlik sanal alanındaki HTML içeriği için, kod yüklendikten sonra dizeleri dinamik olarak yürütülebilir koda dönüştürebilen API'lerin kullanımına ilişkin sınırlamalar mevcuttur. Bunun amacı, uygulamanın yanlışlıkla uygulama dışı kaynaklardan (güvenli olmayabilecek ağ etki alanları gibi) kod yerleştirmesini (ve yürütmesini) engellemektir. Bir örnek, eval() işlevi kullanımıdır. Ayrıntılar için bkz. Farklı sanal alanlardaki içerik için kod kısıtlamaları.

  • Olası kimlik avı saldırılarını önlemek için, uygulama güvenlik sanal alanında yer alan SWF içeriğindeki ActionScript TextField nesnelerinde bulunan HTML içeriğinde img etiketleri yoksayılır.

  • Uygulama sanal alanındaki içerik, ActionScript 2.0 metin alanlarındaki HTML içeriğinde asfunction protokolünü kullanamaz.

  • Uygulama sanal alanındaki SWF içeriği, Flash Player 9 Update 3'e eklenmiş bir özellik olan etki alanları arası önbelleği kullanamaz. Bu özellik, Flash Player'ın Adobe platform bileşen içeriğini kalıcı olarak önbelleğe almasını ve bu içeriği talep üzerine yüklenen SWF içeriğinde yeniden kullanmasını sağlar. (İçeriğin birçok kez yüklenme ihtiyacını ortadan kaldırır.)

AIR uygulamasının içindeki JavaScript'in sınırlılıkları

Uygulama güvenlik sanal alanındaki içerikten farklı olarak uygulama dışı bir güvenlik sanal alanında yer alan JavaScript içeriği, dinamik olarak oluşturulan kodu yürütmek için her zaman eval() işlevini çağırabilir. Diğer taraftan, AIR uygulamasında uygulama dışı güvenlik sanal alanında JavaScript yürütmekle ilgili sınırlılıklar vardır. Bunlar:

  • Uygulama dışı sanal alandaki JavaScript kodunun window.runtime nesnesine erişimi yoktur, ve aynı şekilde bu kod AIR API'lerini yürütemez.

  • Varsayılan olarak, uygulama dışı güvenlik sanal alanındaki içerik, isteği çağıran etki alanı dışındaki etki alanlarından veri yüklemek için XMLHttpRequest çağrılarını kullanamaz. Ancak, uygulama kodu mevcut karede veya iframe'de allowCrossdomainXHR niteliğini ayarlayarak uygulama dışı içeriğe bunu yapması için izin verebilir. Daha fazla bilgi için bkz. Farklı sanal alanlardaki içerik için kod kısıtlamaları.

  • JavaScript window.open() yönteminin çağrılmasına ilişkin kısıtlamalar mevcuttur. Ayrıntılar için bkz. JavaScript window.open() yönteminin çağrılmasına ilişkin kısıtlamalar.

  • Uzak (ağ) güvenlik sanal alanlarındaki HTML içeriği uzak etki alanlarından (ağ URL'lerinden) yalnızca frame, iframe ve img içeriği yükleyebilir.

  • Dosya sistemiyle yerel, ağ iletişimiyle yerel veya yerel-güvenilir sanal alanlardaki HTML içeriği yerel sanal alanlardan (uygulamadan veya ağ URL'lerinden değil) yalnızca frame, iframe ve img içeriğini okuyabilir.

Ayrıntılar için bkz. Farklı sanal alanlardaki içerik için kod kısıtlamaları.

Yerel SWF dosyalarının sanal alan türünü ayarlama

Bir bilgisayarın son kullanıcısı veya yöneticisi, yerel bir SWF dosyasına güven onayı verildiğini belirterek bu dosyanın hem yerel hem de ağdan, başka bir deyişle, tüm etki alanlarından veri yüklemesine izin verir. Bu özellik, Genel Flash Player Güven Onayı ve Kullanıcı Flash Player Güven Onayı dizinlerinde belirtilmiştir. Daha fazla bilgi için, bkz. Yönetimsel denetimler ve Kullanıcı denetimleri.

Yerel sanal alanlar hakkında daha fazla bilgi almak için, bkz. Yerel sanal alanlar.

Adobe Flash Professional

Geliştirme aracında SWF belgesinin yayınlama ayarlarını yaparak bir SWF dosyasını dosya sistemiyle yerel sanal alan için veya ağ iletişimiyle yerel sanal alan için konfigüre edebilirsiniz.

Adobe Flex

Adobe Flex derleyicisinde use-network bayrağını ayarlayarak bir SWF dosyasını dosya sistemiyle yerel sanal alan için veya ağ iletişimiyle yerel sanal alan için konfigüre edebilirsiniz. Daha fazla bilgi için, bkz. “Uygulama derleyicisi seçenekleri hakkında”, Adobe Flex 3 Uygulamaları Oluşturma ve Konuşlandırma.

Security.sandboxType özelliği

Bir SWF dosyasının yazarı, Flash Player veya AIR uygulamasının SWF dosyasını hangi tür sanal alana atadığını belirlemek için salt okunur statik Security.sandboxType özelliğini kullanabilir. Security sınıfı, aşağıdaki gibi, Security.sandboxType özelliğinin olası değerlerini temsil eden sabitleri içerir:

  • Security.REMOTE—SWF dosyası bir Internet URL'sinden gelmiş olup etki alanı tabanlı sanal alan kuralları kapsamında çalışır.

  • Security.LOCAL_WITH_FILE—SWF dosyası yerel bir dosyadır ancak herhangi bir kullanıcı bu dosyaya güven onayı vermemiştir ve dosya ağ iletişimi atamasıyla yayınlanmamıştır. SWF dosyası yerel veri kaynaklarından okuyabilir ancak Internet üzerinden iletişim kuramaz.

  • Security.LOCAL_WITH_NETWORK—SWF dosyası yerel bir dosyadır ve herhangi bir kullanıcı bu dosyaya güven onayı vermemiş ancak dosya ağ iletişimi atamasıyla yayınlanmıştır. SWF dosyası Internet üzerinden iletişim kurabilir, ancak yerel veri kaynaklarından okuyamaz.

  • Security.LOCAL_TRUSTED—SWF dosyası yerel bir dosyadır ve kullanıcı bu dosyaya Ayarlar Yöneticisi veya Flash Player güven onayı konfigürasyon dosyasını kullanarak güven onayı vermiştir. SWF dosyası yerel veri kaynaklarından okuyabilir ve Internet üzerinden iletişim kurabilir.

  • Security.APPLICATION—SWF dosyası bir AIR uygulamasında çalışmakta olup o uygulamanın paketiyle (AIR dosyası) yüklenmiştir. Varsayılan olarak, AIR uygulaması sanal alanında bulunan dosyalar herhangi bir etki alanındaki dosyanın çapraz komut dosyasını oluşturabilir. Ancak, AIR uygulaması sanal alanı dışındaki dosyaların, AIR dosyasının çapraz komut dosyasını oluşturmasına izin verilmez. Varsayılan olarak, AIR uygulaması sanal alanındaki dosyalar herhangi bir etki alanından içerik ve verileri yükleyebilir.