Windows Forms'ta Güvenliğe Genel Bakış
.NET Framework yayınlanmadan önce, bir kullanıcının bilgisayarında çalışan tüm kod, bilgisayarın bir kullanıcısının sahip olduğu kaynaklara erişmek için aynı haklara veya izinlere sahip. Örneğin, kullanıcının dosya sistemine erişmesine izin verildiyse, kodun dosya sistemine erişmesine izin verilir; kullanıcının bir veritabanına erişmesine izin verildiyse kodun bu veritabanına erişmesine izin verilir. Bu haklar veya izinler, kullanıcının yerel bilgisayarda açıkça yüklediği yürütülebilir dosyalarda kod için kabul edilebilir olsa da, Internet 'ten veya yerel Intranetten gelen kötü amaçlı olabilecek kod için kabul edilebilir olmayabilir. Bu kod, izin olmadan kullanıcının bilgisayar kaynaklarına erişememelidir.
.NET Framework, bu kodun, kullanıcının sahip olduğu haklara ait izinleri veya hakları ayırt etmenizi sağlayan kod erişim güvenliği adlı bir altyapı sunar. Varsayılan olarak, Internet 'ten ve Intranetten gelen kod yalnızca kısmi güven olarak bilinerek çalışabilir. Kısmi güven bir uygulamayı bir dizi kısıtlamayla tartışmalıdır: diğer şeyler arasında, bir uygulamanın yerel sabit diske erişimi kısıtlanmıştır ve yönetilmeyen kod çalıştırılamaz. .NET Framework, kodun kimliğine göre erişim izni verilen kaynakları denetler: nereden geldiği, güçlü adlandırılmış derlemeleriçerip içermediğini ve bir sertifikayla imzalanıp imzalanmadığını ve bu şekilde devam eder.
Windows Forms uygulamaları dağıtmak için kullandığınız ClickOnce teknolojisi, kısmi güvende, tam güvende veya yükseltilmiş izinlerle kısmi güvende ç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 izin yükseltme ve güvenilir uygulama dağıtımı gibi özellikler sağlar.
.NET Framework güvenliği anlama
Kod erişimi güvenliği, kodun kaynaklandığı ve kodun kimliğinin diğer yönlerine bağlı olarak kodun farklı derecelerde güvenilmesini sağlar. Ortak dil çalışma zamanının güvenlik ilkesini belirlemede kullandığı kanıt hakkında daha fazla bilgi için bkz. kanıt. Bilgisayar sistemlerini kötü amaçlı koddan korumanıza yardımcı olur ve güvenilen kodun kasıtlı olarak veya yanlışlıkla güvenliği tehlikeye atmasını sağlar. Kod erişimi güvenliği, uygulamanızın gerçekleştirebileceği işlemler üzerinde daha fazla denetim elde etmenizi sağlar, çünkü yalnızca uygulamanız için gerekli olan izinleri belirtebilirsiniz. Kod erişim güvenliği, ortak dil çalışma zamanını hedefleyen tüm yönetilen kodları etkiler ve bu kod tek bir kod erişim-güvenlik izni denetimi yapmasa bile. .NET Framework 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 sunucusunu veya bir dosya paylaşımından doğrudan bir Windows Forms yürütülebilir dosya çalıştırıyorsa, uygulamanıza verilen güven derecesi kodun bulunduğu yere ve nasıl başlatıldığına bağlıdır. Bir uygulama çalıştığı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 koda yerel Intranet izin kümesi verilir ve Internet 'ten koda Internet izin kümesi verilir.
Not
.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 diğer tüm sürümlerinde ınternet bölgesi kodu grubu ınternet izinleri kümesini alır.
Bu izin kümelerinin her birinde verilen varsayılan izinler, varsayılan güvenlik ilkesi konusunda listelenmiştir. 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ılır. ClickOnce dağıtımı oluşturmak için kullanılan araçlar, daha önce açıklanmamış farklı güvenlik varsayılanlarına sahiptir. Daha fazla bilgi için aşağıdaki tartışmaya bakın.
Uygulamanıza verilen gerçek izinler, güvenlik ilkesi değiştirilemediğinden varsayılan değerlerden farklı olabilir; Bu, uygulamanızın bir bilgisayarda izin alabileceği ancak başka bir bilgisayarda izni olabileceği anlamına gelir.
daha güvenli bir Windows Forms uygulaması geliştirme
Güvenlik, uygulama geliştirmenin tüm adımlarında önemlidir. Güvenli kodlama yönergeleriniinceleyerek ve izleyerek başlayın.
Ardından, uygulamanızın tam güvende çalışmasına mi yoksa kısmi güvende mi çalışacağını belirleyin. Uygulamanızı tam güvende çalıştırmak, yerel bilgisayardaki kaynaklara erişmeyi kolaylaştırır, ancak uygulamanızı güvenli kodlama yönergeleri konusuna göre tasarlayamazsınız ve geliştirmeniz durumunda uygulamanızı ve kullanıcılarını yüksek güvenlik risklerine açık hale getirir. Uygulamanızı kısmi güvende çalıştırmak daha güvenli bir uygulama geliştirmeyi ve çok fazla riski azaltmayı kolaylaştırır, ancak belirli özelliklerin nasıl uygulanacağı konusunda daha fazla planlama yapılmasını gerektirir.
Kısmi güven (Internet veya yerel Intranet izin kümeleri) seçeneğini belirlerseniz, uygulamanızın bu ortamda nasıl davranmasını istediğinize karar verin. Windows Formlar, yarı güvenilir bir ortamda özellikler uygulamak için alternatif ve daha güvenli yollar sağlar. Uygulamanızın veri erişimi gibi belirli kısımları, hem kısmi güven hem de tam güven ortamları için farklı şekilde tasarlanıp yazılabilir. uygulama ayarları gibi bazı Windows Forms özellikler kısmi güvende çalışacak şekilde tasarlanmıştır. daha fazla bilgi için bkz. uygulama Ayarlar genel bakış.
Uygulamanızda kısmi güvenle izin verilmesi gereken daha fazla izin varsa, ancak tam güvende çalıştırmak istemiyorsanız, yalnızca ihtiyacınız olan ek izinleri ele alırken kısmi güvende çalıştırabilirsiniz. Örneğin, kısmi güvende çalıştırmak istiyorsanız ancak uygulamanıza kullanıcının dosya sistemindeki bir dizine salt okuma erişimi verilmesi gerekiyorsa, FileIOPermission yalnızca bu dizin için istek yapabilirsiniz. Doğru şekilde kullanıldığında, bu yaklaşım uygulamanıza daha fazla işlevsellik verebilir ve kullanıcılarınıza yönelik güvenlik risklerini en aza indirebilir.
Kısmi güvende çalışacak bir uygulama geliştirirken, uygulamanızın hangi izinlerle çalışması gerektiğini ve uygulamanızın isteğe bağlı olarak hangi izinlere sahip olacağını takip edin. Tüm izinler bilindiğinde, uygulama düzeyinde izin için bildirim temelli bir istek yapmanız gerekir. izin istemek, uygulamanız için gereken izinlere ve özel olarak istemediğiniz izinlere ilişkin .NET Framework çalışma zamanına bildirir. İzin isteme hakkında daha fazla bilgi için bkz. Izinleri isteme.
İsteğe bağlı izinler istediğinizde, uygulamanız kendisine izin verilmeyen bir eylem gerçekleştirdiğinde üretilecek olan güvenlik özel durumlarını işlemeniz gerekir. İçin uygun işleme, SecurityException uygulamanızın çalışmaya devam edebilmesini sağlar. Uygulamanız özel durumu kullanarak bir özelliğin Kullanıcı için devre dışı bırakılıp bırakılmadığını tespit edebilir. Örneğin, bir uygulama gerekli dosya izni verilmezse Kaydet menü seçeneğini devre dışı bırakabilir.
Bazen, tüm uygun izinleri mi belirleyebileceğinizi bilmeniz zordur. Örneğin, yüzeyinde zararsız gösteren bir yöntem çağrısı (örneğin, yürütme sırasında belirli bir noktada dosya sistemine erişebilme). Uygulamanızı gerekli tüm izinlerle dağıtmadıysanız, masaüstünüzde hata ayıkladığınızda, ancak dağıtıldığında başarısız olduğunda bu durum iyi bir şekilde test edebilir. .NET Framework 2,0 SDK ve Visual Studio 2005, bir uygulamanın ihtiyacı olan izinleri hesaplamak için araçlar içerir: sırasıyla Visual Studio MT.exe komut satırı aracı ve izinleri hesapla özelliği.
aşağıdaki konularda, ek Windows Forms güvenlik özellikleri açıklanır.
| Konu | Açıklama |
|---|---|
| - Windows Forms daha güvenli dosya ve veri erişimi | Kısmi güven ortamındaki dosyalara ve verilere nasıl erişebileceğinizi açıklar. |
| - Windows Forms daha güvenli yazdırma | Kısmi güven ortamındaki yazdırma özelliklerine nasıl erişebileceğinizi açıklar. |
| - Windows Forms ek güvenlik konuları | Pencere işleme, Panoyu kullanma ve kısmi güven ortamındaki yönetilmeyen koda çağrı yapma işlemlerini açıklar. |
Uygun Izinlerle uygulama dağıtma
bir istemci bilgisayara Windows Forms uygulama dağıtmanın en yaygın yolu, uygulamanızın çalışması için gereken tüm bileşenleri açıklayan bir dağıtım teknolojisidir ClickOnce. ClickOnce, uygulamanızı oluşturan derlemeleri ve dosyaları ve ayrıca uygulamanızın gerektirdiği izinleri tanımlayan, bildirimler adlı XML dosyalarını kullanır.
ClickOnce bir istemci bilgisayarda yükseltilmiş izinler istemek için iki teknoloji vardır. Her iki teknoloji de Authenticode sertifikalarının kullanımına dayanır. Sertifikalar, kullanıcılarınızın uygulamanın güvenilen bir kaynaktan geldiği bazı güvence sağlanmasına yardımcı olur.
Aşağıdaki tabloda bu teknolojiler açıklanmaktadır.
| Yükseltilmiş izin teknolojisi | Açıklama |
|---|---|
| İzin yükseltme | Uygulamanızı ilk kez çalıştırdığında kullanıcıya bir güvenlik iletişim kutusu ister. Izin yükseltme iletişim kutusu kullanıcıya uygulamayı kimin yayımladığını bildirir, böylece Kullanıcı BT 'ye ek güven verip vermeyeceğine dair bilinçli bir karar verebilir |
| Güvenilen uygulama dağıtımı | Bir istemci bilgisayarında yayımcının Authenticode sertifikasının tek seferlik bir yüklemesini gerçekleştiren sistem yöneticisini içerir. Bu noktadan itibaren, sertifikayla imzalanan tüm uygulamalar güvenilen olarak kabul edilir ve ek istem olmadan yerel bilgisayarda tam güvende çalışabilir. |
Hangi teknolojiyi seçeceğiniz, dağıtım ortamınıza göre değişir. 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ılmıştır. Uygulamanızı kısmi güven kullanarak dağıtıyorsanız veya yalnızca bazı ek izinleri kullanarak, bu varsayılan değişikliği yapmanız gerekir. dağıtımınızı yapılandırırken bu Visual Studio ya da .NET Framework SDK aracı MageUI.exe yapabilirsiniz. MageUI.exe kullanma hakkında daha fazla bilgi için bkz. izlenecek yol: el ile ClickOnce uygulaması dağıtma. ayrıca bkz. nasıl yapılır: bir ClickOnce uygulaması için özel izinleri ayarlama veya nasıl yapılır: bir ClickOnce uygulaması için özel izinleri ayarlama.
ClickOnce ve izin yükselmesinin 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, kısmi güvende hata ayıklamayı veya geliştirme ortamından kısıtlı bir izin kümesini etkinleştirebilirsiniz. ayrıca bkz. nasıl yapılır: kısıtlanmış izinlerle ClickOnce bir uygulamada hata ayıklama.