Share via


Windows Forms'ta Güvenliğe Genel Bakış

.NET Framework'ün yayımlanmasından önce, kullanıcının bilgisayarında çalışan tüm kodlar, bilgisayar kullanıcısının sahip olduğu kaynaklara erişmek için aynı haklara veya izinlere sahipti. Örneğin, kullanıcının dosya sistemine erişmesine izin verildiyse, kodun dosya sistemine erişmesine izin verilir; kullanıcının veritabanına erişmesine izin verildiyse, kodun bu veritabanına erişmesine izin verilir. Bu haklar veya izinler, kullanıcının yerel bilgisayara açıkça yüklediği yürütülebilir dosyalardaki kodlar için kabul edilebilir olsa da, İnternet'ten veya yerel intranetten gelen kötü amaçlı olabilecek kodlar için kabul edilebilir olmayabilir. Bu kod izin olmadan kullanıcının bilgisayar kaynaklarına erişememelidir.

.NET Framework, kodun sahip olduğu izinleri veya hakları kullanıcının sahip olduğu haklardan ayırt etmenizi sağlayan Code Access Security adlı bir altyapıyı tanıtır. Varsayılan olarak, İnternet'ten ve İntranet'ten gelen kod yalnızca kısmi güven olarak bilinen bir kodda çalıştırılabilir. Kısmi güven, bir uygulamayı bir dizi kısıtlamaya tabi eder: Uygulamanın yerel sabit diske erişmesi kısıtlanır ve yönetilmeyen kodu çalıştıramaz. .NET Framework, kodun erişmesine izin verilen kaynakları bu kodun kimliğine göre denetler: nereden geldiği, Tanımlayıcı Adlandırılmış Derlemeleri olup olmadığı, bir sertifikayla imzalanıp imzalanmadığı vb.

Windows Forms uygulamalarını dağıtmak için kullandığınız ClickOnce teknolojisi, yükseltilmiş izinlerle kısmi güven içinde, tam güven içinde veya kısmi güven içinde çalışan uygulamalar geliştirmenizi kolaylaştırır. ClickOnce, uygulamanızın yerel kullanıcıdan sorumlu bir şekilde tam güven veya yükseltilmiş izinler isteyebilmesi için İzin Yükseltmesi ve Güvenilen Uygulama Dağıtımı gibi özellikler sağlar.

.NET Framework'te Güvenliği Anlama

Kod erişim güvenliği, kodun kaynağı ve kodun kimliğinin diğer yönlerine bağlı olarak kodun farklı derecelerde güvenilir olmasını sağlar. Güvenlik ilkesini belirlemek için ortak dil çalışma zamanının kullandığı kanıt hakkında daha fazla bilgi için bkz . Kanıt. Bilgisayar sistemlerinin kötü amaçlı kodlara karşı korunmasına yardımcı olur ve güvenilen kodun bilerek veya yanlışlıkla güvenliği tehlikeye atmasından korunmasına yardımcı olur. Kod erişim güvenliği ayrıca uygulamanızın gerçekleştirebileceği eylemler üzerinde daha fazla denetim sahibi olmanıza da neden olur çünkü yalnızca uygulamanızın sahip olması gereken izinleri belirtebilirsiniz. Kod erişim güvenliği, ortak dil çalışma zamanını hedefleyen tüm yönetilen kodu etkiler. Bu kod tek bir kod erişimi-güvenlik izni denetimi yapmasa bile. .NET Framework'te güvenlik hakkında daha fazla bilgi için bkz . Temel Güvenlik Kavramları ve Kod Erişimi Güvenlik Temelleri.

Kullanıcı bir Web sunucusundan veya dosya paylaşımından doğrudan bir Windows Forms yürütülebilir dosyası çalıştırıyorsa, uygulamanıza verilen güven derecesi, kodun nerede bulunduğuna ve nasıl başlatıldığına bağlıdır. Bir uygulama çalıştırıldığında otomatik olarak değerlendirilir ve ortak dil çalışma zamanından adlandırılmış bir izin kümesi alır. Varsayılan olarak, yerel bilgisayardaki koda Tam Güven izin kümesi verilir, yerel bir ağdan gelen koda Yerel İntranet izin kümesi verilir ve İnternet'ten gelen koda İnternet izin kümesi verilir.

Dekont

.NET Framework sürüm 1.0 Service Pack 1 ve Service Pack 2'de, İnternet bölgesi kod grubu Hiçbir şey izin kümesini alır. .NET Framework'ün diğer tüm sürümlerinde, İnternet bölge kodu grubu İnternet izinleri kümesini alır.

Bu izin kümelerinin her birinde verilen varsayılan izinler, Varsayılan Güvenlik İlkesi konusunda listelenir. Uygulamanın aldığı izinlere bağlı olarak, doğru şekilde çalışır veya bir güvenlik özel durumu oluşturur.

