Paket | flash.system |
Sınıf | public final class Security |
Miras Alma | Security Object |
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Özellik | Tanımlayan: | ||
---|---|---|---|
constructor : Object
Belirli bir nesne örneği için sınıf nesnesine veya yapıcı işlevine bir başvuru. | Object | ||
exactSettings : Boolean [statik]
Flash Player veya AIR'in, kamera ve mikrofon izinleri, depolama kotaları ve kalıcı paylaşılan nesnelerin saklanması dahil belirli içerik ayarları için kullanılacak etkin alanını nasıl seçeceğini belirler. | Security | ||
pageDomain : String [statik] [salt okunur]
HTML sayfasının swf'yi içeren etki alanı kısmı. | Security | ||
sandboxType : String [statik] [salt okunur]
Çağıran dosyanın içinde çalıştığı güvenlik sanal alanı türünü belirtir. | Security |
Yöntem | Tanımlayan: | ||
---|---|---|---|
[statik]
Tanımlanmış etki alanlarındaki SWF dosyalarının, allowDomain() çağrısını içeren SWF dosyasındaki nesnelere ve değişkenlere erişmesini sağlar. | Security | ||
[statik]
Tanımlı etki alanlarındaki SWF dosyalarının ve HTML dosyalarının, HTTPS protokolü aracılığıyla barındırılan, çağıran SWF dosyasındaki nesnelere ve değişkenlere erişmesine izin verir. | Security | ||
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir. | Object | ||
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir. | Object | ||
[statik]
url parametresi tarafından belirtilen konumda bir ilke dosyası arar. | Security | ||
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir. | Object | ||
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar. | Object | ||
[statik]
Flash Player'da Güvenlik Ayarları panelini gösterir. | Security | ||
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür. | Object | ||
Belirtilen nesnenin dize olarak temsil edilen halini döndürür. | Object | ||
Belirtilen nesnenin temel değerini döndürür. | Object |
Sabit | Tanımlayan: | ||
---|---|---|---|
APPLICATION : String = "application" [statik]
Dosya bir AIR uygulamasında çalışır ve o uygulamanın paketiyle (AIR dosyası) yüklenmiştir. | Security | ||
LOCAL_TRUSTED : String = "localTrusted" [statik]
Dosya bir yerel dosyadır ve Flash Player Settings Manager veya FlashPlayerTrust konfigürasyon dosyası kullanılarak kullanıcı tarafından güvenilir. | Security | ||
LOCAL_WITH_FILE : String = "localWithFile" [statik]
Bu dosya yerel bir dosyadır, kullanıcı tarafından güvenilmez ve ağ hedefiyle yayınlanmış bir SWF dosyası değildir. | Security | ||
LOCAL_WITH_NETWORK : String = "localWithNetwork" [statik]
Bu dosya yerel bir dosyadır, kullanıcı tarafından güvenilmez ve ağ hedefiyle yayınlanmış bir SWF dosyası değildir. | Security | ||
REMOTE : String = "remote" [statik]
Dosya bir Internet URL'sindendir ve etki alanı temelli sanal alan kurallarına göre işlem yapar. | Security |
exactSettings | özellik |
exactSettings:Boolean
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Flash Player veya AIR'in, kamera ve mikrofon izinleri, depolama kotaları ve kalıcı paylaşılan nesnelerin saklanması dahil belirli içerik ayarları için kullanılacak etkin alanını nasıl seçeceğini belirler. SWF dosyasının Flash Player 6'da kullanılan aynı ayarları kullanmasını sağlamak için, exactSettings
öğesini false
olarak ayarlayın.
Flash Player 6'da, bu oynatıcı ayarları için kullanılan etki alanı, SWF dosyasının etki alanının izleme bölümünü esas alıyordu. SWF dosyasının etki alanı www.example.com gibi birden çok parça içerirse, etki alanının birinci parçası ("www") kaldırılır ve etki alanının kalan bölümü kullanılır: example.com. Bu nedenle Flash Player 6'da, hem www.example.com hem de store.example.com bu ayarlar için etki alanı olarak example.com'u kullanır. Aynı şekilde, hem www.example.co.uk hem de store.example.co.uk bu ayarlar için etki alanı olarak example.co.uk'yi kullanır. Flash Player 7 ve sonraki sürümlerde, oynatıcı ayarları varsayılan olarak bir SWF dosyasının tam etki alanına göre seçilir; örneğin, www.example.com adresindeki bir SWF dosyası www.example.com için oynatıcı ayarlarını kullanırken, store.example.com'daki bir SWF dosyası store.example.com için ayrı oynatıcı ayarlarını kullanır.
Security.exactSettings
true
değerine ayarlandığında, Flash Player veya AIR oynatıcı seçenekleri için tam etki alanları kullanır. exactSettings
için true
varsayılan değerdir. exactSettings
öğesini varsayılan ayarından farklı bir ayara değiştirirseniz, oynatıcı ayarlarını seçmek için bunu Flash Player veya AIR gerektiren herhangi bir olay gerçekleşmeden önce yapın - örneğin, bir kamera veya mikrofon kullanmak veya kalıcı bir paylaşılan nesne almak.
Daha önceden sürüm 6 SWF dosyası yayınladıysanız ve bundan kalıcı paylaşılan nesneler oluşturduysanız ve şimdi bu kalıcı paylaşılan nesneleri sürüm 7 ya da sonrasına taşıdıktan sonra bu SWF dosyasından veya sürüm 7 ya da sonrasından farklı bir SWF dosyasından almanız gerekiyorsa, SharedObject.getLocal()
öğesini çağırmadan önce Security.exactSettings
öğesini false
değerine ayarlamanız gerekir.
Uygulama
public static function get exactSettings():Boolean
public static function set exactSettings(value:Boolean):void
Atar
SecurityError — Flash Player veya AIR uygulaması, exactSettings değerini zaten oynatıcı ayarları kararında en az bir kez kullanmıştır.
|
pageDomain | özellik |
pageDomain:String
[salt okunur] Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 10.3, AIR 2.7 |
HTML sayfasının swf'yi içeren etki alanı kısmı.
Güvenlik nedenleriyle, yöntem tam URL'yi değil, yalnızca sayfa etki alanını (http://www.example.com gibi) döndürür. Bu SWF bir HTML sayfasına dahil edilmezse veya güvenlik nedenlerinden ötürü sayfa etki alanına erişemezse, bu özellik undefined
dizesini döndürür.
Uygulama
public static function get pageDomain():String
sandboxType | özellik |
sandboxType:String
[salt okunur] Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Çağıran dosyanın içinde çalıştığı güvenlik sanal alanı türünü belirtir.
Security.sandboxType
, şu değerlerden birine sahiptir:
remote
(Security.REMOTE
)—Bu dosya, bir Internet URL'sindedir ve etki alanı temelli sanal alan kuralları kapsamında çalışır.localWithFile
(Security.LOCAL_WITH_FILE
)—Bu dosya kullanıcı tarafından güvenilmeyen bir yerel dosya olup ağ hedefiyle yayınlanmış bir SWF dosyası değildir. Dosya, yerel veri kaynaklarından okuyabilir, ancak Internet ile iletişim kuramaz.localWithNetwork
(Security.LOCAL_WITH_NETWORK
)—Bu SWF dosyası kullanıcı tarafından güvenilmeyen bir yerel dosya olup bir ağ hedefiyle yayınlanmıştır. SWF dosyası, Internet iletişimi kurabilir, ancak yerel veri kaynaklarından okuyamaz.localTrusted
(Security.LOCAL_TRUSTED
)—Bu dosya kullanıcı tarafından güvenilen bir yerel dosya olup Flash Player Settings Manager veya bir FlashPlayerTrust konfigürasyon dosyasını kullanır. Bu dosya, yerel veri kaynaklarından okuyabilir ve Internet ile iletişim kurabilir.application
(Security.APPLICATION
)—Bu dosya bir AIR uygulamasında çalışır ve o uygulamanın paketiyle (AIR dosyası) yüklenmiştir. Varsayılan olarak AIR uygulaması sanal alanındaki dosyalar, herhangi bir etki alanındaki dosyanın çapraz komut dosyasını oluşturabilir (AIR uygulaması sanal alanı dışındaki dosyaların, AIR dosyasının çapraz komut dosyasını oluşturmasına izin verilmeyebilse de). Varsayılan olarak, AIR uygulaması sanal ağındaki dosyalar herhangi bir etki alanından içerik ve verileri yükleyebilir.
Güvenlikle ilgili daha fazla bilgi için, bkz. Flash Player Geliştirici Merkezi Konusu: Güvenlik.
Uygulama
public static function get sandboxType():String
İlgili API Öğeleri
allowDomain | () | yöntem |
public static function allowDomain(... domains):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tanımlanmış etki alanlarındaki SWF dosyalarının, allowDomain()
çağrısını içeren SWF dosyasındaki nesnelere ve değişkenlere erişmesini sağlar.
Not: AIR uygulaması güvenlik sanal alanındaki koddan bu yöntemin çağrılması, bir SecurityError istisnasının atılmasına neden olur. Uygulama güvenlik sanal alanı dışındaki içerik, uygulama sanal alanında doğrudan komut dosyaları arası içerik oluşturamaz. Ancak, uygulama sanal alanı dışındaki içerik, sanal alan köprüsünü kullanarak uygulama güvenlik sanal alanındaki içerikle iletişim kurabilir.
İki SWF dosyası aynı etki alanından (örn. http://sitem.com/swfA.swf ve http://sitem.com/swfB.swf) sunuluyorsa, swfA.swf, swfB.swf içindeki değişenleri, nesneleri, özellikleri, yöntemleri, vb.'yi inceleyip değiştirebilir ve swfB.swf de aynı şeyi swfA.swf için yapabilir. Buna filmler arası komut dosyası oluşturma veya öğeler arası komut dosyası oluşturma denir.
İki SWF dosyası farklı etki alanlarından (örneğin, http://siteA.com/swfA.swf ve http://siteB.com/siteB.swf) sunuluyorsa, Flash Player varsayılan olarak swfA.swf öğesinin swfB.swf öğesinde komut dosyası oluşturmasına veya swfB.swf öğesinin swfA.swf öğesinde komut dosyası oluşturmasına izin vermez. SWF dosyası, Security.allowDomain()
öğesini çağırarak başka etki alanlarındaki SWF dosyalarına izin verir. Buna etki alanları arası komut dosyası oluşturma denir. Security.allowDomain("siteA.com")
öğesini çağırarak, siteB.swf öğesi siteA.swf öğesine bunda komut dosyası oluşturma izni verir.
Herhangi bir etki alanları arası durumda, iki tarafın da dahil olması önemlidir. Bu tartışma amaçları doğrultusunda, çapraz komut dosyası oluşturmayı gerçekleştiren taraf erişen taraf (genellikle erişen SWF) olarak adlandırılırken, diğer taraf da erişilen taraf (genellikle erişilen SWF dosyası) olarak adlandırılır. siteA.swf scripts siteB.swf, siteA.swf erişen taraf olduğunda ve siteB.swf erişilen taraf olduğunda.
allowDomain()
ile oluşturulan etki alanları arası izinler asimetriktir. Önceki örnekte, siteA.swf, siteB.swf'nin komut dosyasını oluşturabilir ancak siteA.swf, siteB.com'daki SWF dosyalarına komut dosyası oluşturma izni vermek için allowDomain()
öğesini çağırmadığından, siteB.swf, siteA.swf'nin komut dosyasını oluşturamaz Her iki SWF dosyasının allowDomain()
öğelerini çağırmasını sağlayarak simetrik izinler oluşturabilirsiniz.
Flash Player, SWF dosyalarını diğer SWF dosyalarından kaynaklanan etki alanları arası komut dosyası oluşturmaya karşı korumaya ek olarak, SWF dosyalarını HTML dosyalarından kaynaklanan etki alanları arası komut dosyası oluşturmaya karşı da korur. HTML'den SWF'ye komut dosyası oluşturma, SetVariable
gibi eski tarayıcı işlevleriyle veya ExternalInterface.addCallback()
yoluyla oluşturulan geri çağrılarla gerçekleşebilir. HTML'den SWF'ye komut dosyası oluşturma etki alanları arasında çapraz geçiş yaptığında, erişen taraf SWF dosyası olduğunda olduğu gibi, erişilmekte olan SWF dosyasının allowDomain()
öğesini çağırması gerekir, aksi takdirde işlem başarısız olur.
allowDomain()
öğesine parametre olarak bir IP adresi belirtilmesi, belirtilen IP adresinden kaynaklanan tüm tarafların erişmesine izin vermez. Bu, IP adresiyle eşlenen bir etki alanının değil, URL'sinde belirtilen IP adresini içeren bir tarafın erişimine izin verir.
Sürüme özgü farklılıklar
Flash Player'ın etki alanları arası güvenlik kuralları sürümden sürüme gelişmiştir. Aşağıdaki tabloda farklılıklar özetlenmektedir.
Çapraz komut dosyası oluşturmadaki en son SWF sürümü | allowDomain() gerekli mi? | allowInsecureDomain() gerekli mi? | Hangi SWF dosyasının allowDomain() veya allowInsecureDomain() öğesini çağırması gerekir? | allowDomain() veya allowInsecureDomain() öğesinde nelerin belirtilmesi gerekir? |
---|---|---|---|---|
5 veya öncesi | Hayır | Hayır | Yok | Yok |
6 | Evet, üst etki alanları eşleşmiyorsa | Hayır | Erişilmekte olan SWF dosyası veya erişilmekte olan SWF dosyasıyla aynı üst etki alanına sahip bir SWF dosyası |
|
7 | Evet, etki alanları tam olarak eşleşmiyorsa | Evet, HTTP'den HTTPS'ye erişim gerçekleştiriliyorsa (etki alanları tam olarak eşleşse de) | Erişilmekte olan SWF dosyası veya erişilmekte olan SWF dosyasıyla tamamen aynı etki alanına sahip bir SWF dosyası |
|
8 veya sonrası | Evet, etki alanları tam olarak eşleşmiyorsa | Evet, HTTP'den HTTPS'ye erişim gerçekleştiriliyorsa (etki alanları tam olarak eşleşse de) | Erişilen SWF dosyası |
|
Flash Player'ın davranışını kontrol eden sürümler, Flash Player sürümü değil, SWF sürümleridir (SWF dosyasının yayınlanmış sürümü). Örneğin, Flash Player 8, sürüm 7 için yayınlanmış bir SWF dosyasını oynattığında, sürüm 7 ile tutarlı davranışı uygular. Bu uygulama, oynatıcı yükseltmelerinin dağıtılan SWF dosyalarındaki Security.allowDomain()
davranışını değiştirmemesini güvence altına alır.
Önceki tabloda bulunan sürüm sütunu, çapraz komut dosyası oluşturma işlemindeki en son SWF sürümünü gösterir. Flash Player, hangisi daha sonraysa, erişen SWF dosyasının sürümüne veya erişilmekte olan SWF dosyasının sürümüne göre davranışını belirler.
Şu paragraflar, Security.allowDomain()
içeren Flash Player güvenlik değişiklikleri hakkında daha fazla ayrıntı sağlar.
Sürüm 5. Etki alanları arası komut dosyası oluşturma kısıtlamaları yoktur.
Sürüm 6. Etki alanları arası komut dosyası oluşturma güvenliği sunulur. Varsayılan olarak, Flash Player uygulaması etki alanları arası komut dosyası oluşturmayı yasaklar; Security.allowDomain()
buna izin verebilir. İki dosyanın aynı etki alanında olup olmadığını belirlemek için, Flash Player her dosyanın üst etki alanını kullanır; üst etki alanı, minimum iki parça olacak şekilde birinci parça çıkarılmış olarak bu dosyanın URL'sindeki tam ana bilgisayar adıdır. Örneğin, www.mysite.com'un üst etki alanı mysite.com'dur. Security.allowDomain()
öğesine çağrı yapılmadan birbirinin komut dosyasını oluşturacak www.mysite.com ve store.mysite.com'daki SWF dosyaları.
Sürüm 7. Eşleşen üst etki alanı, eşleşen tam etki alanına değiştirilir. Yalnızca URL'lerindeki ana bilgisayar adları aynıysa iki dosyanın birbirinin komut dosyasını oluşturmasına izin verilir; aksi takdirde Security.allowDomain()
gerekir. Dosyalar tamamen aynı etki alanından yüklense de, varsayılan olarak, HTTPS olmayan URL'lerden yüklenen dosyaların artık HTTPS URL'lerinden yüklenen dosyaların komut dosyasını oluşturmasına izin verilmez. HTTPS olmayan bir dosya, indirme sırasında değiştirmeye karşı korumasız olduğundan ve kötü amaçlı şekilde değiştirilmiş bir HTTPS olmayan dosya, aksi takdirde bu tür bir onaysız değişiklikten etkilenmeyecek bir HTTPS dosyasını bozabildiğinden, bu kısıtlama, HTTPS dosyalarının korunmasına yardımcı olur. Security.allowInsecureDomain()
öğesi, erişilmekte olan HTTPS SWF dosyalarının kendi isteğiyle bu kısıtlamayı devre dışı bırakmasına olanak sağlamak için sunulmuştur ancak Security.allowInsecureDomain()
öğesinin kullanılması önerilmez.
Sürüm 8. İki önemli değişiklik alanı vardır:
Security.allowDomain()
öğesinin çağrılması artık yalnızca erişilmekte olan SWF dosyası,Security.allowDomain()
öğesini çağıran SWF dosyasıysa çapraz komut dosyası oluşturma işlemlerine izin verir. Başka bir deyişle,Security.allowDomain()
öğesini çağıran bir SWF dosyası artık yalnızca kendisine erişilmesine izin verir. Önceki sürümlerde,Security.allowDomain()
öğesinin çağrılması, erişilmekte olan SWF dosyasının,Security.allowDomain()
öğesini çağıran SWF dosyasıyla aynı etki alanında bulunan herhangi bir SWF dosyası olabildiği çapraz komut dosyası oluşturma işlemlerine izin verirdi. Eskiden,Security.allowDomain()
öğesinin çağrılması, çağıran SWF dosyasının etki alanının tamamını açardı.Security.allowDomain("*")
veSecurity.allowInsecureDomain("*")
ile joker karakter değerleri için destek eklenmiştir. Joker karakter (*) değeri, erişen dosyanın herhangi bir yerden yüklenen herhangi bir dosya olduğu çapraz komut dosyası oluşturma işlemlerine izin verir. Joker karakteri global bir izin olarak düşünün. Yerel dosya güvenlik kuralları kapsamında belirli türdeki işlemlere olanak sağlamak için joker karakter izinleri gerekir. Özel olarak belirtmek gerekirse, ağ erişimi izinlerine sahip yerel bir SWF dosyasının Internet'te bir SWF dosyasının komut dosyasını yazması için, erişilmekte olan Internet SWF dosyasının, yerel SWF dosyasının kaynağının bilinmediğini yansıtacak şekildeSecurity.allowDomain("*")
öğesini çağırması gerekir. (Internet SWF dosyası bir HTTPS URL'sinden yüklenirse, Internet SWF dosyasınınSecurity.allowInsecureDomain("*")
öğesini çağırması gerekir.)
Ara sıra şu durumla karşılaşabilirsiniz: Farklı bir etki alanından bir alt SWF dosyasını yüklersiniz ve alt SWF dosyasının üst SWF dosyasının komut dosyasını yazmasına olanak sağlamak istersiniz ancak alt SWF dosyasının son etki alanını bilmiyorsunuzdur. Örneğin yük dengeleyen yönlendirmeler veya üçüncü taraf sunucular kullandığınızda bu durum oluşabilir.
Bu durumda, Loader.load()
öğesine ilettiğiniz URLRequest nesnesinin url
özelliğini kullanabilirsiniz. Örneğin, bir üst SWF dosyasına alt SWF dosyası yüklerseniz, üst SWF dosyası için Loader nesnesinin contentLoaderInfo
özelliğine erişebilirsiniz:
Security.allowDomain(loader.contentLoaderInfo.url)
url
özelliğinin doğru değerini almak için, alt SWF dosyası yüklenmeye başlayıncaya kadar beklediğinizden emin olun. Alt SWF dosyasının ne zaman yüklenmeye başladığını belirlemek için, progress
olayını kullanın.
Bunun tam tersi bir durum da oluşabilir; yani üst öğesinin, alt SWF dosyasının komut dosyasını oluşturmasına izin vermek isteyen ancak bunun üst öğesinin etki alanının ne olacağını bilmeyen bir alt SWF dosyası oluşturabilirsiniz. Bu durumda, SWF'nin kök nesnesi olan görüntüleme nesnesinin loaderInfo
özelliğine erişebilirsiniz. Alt SWF'de, Security.allowDomain( this.root.loaderInfo.loaderURL)
öğesini çağırın. Bu durumda üst SWF dosyasının yüklenmesini beklemek zorunda değilsiniz; alt öğe yüklenene kadar üst SWF dosyası zaten yüklenmiş olur.
Flash Player 8 veya sonrası için yayın yapıyorsanız, Security.allowDomain("*")
öğesini çağırarak da bu durumları işleyebilirsiniz. Ancak bu, çağıran SWF dosyasının herhangi bir etki alanındaki başka bir SWF dosyası tarafından erişilmesine olanak sağladığından, bazen tehlikeli bir kısayol olabilir. _url
özelliğinin kullanılması genellikle daha güvenlidir.
Güvenlikle ilgili daha fazla bilgi için, bkz. Flash Player Geliştirici Merkezi Konusu: Güvenlik.
Parametreler
... domains — Erişim izni vermek istediğiniz etki alanlarını adlandıran bir veya daha fazla dize ya da URLRequest nesneleri. Tüm etki alanlarından izin vermek için özel etki alanını "*" belirtebilirsiniz.
Flash Professional'da, "*" belirtmek, Flash geliştirme aracındaki Yerel Oynatma Güvenliği için Yalnızca Ağa Erişim özelliği kullanılarak yayınlanan yerel SWF dosyalarından yerel olmayan SWF dosyalarına izin vermenin tek yoludur. Not: Joker değeri, alt etki alanları için çalışmaz. Örneğin |
Atar
SecurityError — AIR uygulaması güvenlik sanal alanındaki koddan bu yöntemin çağrılması, bir SecurityError istisnasının atılmasına neden olur. Uygulama güvenlik sanal alanı dışındaki içerikler güvenlik sanal alanındaki içeriğe öğeler arası komut dosyası oluşturma işlemi uygulayamaz.
|
İlgili API Öğeleri
allowInsecureDomain | () | yöntem |
public static function allowInsecureDomain(... domains):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tanımlı etki alanlarındaki SWF dosyalarının ve HTML dosyalarının, HTTPS protokolü aracılığıyla barındırılan, çağıran SWF dosyasındaki nesnelere ve değişkenlere erişmesine izin verir.
Flash Player, esnekliği en üst düzeye çıkarmak için allowInsecureDomain()
yöntemini sağlar ancak bu yöntemin çağrılması önerilmez. HTTPS üzerinden bir dosya sunulması, sizin ve kullanıcılarınız için birçok koruma sağlar ve allowInsecureDomain
yönteminin çağrılmasıyla bu korumalardan biri zayıflar.
Not: AIR uygulaması güvenlik sanal alanındaki koddan bu yöntemin çağrılması, bir SecurityError istisnasının atılmasına neden olur. Uygulama güvenlik sanal alanı dışındaki içerik, uygulama sanal alanında doğrudan komut dosyaları arası içerik oluşturamaz. Ancak, uygulama sanal alanı dışındaki içerik, sanal alan köprüsünü kullanarak uygulama güvenlik sanal alanındaki içerikle iletişim kurabilir.
Bu yöntem, Security.allowDomain()
ile aynı şekilde çalışır ancak erişen tarafın HTTPS olmayan protokolle yüklendiği işlemlere de izin verir ve erişilen taraf HTTPS ile yüklenir. Flash Player 7 ve sonraki sürümlerde, HTTPS olmayan dosyaların HTTPS dosyalarında komut dosyası oluşturmasına izin verilmez. allowInsecureDomain()
yöntemi, erişilmekte olan HTTPS SWF dosyası bu kısıtlamayı kullandığında, söz konusu kısıtlamayı kaldırır.
allowInsecureDomain()
öğesini yalnızca HTTPS olmayan dosyalardan HTTPS dosyalarına komut dosyası oluşturma özelliğini·etkinleştirmek için kullanın. HTTPS olmayan dosyaya erişilirken ve erişilmekte olan HTTPS dosyası aynı etki alanından sunulduğunda (örneğin, http://sitem.com adresindeki bir SWF dosyası https://sitem.com adresindeki bir SWF dosyasında komut dosyası oluşturmak istediğinde) komut dosyası oluşturma özelliğini etkinleştirmek için bunu kullanın. HTTPS olmayan dosyalar arasında veya HTTPS dosyaları arasında ya da HTTPS dosyaları ile HTTPS olmayan dosyalar arasında komut dosyası oluşturma özelliğini etkinleştirmek için bu yöntemi kullanmayın. Bu tür durumlarda allowDomain()
öğesini kullanın.
allowInsecureDomain()
öğesinin güvenlikten nasıl taviz verdiğini gösterir.
Aşağıdaki bilgilerin, çapraz komut dosyası oluşturmaya yönelik gerçek bir örnek yoluyla allowInsecureDomain()
öğesini anlamanıza yardımcı olmak üzere tasarlanmış tek bir olası senaryo olduğunu unutmayın. Bu, güvenlik mimarisiyle ilgili tüm sorunları kapsamayıp yalnızca arka plan bilgileri için kullanılmamalıdır. Flash Player Developer Center, Flash Player ve güvenlikle ilgili yoğun bilgiler içerir. Daha fazla bilgi için, bkz. Flash Player Geliştirici Merkezi Konusu: Güvenlik.
İki bileşenden oluşan bir e-ticaret sitesi oluşturduğunuzu varsayın: yalnızca genel bilgiler içerdiği için güvenli olması gerekmeyen bir katalog ve kullanıcının mali ve kişisel bilgilerini korumak için güvenli olması gereken bir alışveriş arabası/kullanıma alma bileşeni. Kataloğu http://mysite.com/catalog.swf'den ve alışveriş arabasını da https://mysite.com/cart.swf'den sunduğunuzu varsayın. Sitenize yönelik gereksinimlerden biri, üçüncü bir tarafın güvenlik mimarinizdeki bir zayıflıktan yararlanıp kullanıcılarınızın kredi kartı numaralarını çalamamasıdır.
Bir saldırganın sunucunuzla kullanıcılarınız arasına girerek kullanıcılarınızın alışveriş sepeti uygulamanıza girdiği kredi kartı numaralarını çalmaya çalıştığını varsayın. Araya giren saldırgan, örneğin bazı kullanıcılarınızın kullandığı ilkesiz bir ISP veya kullanıcının çalışma alanındaki kötü amaçlı bir yönetici, kısacası, kullanıcılarınız ile sunucularınız arasında genel Internet üzerinden iletilen ağ paketlerini görüntüleme veya değiştirme yeteneğine sahip herhangi birisi olabilir. Bu çok yaygın bir durum değildir.
cart.swf dosyası, sunucularınıza kredi kartı bilgilerini iletmek için HTTPS'yi kullanırsa, bu durumda HTTPS iletimi şifrelendiğinden, araya giren saldırgan bu bilgileri doğrudan ağ paketlerinden çalamaz. Ancak saldırgan farklı bir teknik kullanabilir: kullanıcıya teslim edilirken SWF dosyalarınızdan birinin içeriklerini değiştirme, kullanıcını bilgilerini saldırganın sahip olduğu farklı bir sunucuya ileten değiştirilmiş bir sürümle SWF dosyanızı değiştirme.
HTTPS iletimleri şifrelenmiş olmanın yanı sıra, onaysız değişikliğe karşı da korumalı olduğundan, HTTPS protokolü, diğer tüm protokoller arasında, bu “değiştirme“ saldırısının işe yaramasını önler. Araya giren bir saldırgan bir paketi değiştirirse, alan taraf değiştirmeyi algılar ve paketi atar. Böylece cart.swf dosyası HTTPS üzerinden teslim edildiğinden, saldırgan cart.swf dosyasını değiştiremez.
Ancak, HTTPS üzerinden sunulan cart.swf'de alışveriş sepetine öğeler eklemek için, HTTP üzerinden sunulan catalog.swf'deki düğmelere izin vermek istediğinizi varsayın. cart.swf dosyası bunu yapabilmek için, catalog.swf'nin, cart.swf'nin komut dosyasını yazmasına izin veren allowInsecureDomain()
öğesini çağırır. Bu eylem istenmeyen bir sonuca neden olur: catalog.swf HTTP ile teslim edildiğinden ve onaysız değişikliğe karşı korumalı olmadığından, şimdi saldırgan başlangıçta kullanıcı tarafından indirilen catalog.swf dosyasını değiştirebilir. cart.swf dosyası, allowInsecureDomain()
öğesine yapılan bir çağrıyı içerdiğinden, saldırganın değiştirilmiş catalog.swf dosyası şimdi cart.swf'nin komut dosyasını yazabilir. Değiştirilmiş catalog.swf dosyası, cart.swf'deki değişkenlere erişmek için ActionScript'i kullanarak kullanıcının kredi kartı bilgilerini ve diğer hassas verilerini okuyabilir. Değiştirilmiş catalog.swf dosyası daha sonra da bu verileri bir saldırganın sunucusuna gönderebilir.
Elbette bu uygulama tercih edilmez ancak yine de sitenizde iki SWF dosyası arasında çapraz komut dosyası oluşturulmasına izin vermek isteyebilirsiniz. allowInsecureDomain()
öğesinden kaçınmak için bu düşünsel e-ticaret sitesini yeniden tasarlamanın iki olası yolu vardır:
- Uygulamadaki tüm SWF dosyalarını HTTPS üzerinden sunma. Bu, şu ana kadarki en basit ve en güvenilir çözümdür. Açıklanan senaryoda, hem catalog.swf hem de cart.swf dosyasını HTTPS üzerinden sunarsınız. catalog.swf gibi bir dosyayı HTTP'den HTTPS'ye geçirirken daha yüksek bant genişliği tüketimi ve sunucu CPU yüküyle karşılaşabilirsiniz, ayrıca kullanıcılarınız da daha yüksek uygulama yükleme süreleriyle karşılaşabilir. Bu etkilerin şiddetini belirlemek için gerçek sunucularla deneme yapmanız gerekir; genellikle bunların her biri en fazla %10-20 daha kötü etki yaratır ve bazen bu etki oluşmayabilir de. Genellikle sunucularınızda HTTPS ivme verici donanım veya yazılım kullanarak sonuçları iyileştirebilirsiniz. Tüm işbirliği yapan SWF dosyalarının HTTPS üzerinden sunulmasının önemli bir avantajı, tarayıcıdan karmaşık içerikli uyarılar oluşturmadan HTTPS URL'sini kullanıcının tarayıcısında ana URL olarak kullanabilmenizdir. Ayrıca tarayıcının kilit simgesi görünür olarak kullanıcılarınıza yaygın ve güvenilir güvenlik göstergesi sağlar.
- HTTP'den HTTPS'ye komut dosyası oluşturma yerine HTTPS'den HTTP'ye komut dosyası oluşturmayı kullanın. Açıklanan senaryoda, kullanıcının alışveriş sepeti içeriklerini catalog.swf'de saklayabilir ve cart.swf'nin yalnızca kullanıma alma işlemini yönetmesini sağlayabilirsiniz. Kullanıma alma zamanında, cart.swf, catalog.swf'deki ActionScript değişkenlerinden sepet içeriklerini alabilir. HTTP'den HTTPS'ye komut dosyası oluşturma kısıtlaması asimetriktir; HTTP üzerinden teslim edilen catalog.swf dosyasının HTTPS üzerinden teslim edilen bir cart.swf dosyasının komut dosyasını yazmasına güvenli şekilde izin verilemese de, HTTPS cart.swf dosyası, HTTP catalog.swf dosyasının komut dosyasını yazabilir. Bu yaklaşım tüm HTTPS yaklaşımından daha hassastır; onaysız değiştirmeye karşı korumasız olduğundan, HTTP üzerinden teslim edilen bir SWF dosyasına güvenmemeye dikkat etmeniz gerekir. Örneğin, cart.swf, sepet içeriklerini açıklayan ActionScript değişkenini aldığında, cart.swf'deki ActionScript kodu, bu değişkenin beklediğiniz biçimde olmasına güvenemez. Sepet içerikleri arasında, cart.swf'nin istenmeyen eylem gerçekleştirmesine yol açabilecek geçersiz verilerin yer almadığını doğrulamanız gerekir. Ayrıca araya giren tarafın catalog.swf'yi değiştirerek (örneğin, kullanıcının sepetine öğeler yerleştirerek) cart.swf'ye geçerli ancak yanlış veriler sağlayabilme riskini de kabul etmeniz gerekir. Her zamanki kullanıma alma işlemi, sepet içeriklerini ve kullanıcının son onayının toplam maliyetini görüntüleyerek bu riski bir şekilde azaltır ancak risk tamamen ortadan kalkmaz.
Web tarayıcıları, yıllardır HTTPS ve HTTPS olmayan dosyalar arasında bir ayrımı zorlamıştır ve açıklanan senaryo, bu kısıtlama için iyi bir neden sunar. Flash Player, mutlaka yapmak zorunda olduğunuzda size bu güvenlik kısıtlamasına geçici bir çözüm bulma yeteneği sağlar ancak bunu yapmadan önce sonuçları dikkatli şekilde değerlendirmelisiniz.
Güvenlikle ilgili daha fazla bilgi için, bkz. Flash Player Geliştirici Merkezi Konusu: Güvenlik.
Parametreler
... domains — Erişim izni vermek istediğiniz etki alanlarını adlandıran bir veya daha fazla dize ya da URLRequest nesneleri. Tüm etki alanlarından izin vermek için özel etki alanını "*" belirtebilirsiniz.
"*" belirtmek, Flash geliştirme aracındaki Yerel Oynatma Güvenliği ayarı (Dosya > Yayınlama Ayarları > Flash sekmesi) için Yalnızca Ağa Erişim özelliği kullanılarak yayınlanan yerel SWF dosyalarından yerel olmayan SWF dosyalarına izin vermenin tek yoludur. Not: Joker değeri, alt etki alanları için çalışmaz. Örneğin |
Atar
SecurityError — AIR uygulaması güvenlik sanal alanındaki koddan bu yöntemin çağrılması, bir SecurityError istisnasının atılmasına neden olur. Uygulama güvenlik sanal alanı dışındaki içerikler güvenlik sanal alanındaki içeriğe öğeler arası komut dosyası oluşturma işlemi uygulayamaz.
|
İlgili API Öğeleri
loadPolicyFile | () | yöntem |
public static function loadPolicyFile(url:String):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
url
parametresi tarafından belirtilen konumda bir ilke dosyası arar. Adobe AIR ve Flash Player, uygulamaların kendisi dışındaki sunuculardan veri yüklemesine izin verip vermeyeceğini belirlemek için ilke dosyalarını kullanır. Yöntem adı loadPolicyFile()
olsa da, ilke dosyası gerektiren bir ağ isteği yapılıncaya kadar dosyanın gerçekten yüklenmeyeceğini unutmayın.
Security.loadPolicyFile()
ile Flash Player ve AIR, ilke dosyalarını şu örnekte gösterildiği gibi rastgele konumlardan yükleyebilir:
Security.loadPolicyFile("http://www.example.com/sub/dir/pf.xml");
Bu, Flash Player'ın veya AIR'in bir ilke dosyasını belirtilen URL'den almaya çalışmasına neden olur. O konumdaki ilke tarafından kabul edilen herhangi bir izin, sunucunun sanal dizin hiyerarşisindeki aynı düzeydeki veya daha altındaki tüm içeriğe uygulanır.
Örneğin, önceki kodu izleyerek bu satırlar bir istisna atmaz:
import flash.net.*; var request:URLRequest = new URLRequest("http://www.example.com/sub/dir/vars.txt"); var loader:URLLoader = new URLLoader(); loader.load(request); var loader2:URLLoader = new URLLoader(); var request2:URLRequest = new URLRequest("http://www.example.com/sub/dir/deep/vars2.txt"); loader2.load(request2);
Ancak şu kod bir güvenlik istisnası atar:
import flash.net.*; var request3:URLRequest = new URLRequest("http://www.example.com/elsewhere/vars3.txt"); var loader3:URLLoader = new URLLoader(); loader3.load(request3);
Dilediğiniz kadar ilke dosyası yüklemek için loadPolicyFile()
öğesini kullanabilirsiniz. İlke dosyası gerektiren bir isteği göz önünde bulundururken Flash Player veya AIR'in, bir isteği reddetmeden önce her zaman ilke dosyalarının indirilmesinin tamamlanmasını bekler. Son çare olarak, loadPolicyFile()
ile belirtilen herhangi bir ilke dosyasının istekte bulunma yetkisi yoksa Flash Player veya AIR, orijinal varsayılan konumlara danışır.
Flash Player, ana ilke dosyasını kontrol ederken, sunucu yanıtı için üç saniye bekler. Herhangi bir yanıt alınmazsa, Flash Player bir ana ilke dosyasının bulunmadığını varsayar. Ancak, loadPolicyFile()
öğesine yapılan çağrılar için varsayılan bir zaman aşımı değeri yoktur; Flash Player, çağrılmakta olan dosyanın varolduğunu varsayar ve bunu yüklemek için gereken süre boyunca bekler. Bu nedenle, bir ana ilke dosyasının yüklendiğinden emin olmak için, loadPolicyFile()
öğesini kullanarak ana ilke dosyasını açıkça çağırın.
Ortak olarak ayrılmış bağlantı noktalarına bağlanamazsınız. Engellenen bağlantı noktalarının tam listesi için, bkz. "Ağ İletişimi API'lerini Kısıtlama", ActionScript 3.0 Geliştirici Kılavuzu.
xmlsocket
protokolünü belirli bir bağlantı noktası numarasıyla kullanmanız, ilke dosyalarını şu örnekte gösterildiği gibi doğrudan bir XMLSocket sunucusundan almanıza olanak tanır. Soket bağlantıları, yukarıda açıklanan ayrılmış bağlantı noktası kısıtlamasına tabi değildir.
Security.loadPolicyFile("xmlsocket://foo.com:414");
Bu, Flash Player veya AIR uygulamasının bir ilke dosyasını belirtilen ana bilgisayardan ve bağlantı noktasından almaya çalışmasına neden olur. Belirtilen bağlantı noktasıyla bir bağlantı kurduktan sonra Flash Player veya AIR, bir null
baytıyla sonlandırılan <policy-file-request />
öğesini iletir. Sunucu, bir ilke dosyasını sonlandırmak için bir null bayt göndermelidir ve bağlantıyı daha sonra bağlantıyı kapatmalıdır. Sunucu bağlantıyı kapatmazsa Flash Player veya AIR, sonlandıran null
baytını aldıktan sonra bu işlemi yapar.
SWF içeriğini barındıran HTML sayfasındaki object
ve embed
etiketlerinin allowNetworking
parametresini ayarlayarak bir SWF dosyasının bu yöntemi kullanmasını önleyebilirsiniz.
Güvenlikle ilgili daha fazla bilgi için, bkz. Flash Player Geliştirici Merkezi Konusu: Güvenlik.
Parametreler
url:String — Yüklenecek ilke dosyasının URL konumu.
|
showSettings | () | yöntem |
public static function showSettings(panel:String = "default"):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Flash Player'da Güvenlik Ayarları panelini gösterir. Bu yöntem Adobe AIR'deki içerik için geçerli değildir; AIR uygulamasında bu yöntemin çağrılması herhangi bir etki oluşturmaz.
Parametreler
panel:String (default = "default ") — Görüntülemek istediğiniz Güvenlik Ayarları panelini belirten Güvenlik Paneli sınıfına ait bir değer. Bu parametreyi atlarsanız, SecurityPanel.DEFAULT kullanılır.
|
İlgili API Öğeleri
APPLICATION | Sabit |
public static const APPLICATION:String = "application"
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Lite 4 |
Dosya bir AIR uygulamasında çalışır ve o uygulamanın paketiyle (AIR dosyası) yüklenmiştir. Bu içerik AIR uygulama kaynağı dizinine dahil edilmiştir. (Buraya uygulama içeriği yüklenmiştir.)
İlgili API Öğeleri
LOCAL_TRUSTED | Sabit |
public static const LOCAL_TRUSTED:String = "localTrusted"
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Dosya bir yerel dosyadır ve Flash Player Settings Manager veya FlashPlayerTrust konfigürasyon dosyası kullanılarak kullanıcı tarafından güvenilir. Bu dosya, yerel veri kaynaklarından okuyabilir ve Internet ile iletişim kurabilir.
İlgili API Öğeleri
LOCAL_WITH_FILE | Sabit |
public static const LOCAL_WITH_FILE:String = "localWithFile"
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Bu dosya yerel bir dosyadır, kullanıcı tarafından güvenilmez ve ağ hedefiyle yayınlanmış bir SWF dosyası değildir. Adobe AIR'de yerel dosya, uygulama kaynak dizininde değildir, bu dosyalar uygulama güvenlik sanal alanına yerleştirilir. Dosya, yerel veri kaynaklarından okuyabilir, ancak Internet ile iletişim kuramaz.
İlgili API Öğeleri
LOCAL_WITH_NETWORK | Sabit |
public static const LOCAL_WITH_NETWORK:String = "localWithNetwork"
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Bu dosya yerel bir dosyadır, kullanıcı tarafından güvenilmez ve ağ hedefiyle yayınlanmış bir SWF dosyası değildir. Bu dosya, Internet ile iletişim kurabilir, ancak yerel veri kaynaklarından okuyamaz.
İlgili API Öğeleri
REMOTE | Sabit |
public static const REMOTE:String = "remote"
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Dosya bir Internet URL'sindendir ve etki alanı temelli sanal alan kurallarına göre işlem yapar.
İlgili API Öğeleri
click
nesnesinin Flash Player Ayarları'nın Yerel Depo Ayarları panelini göstermek üzere nasıl kullanılabileceğini gösterir. draw()
kullanılarak, sahne alanına turuncu bir kutu eklenir. draw()
öğesinde, Flash Player'ı fscommand()
öğesine başka bir çağrı kullanıp çıkacak şekilde yönlendirerek click
olaylarına yanıt veren clickHandler()
adlı bir click olayı dinleyicisi eklenir.
package { import flash.display.Sprite; import flash.text.TextField; import flash.events.*; import flash.system.Security; import flash.system.SecurityPanel; public class SecurityExample extends Sprite { private var bgColor:uint = 0xFFCC00; private var size:uint = 100; public function SecurityExample() { draw(); } private function draw():void { var child:Sprite = new Sprite(); child.graphics.beginFill(bgColor); child.graphics.drawRect(0, 0, size, size); child.graphics.endFill(); child.buttonMode = true; var label:TextField = new TextField(); label.text = "settings"; label.selectable = false; label.mouseEnabled = false; child.addChild(label); child.addEventListener(MouseEvent.CLICK, clickHandler); addChild(child); } private function clickHandler(event:MouseEvent):void { Security.showSettings(SecurityPanel.LOCAL_STORAGE); } } }
Tue Jun 12 2018, 01:09 PM Z