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, uygulamanın yayımcısının orijinalliğini doğrulamak ve dosyaların değiştirilmediğini kanıtlamak için uygulama ve dağıtım bildirimlerini 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 değiştirilmediğinden emin 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 tarayıcıda tanımlanır 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ıldığı bilgisayarlar için izinler otomatik olarak verilir ve kullanıcıdan istenmez. 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.

Not

.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.

Not

.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 izin eklemek, son kullanıcıdan yükleme veya güncelleştirme zamanında izin vermesi istenmesini sağlar. 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ıldığı bilgisayarlarda izinler otomatik olarak verilir ve kullanıcıdan istenmez.

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ı Proje Tasarımcısı'nın İmzalama sayfasında bulunur. Daha fazla bilgi için bkz . İmzalama Sayfası, Proje Tasarımcısı.

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, tarayıcı önbelleğinde bulundukları ve ele geçirilebildiğ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 herhangi bir kimlik doğrulama senaryosu 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 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 sorgu dizesi aracılığıyla alınan bağımsız değişkenleri, güvenli olduklarından emin olmak için bağımsız değişkenleri denetlemeden hiçbir zaman veritabanına veya komut satırına geçirmemelisiniz. 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.

Not

Sorgu dizesi bağımsız değişkenleri başlangıçta bir ClickOnce uygulamasına geçirmenin tek yoludur. Komut satırından 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.