Birçok Windows Forms uygulaması ClickOnce kullanılarak dağıtılacaktır. ClickOnce dağıtımı oluşturmak için kullanılan araçlar, daha önce açıklanandan farklı güvenlik varsayılanlarına sahiptir. Daha fazla bilgi için aşağıdaki tartışmaya bakın.

Güvenlik ilkesi değiştirilebildiği için uygulamanıza verilen gerçek izinler varsayılan değerlerden farklı olabilir; Bu, uygulamanızın bir bilgisayarda izni olabileceği, ancak başka bir bilgisayarda izin verilebileceği anlamına gelir.

Daha Güvenli Bir Windows Forms Uygulaması Geliştirme

Uygulama geliştirmenin tüm adımlarında güvenlik önemlidir. Güvenli Kodlama Yönergeleri'ni gözden geçirerek ve izleyerek başlayın.

Ardından uygulamanızın tam güven içinde mi yoksa kısmi güven içinde mi çalışacağına karar verin. Uygulamanızı tam güven içinde çalıştırmak yerel bilgisayardaki kaynaklara erişmeyi kolaylaştırır, ancak uygulamanızı Güvenli Kodlama Yönergeleri konusuna göre tasarlayıp geliştirmezseniz uygulamanızı ve kullanıcılarını yüksek güvenlik riskleriyle karşı karşıya bırakır. Uygulamanızı kısmi güven içinde çalıştırmak, daha güvenli bir uygulama geliştirmeyi kolaylaştırır ve çok fazla risk azaltır, ancak belirli özelliklerin nasıl uygulanacakları konusunda daha fazla planlama gerektirir.

Kısmi güveni (İnternet veya Yerel Intranet izin kümeleri) seçerseniz, uygulamanızın bu ortamda nasıl davranmasını istediğinize karar verin. Windows Forms, yarı güvenilir bir ortamdayken özellikleri uygulamak için alternatif, daha güvenli yollar sağlar. Uygulamanızın veri erişimi gibi bazı bölümleri hem kısmi güven hem de tam güven ortamları için farklı şekilde tasarlanabilir ve yazılabilir. Uygulama ayarları gibi bazı Windows Forms özellikleri kısmi güven içinde çalışacak şekilde tasarlanmıştır. Daha fazla bilgi için bkz. Uygulama Ayarlar Genel Bakış.

Uygulamanızın kısmi güvenin izin verdiğinden daha fazla izne ihtiyacı varsa, ancak tam güven içinde çalışmak istemiyorsanız, yalnızca ihtiyacınız olan ek izinleri onaylarken kısmi güven içinde çalıştırabilirsiniz. Örneğin, kısmi güven içinde çalışmak istiyorsanız ancak uygulamanızın kullanıcının dosya sistemindeki bir dizine salt okunur erişim vermesi gerekiyorsa, yalnızca bu dizin için istekte FileIOPermission bulunabilirsiniz. Doğru kullanıldığında, bu yaklaşım uygulamanıza daha fazla işlevsellik verebilir ve kullanıcılarınız için güvenlik risklerini en aza indirir.

Kısmi güven içinde çalışacak bir uygulama geliştirirken, uygulamanızın hangi izinleri çalıştırması gerektiğini ve uygulamanızın isteğe bağlı olarak hangi izinleri kullanabileceğini izleyin. Tüm izinler bilindiğinde, uygulama düzeyinde izin için bildirim temelli bir istekte bulunmanız gerekir. İzin istemek, uygulamanızın hangi izinlere ihtiyaç duyduğu ve özellikle istemediği izinler hakkında .NET Framework çalışma zamanını bildirir. İzin isteme hakkında daha fazla bilgi için bkz . İzin İsteme.

İsteğe bağlı izinler istediğinizde, uygulamanız kendisine verilmeyen izinler gerektiren bir eylem gerçekleştirirse oluşturulacak güvenlik özel durumlarını işlemeniz gerekir. uygulamasının uygun şekilde SecurityException işlenmesi, uygulamanızın çalışmaya devam etmesini sağlar. Uygulamanız, bir özelliğin kullanıcı için devre dışı bırakılıp bırakılmayacağını belirlemek için özel durumu kullanabilir. Örneğin, gerekli dosya izni verilmediyse bir uygulama Kaydet menü seçeneğini devre dışı bırakabilir.

