ClickOnce uygulamalarını koruma

ClickOnce uygulamaları, kodun korumalı kaynaklara ve işlemlere erişimini sınırlamaya yardımcı olmak için .NET Framework'te kod erişimi güvenlik kısıtlamalarına tabidir. Bu nedenle, ClickOnce uygulamalarınızı buna göre yazmak için kod erişimi güvenliğinin etkilerini anlamanız önemlidir. Uygulamalarınız erişim için Internet ve Intranet gibi tam güven veya kısmi bölgeler kullanabilir.

Ayrıca ClickOnce, uygulama yayımcısının özgünlüğünü doğrulamak ve dosyaların karışmadığını ispatlamak üzere dağıtım bildirimleri ve uygulamayı imzalamak için sertifikalar kullanır. İmzalama isteğe bağlı bir adımdır; bu, bildirimler üretildikten sonra uygulama dosyalarını değiştirmeyi kolaylaştırır. Ancak, imzalı bildirimler olmadan, uygulama yükleyicisinin ortadaki adam güvenlik saldırılarında müdahaleye uğramadığından olmak zordur. Bu nedenle, uygulamalarınızı güvenlik altına almak için uygulama ve dağıtım bildirimlerinizi imzalamanızı öneririz.

Bölgeler

ClickOnce teknolojisi kullanılarak dağıtılan uygulamalar, güvenlik bölgesi tarafından tanımlanan bir dizi izin ve eylemle sınırlıdır. Güvenlik bölgeleri, Internet Explorer'da tanımlanmış ve uygulamanın konumunu temel alır. Aşağıdaki tablo dağıtım konumunu temel alan varsayılan izinleri listeler:

Dağıtım Konumu Güvenlik Bölgesi
Web'den çalıştırın Internet Bölgesi
Web'den yükleyin Internet Bölgesi
Ağ dosya paylaşımından yükleyin Yerel Intranet bölgesi
CD-ROM'dan yükleyin Tam Güven

Varsayılan izinler uygulamanın özgün sürümüyle dağıtılan konumu temel alır; uygulama güncelleştirmeleri de bu izinleri devralır. Uygulama Web veya ağ konumundan güncelleştirmeleri denetlemek için yapılandırılmış ve daha yeni bir sürüm varsa, özgün yükleme tam güven izinleri yerine Internet ve Intranet bölgesi için izinleri alabilir. Kullanıcıların uyarılmasını önlemek için, sistem yöneticisi belirli bir uygulama yayımcısını güvenilir kaynak olarak tanımlayan bir ClickOnce dağıtım ilkesi belirtebilir. Bu ilkenin dağıtılmış olduğu bilgisayarlar için, izinler otomatik olarak verilecek ve kullanıcı uyarılmayacaktır. Daha fazla bilgi için bkz . Güvenilen Uygulama Dağıtımına Genel Bakış. Güvenilir uygulama dağıtımını yapılandırmak için, sertifika makine veya kuruluş düzeyinde yüklenebilir. Daha fazla bilgi için bkz . Nasıl yapılır: ClickOnce Uygulamaları için İstemci Bilgisayara Güvenilen Yayımcı Ekleme.

Dekont

.NET Core ve .NET 5 veya üzeri için ClickOnce'da bu özellik desteklenmez. Daha fazla bilgi için bkz . .NET için ClickOnce.

Kod erişimi güvenlik ilkeleri

Bir uygulamanın izinleri, uygulama bildiriminin <trustInfo> Öğesi öğesindeki ayarlar tarafından belirlenir. Visual Studio, projenin Güvenlik özelliği sayfasındaki ayarlara göre bu bilgileri otomatik olarak oluşturur. ClickOnce uygulamasına yalnızca istediği belirli izinler verilir. Örneğin, dosya erişiminin tam güven izinlerini gerektirdiği yerde uygulama tam güven izinleri isterse, uygulamaya tam güven izinleri değil de sadece dosya erişim izni verilir. ClickOnce uygulamanızı geliştirirken, yalnızca uygulamanın ihtiyaç duyduğu belirli izinleri istediğinizden emin olmanız gerekir. Çoğu durumda, uygulamanızı kısmi güvenle sınırlamak için Internet veya yerel Intranet bölgelerini kullanabilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: ClickOnce uygulaması için güvenlik bölgesi ayarlama. Uygulamanız özel izinleri gerektiriyorsa, özel bir bölge oluşturabilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: ClickOnce uygulaması için özel izinleri ayarlama.

Dekont

.NET Core ve .NET 5 veya üzeri için ClickOnce'da bu özellik desteklenmez. Daha fazla bilgi için bkz . .NET için ClickOnce.

Uygulamanın dağıtıldığı bölge için varsayılan izin kümesinin parçası olmayan bir izni dahil etme, son kullanıcının güncelleme ve yükleme zamanında iznin verilmesi için uyarılmasına sebep olur. Kullanıcıların uyarılmasını önlemek için, sistem yöneticisi belirli bir uygulama yayımcısını güvenilir kaynak olarak tanımlayan bir ClickOnce dağıtım ilkesi belirtebilir. Bu ilkenin dağıtılmış olduğu bilgisayarlar üzerinde, izinler otomatik olarak verilecek ve kullanıcı uyarılmayacaktır.

