İzin denetimleriFlash Player 9 ve üstü, Adobe AIR 1.0 ve üstü Flash Player istemcisi çalışma zamanı güvenlik modeli, SWF dosyaları, yerel veriler ve Internet URL'leri gibi nesneler olan kaynaklar etrafında tasarlanmıştır. Paydaşlar, bu kaynaklara sahip olan veya bu kaynakları kullanan taraflardır. Paydaşlar kendi kaynakları üzerinde denetimler (güvenlik ayarları) uygulayabilir ve her kaynak dört paydaşa sahiptir. Flash Player, aşağıdaki resimde gösterildiği gibi, bu denetimler için kesinlikle bir yetki hiyerarşisini zorlar: Güvenlik denetimlerinin hiyerarşisi Bu, örneğin bir yönetici bir kaynağa erişimi kısıtladığında diğer paydaşların bu kısıtlamayı geçersiz kılamayacağı anlamına gelir. AIR uygulamalarında bu izin kontrolleri yalnızca AIR uygulamasının sanal alanının dışında çalıştırılan içeriğe uygulanır. Yönetimsel denetimlerBir bilgisayarın yönetici kullanıcısı (yönetimsel haklarla oturum açan kişi), bilgisayarın tüm kullanıcılarını etkileyen Flash Player güvenlik ayarlarını uygulayabilir. Ev bilgisayarı gibi, kurumsal olmayan bir ortamda genellikle yönetimsel haklara sahip tek bir kişi vardır. Kurumsal ortamda da tek tek kullanıcılar bilgisayarın yönetimsel haklarına sahip olabilir. İki tür yönetimsel kullanıcı denetimi vardır:
mms.cfg dosyasımms.cfg dosyası, yöneticilerin çeşitli yetenekleri etkinleştirmesine veya bu yeteneklere erişimi kısıtlamasına olanak sağlayan bir metin dosyasıdır. Flash Player başlatıldığında, bu dosyadan güvenlik ayarlarını okur ve işlevselliği sınırlamak için bu ayarları kullanır. mms.cfg dosyası, yöneticinin gizlilik denetimleri, yerel dosya güvenliği, soket bağlantıları, vb. gibi yetenekleri yönetmek için kullandığı ayarları içerir. SWF dosyası, Capabilities.avHardwareDisable ve Capabilities.localFileReadDisable özelliklerini çağırarak devre dışı bırakılmış yeteneklerle ilgili bazı bilgilere erişebilir. Ancak, mms.cfg dosyasındaki ayarların çoğu, ActionScript'ten sorgulanamaz. Bir bilgisayar için uygulamadan bağımsız güvenlik ve gizlilik ilkelerini zorlamak için, mms.cfg dosyasının yalnızca sistem yöneticileri tarafından değiştirilmesi gerekir. mms.cfg dosyası, uygulama yükleyicileri tarafından kullanılmak üzere tasarlanmamıştır. Yönetici ayrıcalıklarıyla çalışan bir yükleyici, mms.cfg dosyasının içeriklerini değiştirebilse de Adobe, bu tür bir kullanımın kullanıcı güvenini ihlal ettiğini düşünmekte ve yükleyici oluşturanları asla mms.cfg dosyasını değiştirmemeye teşvik etmektedir. mms.cfg dosyası şu konumda saklanır:
mms.cfg dosyası hakkında daha fazla bilgi almak için, bkz. Flash Player Yönetim Kılavuzu, www.adobe.com/go/flash_player_admin_tr. Genel Flash Player Güven Onayı diziniYönetici kullanıcılar ve yükleyici uygulamalar belirtilen yerel SWF dosyalarını tüm kullanıcılar için güvenilen olarak kaydedebilir. Bu SWF dosyaları yerel güvenilen sanal alana atanır. Diğer SWF dosyalarıyla etkileşim kurabilir ve uzak ya da yerel olmak üzere herhangi bir yerden veri yükleyebilir. Dosyalar, şu konumda, Genel Flash Player Güven Onayı dizininde güvenilen olarak atanır:
Flash Player Güven Onayı dizini, her biri satırlarda birer yol bulunacak şekilde güvenilen yolları listeleyen herhangi bir sayıda metin dosyası içerebilir. Yolların her biri tek bir SWF dosyası, HTML dosyası veya dizin olabilir. Yorum satırları # sembolüyle başlar. Örneğin, şu metni içeren bir Flash Player güven onayı konfigürasyon dosyası, belirtilen dizindeki ve tüm alt dizinlerdeki dosyaların hepsine güven onayı verir: # Trust files in the following directories: C:\Documents and Settings\All Users\Documents\SampleApp Güven onayı konfigürasyon dosyasında listelenen yolların her zaman yerel yollar veya SMB ağ yolları olması gerekir. Güven onayı konfigürasyon dosyasındaki tüm HTTP yolları yoksayılır; yalnızca yerel dosyalara güven onayı verilebilir. Çakışmaları önlemek için, her güven onayı konfigürasyon dosyasına, yükleyici uygulamaya karşılık gelen bir dosya adı verin ve .cfg dosya uzantısını kullanın. Yükleyici uygulama üzerinden yerel olarak çalışan bir SWF dosyası dağıtan geliştirici olarak siz de yükleyici uygulamanın, Genel Flash Player Güven Onayı dizinine bir konfigürasyon dosyası eklemesini sağlayarak, dağıttığınız dosyaya tam ayrıcalık verebilirsiniz. Yükleyici uygulamanın yönetimsel haklara sahip bir kullanıcı tarafından çalıştırılması gerekir. mms.cfg dosyasının aksine Genel Flash Player Güven Onayı dizini, güven onayı izinleri veren yükleyici uygulamalar için dahil edilmiştir. Hem yönetici kullanıcılar hem de yükleyici uygulamalar, Genel Flash Player Güven Onayı dizinini kullanarak güvenilen yerel uygulamalar atayabilir. Ayrıca tek tek kullanıcılar için Flash Player Güven Onayı dizinleri de vardır (bkz. Kullanıcı denetimleri). Kullanıcı denetimleriFlash Player, izinlerin ayarlanmasına yönelik üç farklı kullanıcı düzeyinde mekanizma sağlar: Ayarlar UI'si ve Ayarlar Yöneticisi ile Kullanıcı Flash Player Güven Onayı dizini. Ayarlar UI'si ve Ayarlar YöneticisiAyarlar UI'si, belirli bir etki alanının ayarlarının konfigüre edilmesine yönelik hızlı ve etkileşimli bir mekanizmadır. Ayarlar Yöneticisi, daha ayrıntılı bir arabirim sunar ve etki alanlarının çoğunun veya tümünün izinlerini etkileyen global değişiklikler yapılması yeteneğini sağlar. Ayrıca, SWF dosyası tarafından, güvenlik veya gizlilikle ilgili çalışma zamanı kararları gerektiren yeni bir izin istendiğinde, kullanıcıların bazı Flash Player ayarlarını yapabildiği iletişim kutuları görüntülenir. Ayarlar Yöneticisi ve Ayarlar Kullanıcı Arabirimi, kamera ve mikrofon ayarları, paylaşılan nesne depolama alanı ayarları, eski içerikle ilgili ayarlar vb. gibi güvenlikle ilgili seçenekler sağlar. AIR uygulamalarında Ayarlar Yöneticisi de Ayarlar kullanıcı arabirimi (UI) de kullanılmaz. Not: mms.cfg dosyasında yapılan ayarlar (bkz. Yönetimsel denetimler), Ayarlar Yöneticisi'nde yansıtılmaz.
Ayarlar Yöneticisi ile ilgili ayrıntılar için, bkz. www.adobe.com/go/settingsmanager_tr. Kullanıcı Flash Player Güven Onayı diziniKullanıcılar ve yükleyici uygulamalar belirtilen yerel SWF dosyalarını güvenilen olarak kaydedebilir. Bu SWF dosyaları yerel güvenilen sanal alana atanır. Diğer SWF dosyalarıyla etkileşim kurabilir ve uzak ya da yerel olmak üzere herhangi bir yerden veri yükleyebilir. Kullanıcı, aşağıdaki konumlarda (geçerli kullanıcıya özgü konumlar) paylaşılan nesne depolama alanıyla aynı dizinde bulunan Kullanıcı Flash Player Güven Onayı dizininde bir dosyayı güvenilen olarak atar:
Web sitesi denetimleri (ilke dosyaları)Web sunucunuzdaki verileri, diğer etki alanlarındaki SWF dosyaları için kullanılabilir duruma getirmek üzere sunucunuzda bir ilke dosyası oluşturabilirsiniz. İlke dosyası, sunucunuzda belirli bir konuma yerleştirilen bir XML dosyasıdır. İlke dosyaları, aşağıda örnekleri verilen çok sayıda varlığa erişimi etkiler:
ActionScript nesneleri iki farklı türde sunucu bağlantısı başlatır: belge tabanlı sunucu bağlantıları ve soket bağlantıları. Loader, Sound, URLLoader ve URLStream gibi ActionScript nesneleri, belge tabanlı sunucu bağlantılarını başlatır ve bu nesneler bir URL'den dosya yükler. ActionScript Socket ve XMLSocket nesneleri, yüklenen belgelerle değil akış verileriyle çalışan soket bağlantılarını oluşturur. Flash Player iki tür sunucu bağlantısını desteklediğinden, iki tür ilke dosyası vardır—URL ilke dosyaları ve soket ilke dosyaları.
Flash Player, girişimde bulunulan bağlantının kullanmak istediği aynı protokol kullanılarak ilke dosyalarının iletilmesini gerektirir. Örneğin, HTTP sunucunuza bir ilke dosyası yerleştirdiğinizde, diğer etki alanlarındaki SWF dosyalarının, HTTP sunucusu olarak buradan veri yüklemesine izin verilir. Ancak, aynı sunucuda bir soket ilkesi dosyası sağlamazsanız, diğer etki alanlarındaki SWF dosyalarının soket düzeyinde sunucuya bağlanmasını yasaklarsınız. Başka bir deyişle, bir ilke dosyasının alınma yolunun, bağlanma yoluyla aynı olması gerekir. İlke dosyası kullanımı ve sözdizimi, Flash Player 10 için yayınlanan SWF dosyaları için geçerli olduğundan, bu bölümün devamında kısaca ele alınmıştır. (Art arda yayınlanan sürümlerde Flash Player güvenliği güçlendirilmiş olduğundan, ilke dosyası uygulaması, önceki Flash Player sürümlerinde biraz daha farklıdır.) İlke dosyaları hakkında daha ayrıntılı bilgi almak için, bkz. “Flash Player 9'da İlke Dosyası Değişiklikleri” başlıklı Flash Player Developer Center konusu, www.adobe.com/go/devnet_security_tr. AIR uygulamasının sanal alanında kod yürütülmesi URL veya soketten veri almak için ilke dosyası gerekmez. Bir AIR uygulamasında uygulama dışı sanal alanda yürütülen kod için ilke dosyası gerekmez. Ana ilke dosyalarıVarsayılan olarak, Flash Player (ve AIR uygulama sanal alanında bulunmayan AIR içeriği) ilk olarak sunucunun kök dizininde crossdomain.xml adındaki bir URL ilke dosyasını ve bağlantı noktası 843'te bir soket ilke dosyasını arar. Bu konumlardan herhangi birinde bulunan dosya, ana ilke dosyası olarak adlandırılır. (Soket bağlantısı olması durumunda Flash Player, ana bağlantıyla aynı bağlantı noktasında bir soket ilke dosyasını da arar. Ancak bu bağlantı noktasında bulunan bir ilke dosyası ana ilke dosyası olarak değerlendirilmez.) Ana ilke dosyası, erişim izinlerini belirtmenin yanı sıra, bir meta-ilke deyimi de içerebilir. Meta-ilke, hangi konumların ilke dosyalarını içerebildiğini belirtir. URL ilke dosyaları için varsayılan meta-ilke “yalnızca ana” olup bu, /crossdomain.xml dosyasının sunucuda izin verilen tek ilke dosyası olduğu anlamına gelir. Soket ilke dosyaları için varsayılan meta-ilke "tümü" olup bu, ana bilgisayardaki herhangi bir soketin bir soket ilke dosyası sunabileceği anlamına gelir. Not: Flash Player 9 ve öncesinde, URL ilke dosyaları için varsayılan meta-ilke "tümü" olup bu, herhangi bir dizinin bir ilke dosyası içerebileceği anlamına gelir. Varsayılan /crossdomain.xml dosyası dışındaki konumlardan ilke dosyaları yükleyen uygulamalar konuşlandırdıysanız ve bu uygulamalar şimdi Flash Player 10'da çalışabilirse, sizin (veya sunucu yöneticisinin) ek ilke dosyalarına izin vermek için ana ilke dosyasını değiştirdiğinizden emin olun. Farklı bir meta-ilkenin nasıl belirtildiği hakkında bilgi almak için, bkz. “Flash Player 9'da İlke Dosyası Değişiklikleri” başlıklı Flash Player Developer Center konusu, www.adobe.com/go/devnet_security_tr.
SWF dosyası, Security.loadPolicyFile() yöntemini çağırarak farklı bir ilke dosya adını veya farklı bir dizin konumunu kontrol edebilir. Ancak ana ilke dosyası, hedef konumun ilke dosyaları sunabileceğini belirtmezse, söz konusu konumda bir ilke dosyası olsa da loadPolicyFile() öğesine yapılan çağrı herhangi bir etki yaratmaz. İlke dosyası gerektiren herhangi bir ağ işlemini denemeden önce loadPolicyFile() öğesini çağırın. Flash Player, ağ iletişimi isteklerini, karşılık gelen ilke dosyası girişimlerinin arkasında otomatik olarak kuyruğa alır. Bu nedenle, örneğin, bir ağ iletişimi işlemi başlatılmadan hemen önce Security.loadPolicyFile() öğesinin çağrılması kabul edilebilir. 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. Yöntem Security.loadPolicyFile() olarak adlandırılsa da, ilke dosyası gerektiren bir ağ çağrısı yayınlanmadan önce ilke dosyası yüklenmez. loadPolicyFile() öğesine yapılan çağrılar, Flash Player uygulamasına gerektiğinde ilke dosyalarını nerede arayacağını bildirir. Bir ilke dosyası isteği başlatıldığında veya tamamlandığında bildirim alamazsınız ve bunun için bir neden de yoktur. Flash Player, ilke denetimlerini eşzamansız olarak gerçekleştirir ve ilke dosyası kontrolleri başarıyla tamamlandıktan sonra otomatik olarak bağlantıların başlatılmasını bekler. İlerleyen bölümlerde, yalnızca URL ilke dosyaları için geçerli olan bilgiler yer almaktadır. Soket ilke dosyaları hakkında daha fazla bilgi almak için, bkz. Soketlere bağlanma. URL ilke dosyası kapsamıURL ilke dosyası yalnızca yüklenmiş olduğu dizin ve bu dizinin alt dizinleri için geçerli olur. Kök dizindeki bir ilke dosyası sunucunun tamamı için geçerli olur; rastgele bir alt dizinden yüklenen bir ilke dosyası ise yalnızca o dizin ve o dizinin alt dizinleri için geçerli olur. İlke dosyası yalnızca bulunduğu belirli sunucuya erişimi etkiler. Örneğin, https://www.adobe.com:8080/crossdomain.xml konumunda bulunan bir ilke dosyası yalnızca bağlantı noktası 8080'de HTTPS üzerinden www.adobe.com adresine yapılan veri yükleme çağrıları için geçerlidir. URL ilke dosyasında erişim izinlerini belirtmeİlke dosyası, tek bir <cross-domain-policy> etiketi içerir ve bu etiket de sıfır veya daha fazla <allow-access-from> etiketi içerir. Her <allow-access-from> etiketi, tam bir IP adresini, tam bir etki alanını veya bir joker etki alanını (herhangi bir etki alanı) belirten domain adında bir nitelik içerir. Joker etki alanları iki yöntemden biri kullanılarak belirtilir:
Aşağıdaki örnek, *.example.com, www.friendOfExample.com ve 192.0.34.166 konumlarındaki SWF dosyalarına erişilmesine izin veren bir URL ilke dosyasını gösterir: <?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*.example.com" /> <allow-access-from domain="www.friendOfExample.com" /> <allow-access-from domain="192.0.34.166" /> </cross-domain-policy> Bir IP adresi belirtirseniz, yalnızca o IP adresinden yüklenen ve IP sözdizimini kullanan SWF dosyalarına (örneğin, http://65.57.83.12/flashmovie.swf) erişim hakkı verilir. Etki alanı adı sözdizimini kullanan SWF dosyalarına erişim hakkı verilmez. Flash Player, DNS çözünürlüğü uygulamaz. Aşağıdaki örnekte gösterildiği gibi, herhangi bir etki alanında bulunan belgelere erişilmesine izin verebilirsiniz: <?xml version="1.0"?> <!-- http://www.foo.com/crossdomain.xml --> <cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy> Her <allow-access-from> etiketi aynı zamanda varsayılan olarak true değerine ayarlı olan isteğe bağlı secure niteliğine de sahiptir. İlke dosyanız bir HTTPS sunucusunda bulunuyorsa ve HTTPS olmayan bir sunucuda bulunan SWF dosyalarının, HTTPS sunucusundan veri yüklemesine izin vermek istiyorsanız, bu niteliği false değerine ayarlayabilirsiniz. secure niteliğinin false değerine ayarlanması, HTTPS tarafından sağlanan güvenlikten taviz verilmesine neden olabilir. Özellikle, bu niteliğin false değerine ayarlanmasıyla güvenli içerik, gözetleme ve sahtekarlık amaçlı saldırılara açık duruma getirilir. Adobe, secure niteliğini kesinlikle false değerine ayarlamamanızı önerir. Yüklenecek veriler HTTPS sunucusundaysa ancak verileri yükleyen SWF dosyası HTTP sunucusunda bulunuyorsa, Adobe, yükleyen SWF dosyasını bir HTTPS sunucusuna taşımanızı önerir. Bu işlem, güvenli verilerinizin tüm kopyalarını HTTPS koruması altında tutmanıza olanak sağlar. Ancak, yükleyen SWF dosyasını bir HTTP sunucusunda tutmanız gerektiğini düşünüyorsanız, aşağıdaki kodda gösterildiği gibi, secure="false" niteliğini <allow-access-from> etiketine ekleyin: <allow-access-from domain="www.example.com" secure="false" /> Erişime izin vermek için kullanabileceğiniz başka bir öğe de allow-http-request-headers-from etiketidir. Bu öğe, başka bir izin etki alanındaki içerikleri barındıran bir istemciye, etki alanınıza kullanıcı tanımlı başlıklar gönderme izni verir. <allow-access-from> etiketi, diğer etki alanlarına etki alanınızdan veri alma izni verirken, allow-http-request-headers-from etiketi de diğer etki alanlarına sizin veri alanınıza başlık şeklinde veri verme izni sağlar. Aşağıdaki örnekte, tüm etki alanlarının geçerli etki alanına SOAPAction başlığı göndermesine izin verilir:
<cross-domain-policy> <allow-http-request-headers-from domain="*" headers="SOAPAction"/> </cross-domain-policy> allow-http-request-headers-from deyimi ana ilke dosyasındaysa, ana bilgisayardaki tüm dizinler için geçerli olur. Aksi takdirde, yalnızca deyimi içeren ilke dosyasının dizini ve alt dizinleri için geçerli olur. İlke dosyalarını önceden yüklemeBir sunucudan veri yüklenmesi veya bir sokete bağlanılması eşzamansız bir işlemdir. Flash Player, ana işlemi başlatmadan önce ilke dosyasının indirilmesinin bitmesini bekler. Ancak görüntülerden piksel verilerinin ayıklanması veya seslerden örnek verilerin ayıklanması eşzamanlı bir işlemdir. Verileri ayıklayabilmeniz için öncelikle ilke dosyasının yüklenmesi gerekir. Ortamı yüklediğinizde, ortamın bir ilke dosyasını denetleyeceğini belirtin:
Bu parametrelerden birini ayarladığınızda, Flash Player uygulaması ilk önce bu etki alanı için önceden indirdiği ilke dosyalarını kontrol eder. Daha sonra hem <allow-access-from> deyimlerini hem de meta-ilke olup olmadığını kontrol ederek sunucudaki varsayılan konumda ilke dosyasını arar. Son olarak, Security.loadPolicyFile() yöntemine yapılan bekleyen çağrıların kapsamda olup olmadığını görmek için bu çağrıları inceler. Yazar (geliştirici) denetimleriGüvenlik ayrıcalıkları vermek için kullanılan ana ActionScript API'si, Security.allowDomain() yöntemi olup bu yöntem, belirttiğiniz etki alanlarındaki SWF dosyalarına ayrıcalık verir. Aşağıdaki örnekte, SWF dosyası, www.example.com etki alanından sunulan SWF dosyalarına erişim sağlar: Security.allowDomain("www.example.com") Bu yöntem, şu eylemler için izin verir:
Security.allowDomain() yönteminin çağrılmasının birincil amacı, dış bir etki alanında bulunan SWF dosyaları için Security.allowDomain() yöntemini çağırarak SWF dosyasının komut dosyasını yazma izni vermektir. Daha fazla bilgi için, bkz. Çapraz komut dosyası oluşturma. Security.allowDomain() yöntemine parametre olarak bir IP adresinin belirtilmesi, belirtilen IP adresinden ortaya çıkan tüm tarafların erişimine izin verilmesini sağlamaz. Bunun yerine, o IP adresine eşlenen bir etki alanının değil, yalnızca belirtilen IP adresini URL olarak içeren bir tarafın erişimine izin verilir. Örneğin, www.example.com etki alanı 192.0.34.166 IP adresiyle eşlenirse, Security.allowDomain("192.0.34.166") yöntemine yapılan bir çağrı, www.example.com adresine erişim sağlamaz. Tüm etki alanlarına erişilmesine izin vermek için, "*" joker karakterini Security.allowDomain() yöntemine iletebilirsiniz. Bu tüm etki alanlarındaki SWF dosyalarına, çağıran SWF dosyasının komut dosyasını yazma izni verdiğinden, "*" joker karakterini dikkatli kullanın. ActionScript, Security.allowInsecureDomain() adı verilen ikinci bir izin API'si içerir. Bu yöntem Security.allowDomain() yöntemiyle aynı şeyi yapar, tek fark, bu yöntem güvenli bir HTTPS bağlantısı tarafından sunulan bir SWF dosyasından çağrıldığında, ayrıca HTTP gibi güvenli olmayan bir protokolden sunulan diğer SWF dosyalarının, çağıran SWF dosyasına erişmesine de izin vermesidir. Ancak, güvenli bir protokolden (HTTPS) gelen dosyalar ile güvenli olmayan protokollerden (örn. HTTP) gelen dosyalar arasında komut dosyası oluşturulmasına izin vermek iyi bir güvenlik uygulaması değildir; bu durumda güvenli içerik, gözetleme ve sahtekarlık amaçlı saldırılara açık duruma getirilir. Bu saldırılar şu şekilde uygulanır: Security.allowInsecureDomain() yöntemi, HTTP bağlantıları üzerinden sunulan SWF dosyalarının, güvenli HTTPS verilerinize erişmesine izin verir, HTTP sunucunuz ile kullanıcılarınız arasında bulunan bir saldırgan, HTTP SWF dosyanızı kendi dosyalarından biriyle değiştirip böylece sizin HTTPS verilerinize erişebilir. Önemli: AIR uygulamasının sanal alanında kod yürütülmesi Güvenlik sınıfının allowDomain() veya allowInsecureDomain() yöntemlerinden birinin çağırılmasına izin vermez.
Güvenlikle ilgili başka bir önemli yöntem de, Flash Player uygulamasının standart olmayan bir konumda ilke dosyasını kontrol etmesini sağlayan Security.loadPolicyFile() yöntemidir. Daha fazla bilgi için, bkz. Web sitesi denetimleri (ilke dosyaları). |
|