Bazen, tüm uygun izinleri onayladığınızdan emin olmak zordur. Örneğin, yüzeyde zararsız görünen bir yöntem çağrısı, yürütmesi sırasında bir noktada dosya sistemine erişebilir. Uygulamanızı gerekli tüm izinlerle dağıtmazsanız, masaüstünüzde hata ayıkladığınızda test edilebilir, ancak dağıtıldığında başarısız olabilir. Hem .NET Framework 2.0 SDK'sı hem de Visual Studio 2005, bir uygulamanın ihtiyaç duyduğu izinleri hesaplamaya yönelik araçlar içerir: sırasıyla MT.exe komut satırı aracı ve Visual Studio'nun İzinleri Hesapla özelliği.

Aşağıdaki konularda ek Windows Forms güvenlik özellikleri açıklanmaktadır.

Başlık Tanım
- Windows Forms'ta Daha Güvenli Dosya ve Veri Erişimi Kısmi bir güven ortamındaki dosyalara ve verilere erişmeyi açıklar.
- Windows Forms'ta Daha Güvenli Yazdırma Kısmi güven ortamında yazdırma özelliklerine erişmeyi açıklar.
- Windows Forms'ta Ek Güvenlik Konuları Kısmi güven ortamında pencere işleme, Pano kullanma ve yönetilmeyen koda çağrı yapma işlemlerini açıklar.

Uygun İzinlerle Uygulama Dağıtma

Bir Windows Forms uygulamasını istemci bilgisayara dağıtmanın en yaygın araçları, uygulamanızın çalışması için gereken tüm bileşenleri açıklayan bir dağıtım teknolojisi olan ClickOnce'dır. ClickOnce, uygulamanızı oluşturan derlemeleri ve dosyaları ve uygulamanızın gerektirdiği izinleri açıklamak için bildirimler olarak adlandırılan XML dosyalarını kullanır.

ClickOnce,istemci bilgisayarda yükseltilmiş izinler istemek için iki teknolojiye sahiptir. Her iki teknoloji de Authenticode sertifikalarının kullanımını kullanır. Sertifikalar, kullanıcılarınıza uygulamanın güvenilir bir kaynaktan geldiği konusunda biraz güvence sağlamaya yardımcı olur.

Aşağıdaki tabloda bu teknolojiler açıklanmaktadır.

Yükseltilmiş izin teknolojisi Tanım
İzin Yükseltme Uygulamanız ilk kez çalıştırıldığında kullanıcıya bir güvenlik iletişim kutusu sorar. İzin Yükseltme iletişim kutusu, kullanıcıyı uygulamayı kimin yayımladığı hakkında bilgilendirerek kullanıcıya ek güven verilip verilmeyeceği konusunda bilinçli bir karar verebilmesini sağlar
Güvenilen Uygulama Dağıtımı Sistem yöneticisinin, bir yayımcının Authenticode sertifikasının istemci bilgisayarda tek seferlik yüklemesini gerçekleştirmesini içerir. Bu noktadan sonra, sertifikayla imzalanan tüm uygulamalar güvenilir olarak kabul edilir ve ek istem olmadan yerel bilgisayarda tam güvende çalışabilir.

Seçtiğiniz teknoloji dağıtım ortamınıza bağlıdır. Daha fazla bilgi için bkz . ClickOnce Dağıtım Stratejisi Seçme.

Varsayılan olarak, Visual Studio veya .NET Framework SDK araçları (Mage.exe ve MageUI.exe) kullanılarak dağıtılan ClickOnce uygulamaları, Tam Güvene sahip bir istemci bilgisayarda çalışacak şekilde yapılandırılır. Uygulamanızı kısmi güven kullanarak veya yalnızca bazı ek izinler kullanarak dağıtıyorsanız, bu varsayılanı değiştirmeniz gerekir. Dağıtımınızı yapılandırırken bunu Visual Studio veya .NET Framework SDK aracı MageUI.exe ile yapabilirsiniz. MageUI.exe'yi kullanma hakkında daha fazla bilgi için bkz . İzlenecek Yol: ClickOnce uygulamasını el ile dağıtma. Ayrıca bkz . How to: Set Custom Permissions for a ClickOnce Application or How to: Set Custom Permissions for a ClickOnce Application.

ClickOnce ve İzin Yükseltmesinin güvenlik yönleri hakkında daha fazla bilgi için bkz . ClickOnce Uygulamalarının Güvenliğini Sağlama. Güvenilen Uygulama Dağıtımı hakkında daha fazla bilgi için bkz . Güvenilen Uygulama Dağıtımına Genel Bakış.

Uygulamayı Test Etme

Windows Forms uygulamanızı Visual Studio kullanarak dağıttıysanız, geliştirme ortamından kısmi güven veya kısıtlı izin kümesinde hata ayıklamayı etkinleştirebilirsiniz. Ayrıca bkz . Nasıl yapılır: Kısıtlı İzinlerle ClickOnce Uygulamasında Hata Ayıklama.

Ayrıca bkz.