Geliştirici olarak, uygulamanızın uygun izinlerle çalıştığından emin olmak sizin sorumluluğunuzdur. Uygulama çalışma zamanı sırasında bir bölge dışında izinler isterse, güvenlik özel durumu ortaya çıkabilir. Visual Studio, hedef güvenlik bölgesinde uygulamanızda hata ayıklamanıza olanak tanır ve güvenli uygulamalar geliştirme konusunda yardım sağlar. Daha fazla bilgi için bkz . System.Deployment.Application kullanan ClickOnce uygulamalarında hata ayıklama.

Kod erişim güvenliği ve ClickOnce hakkında daha fazla bilgi için bkz . ClickOnce uygulamaları için kod erişim güvenliği.

Kod imzalama sertifikaları

ClickOnce dağıtımını kullanarak bir uygulama yayımlamak için, ortak/özel anahtar çifti kullanarak uygulama ve dağıtım bildirimlerini imzalayabilirsiniz. Bildirim imzalama araçları Project Tasarım Aracı'nin İmzalama sayfasında bulunabilir. Daha fazla bilgi için bkz. İmzalama Sayfası, Proje Tasarım Aracı.

Bildirimler imzalandıktan sonra, Authenticode imzasına bağlı yayımcı bilgisi uygulamanın güvenilir bir kaynaktan olduğunu kullanıcıya göstermek için izinler iletişim kutusunda gösterilir.

ClickOnce ve sertifikalar hakkında daha fazla bilgi için bkz . ClickOnce ve Authenticode.

form tabanlı kimlik doğrulaması ASP.NET

Her kullanıcının hangi dağıtımlara erişebileceğini denetlemek istiyorsanız, Web sunucusunda dağıtılan ClickOnce uygulamalarına anonim erişimi etkinleştirmemelisiniz. Alternatif olarak, kullanıcı erişimini bir kullanıcı kimliği üzerinde yüklenmiş dağıtımlar için, Windows kimlik doğrulaması kullanarak etkinleştirebilirsiniz.

ClickOnce, kalıcı tanımlama bilgileri kullandığından ASP.NET form tabanlı kimlik doğrulamasını desteklemez; Bunlar, Internet Explorer önbelleğinde bulundukları ve ele geçirilebileceği için bir güvenlik riski oluşturur. Bu nedenle, ClickOnce uygulamalarını dağıtıyorsanız, Windows kimlik doğrulamasının yanı sıra tüm kimlik doğrulama senaryoları desteklenmez.

Bağımsız değişkenleri geçirme

Bir ClickOnce uygulamasına bağımsız değişkenler geçirmeniz gerekiyorsa ek bir güvenlik konusu oluşur. ClickOnce, geliştiricilerin Web üzerinden dağıtılan uygulamalara bir sorgu dizesi sağlamasına olanak tanır. Sorgu dizesi, uygulamayı başlatmak için kullanılan URL'nin sonunda bir dizi ad-değer çiftleri şeklini alır:

http://servername.adatum.com/WindowsApp1.application?username=joeuser

Varsayılan olarak, sorgu dizesi bağımsız değişkenleri devre dışıdır. Bunları etkinleştirmek için özniteliğin trustUrlParameters uygulamanın dağıtım bildiriminde ayarlanması gerekir. Bu değer Visual Studio'dan ve MageUI.exe'den ayarlanabilir. Sorgu dizelerini geçirmeyi etkinleştirme hakkında ayrıntılı adımlar için bkz . Nasıl yapılır: Çevrimiçi ClickOnce uygulamasında sorgu dizesi bilgilerini alma.

Bir komut satırı veya veritabanı için olan sorgu dizesi aracılığıyla elde edilen bağımsız değişkenleri güvenli oldukları konusunda emin olmadan geçirmeyin. Güvenli olmayan bağımsız değişkenler rasgele komutları çalıştırarak uygulamanızı yönetmek için kötü amaçlı kullanıcılara izin verebilecek veritabanı ve komut satırı kaçış karakterlerini içeren dizelerdir.

Dekont

Sorgu dizesi bağımsız değişkenleri başlangıçta bir ClickOnce uygulamasına geçirmenin tek yoludur. Komut satırından bir ClickOnce uygulamasına bağımsız değişken geçiremezsiniz.

Karartılmış derlemeleri dağıtma

Visual Studio, kod gizleme ve etkin koruma önlemleri aracılığıyla ClickOnce uygulamalarınızı korumak için kullanabileceğiniz ücretsiz PreEmptive Protection - Dotfuscator Community'yi içerir. Ayrıntılar için dotfuscator topluluk kullanıcı kılavuzunun ClickOnce bölümüne bakın.