Derleme güvenliği hakkında dikkate alınması gerekenler
Bir derleme oluşturduğunuzda, derlemenin çalışması için gereken bir izin kümesi belirtebilirsiniz. Bir derlemeye belirli izinlerin verilip verilmediği kanıta göre belirlenir.
Kanıtın kullanıldığı iki farklı yol vardır:
Giriş kanıtı yükleyici tarafından toplanan kanıtla birleştirilerek ilke çözümlemesi için kullanılacak olan son kanıt kümesini oluşturur. Bu semantiği kullanan yöntemler Assembly.Load, Assembly.LoadFrom ve Activator.CreateInstance'tır.
Giriş kanıtı, ilke çözümlemesi için kullanılan son kanıt kümesi olarak değiştirilmeden kullanılır. Bu semantiği kullanan yöntemler Assembly.Load(byte[]) ve AppDomain.DefineDynamicAssembly() değerlerini içerir.
İsteğe bağlı izinler, derlemenin çalıştırılacağı bilgisayarda ayarlanan güvenlik ilkesi tarafından verilebilir. Kodunuzun tüm olası güvenlik özel durumlarını işlemesini istiyorsanız, aşağıdakilerden birini yapabilirsiniz:
Kodunuzun sahip olması gereken tüm izinler için bir izin isteği ekleyin ve izinler verilmezse gerçekleşecek yükleme zamanı hatasını önden işleyin.
Kodunuzun ihtiyacı olabilecek izinleri almak için bir izin isteği kullanmayın, ancak izinler verilmezse oluşacak güvenlik özel durumlarını işlemeye hazır olun.
Not
Güvenlik karmaşık bir alandır ve pek çok seçeneğiniz vardır. Daha fazla bilgi için bkz . Temel Güvenlik Kavramları.
Yükleme zamanında derlemenin kanıtı güvenlik ilkesine giriş olarak kullanılır. Güvenlik ilkesi, kuruluş ve bilgisayar yöneticisinin yanı sıra kullanıcı ilkesi ayarları tarafından oluşturulur ve yürütülürken tüm yönetilen koda verilen izin kümesini belirler. Derlemenin yayımcısı için (imza aracı oluşturulmuş bir imzaya sahipse), derlemenin indirildiği Web sitesi ve bölge (Internet Explorer kavramıydı) için veya derlemenin kesin adı için güvenlik ilkesi oluşturulabilir. Örneğin bir bilgisayarın yöneticisi, bir Web sitesinden indirilen ve belirli bir yazılım şirketi tarafından imzalanan tüm kodların bir bilgisayardaki veritabanına erişmesine izin veren, ancak bilgisayarın diskine yazmasına izin vermeyen bir güvenlik ilkesi belirleyebilir.
Tanımlayıcı adlandırılmış derlemeler ve imzalama araçları
Uyarı
Güvenlik için tanımlayıcı adlara güvenmeyin. Yalnızca benzersiz bir kimlik sağlar.
Derlemeyi iki farklı ama tamamlayıcı yolla imzalayabilirsiniz: tanımlayıcı bir adla veya SignTool.exe (İmza Aracı) kullanarak. Bir derlemeyi tanımlayıcı adla imzalamak, derleme bildirimini içeren dosyaya ortak anahtar şifrelemesi ekler. Tanımlayıcı ad imzalaması ad benzersizliğini doğrulamaya, ad sahtekarlığını önlemeye ve bir referans çözüldüğünde çağıranlara kimlik sağlamaya yardımcı olur.
Hiçbir güven düzeyi kesin bir adla ilişkilendirilmemiştir ve bu da SignTool.exe (İmza Aracı) önemli hale getirir. İki imzalama aracı, bir yayımcının kimliğini üçüncü taraf bir yetkiliye kanıtlamasını ve bir sertifika almasını gerektirir. Bu sertifika ardından dosyanıza katıştırılır ve bir yönetici tarafından kodunuzun orijinalliğine güvenip güvenmemeye karar vermek için kullanılabilir.
Bir derlemeye SignTool.exe (İmza Aracı) kullanılarak oluşturulan bir tanımlayıcı ad ve dijital imza verebilir veya tek başına kullanabilirsiniz. İki imzalama aracı aynı anda yalnızca tek bir dosya imzalayabilir; bir çoklu dosya derlemesi için derleme bildirimini içeren dosyayı imzalarsınız. Tanımlayıcı ad, derleme bildirimini içeren dosyada depolanır, ancak SignTool.exe (İmza Aracı) kullanılarak oluşturulan imza, derleme bildirimini içeren taşınabilir yürütülebilir (PE) dosyasında ayrılmış bir yuvada depolanır. SignTool.exe (İmza Aracı) kullanarak bir derlemenin imzalanması, önceden SignTool.exe (İmza Aracı) oluşturulan imzaları kullanan bir güven hiyerarşiniz varsa veya ilkeniz yalnızca anahtar bölümü kullandığında ve güven zincirini denetlemediğinde kullanılabilir (tanımlayıcı bir adla veya kesin ad olmadan).
Not
Bir derleme üzerinde hem tanımlayıcı ad hem de bir imzalama aracı imzası kullanırken, tanımlayıcı ad önce atanmalıdır.
Ortak dil çalışma zamanı bir karma doğrulaması da gerçekleştirir; derleme bildirimi derlemeyi oluşturan tüm dosyaların listesini, her dosyanın bildirim oluşturulduğu zamanki karması ile birlikte içerir. Dosyaların her biri yüklenirken, içindekilerin karması alınır ve bildirimde saklanan karma değeriyle karşılaştırılır. Eğer iki karma eşleşmezse, derleme yüklemesi başarısız olur.
SignTool.exe (İmza Aracı) kullanarak güçlü adlandırma ve imzalama, dijital imzalar ve sertifikalar aracılığıyla bütünlüğü garanti eder. Belirtilen tüm teknolojiler, yani karma doğrulama, güçlü adlandırma ve SignTool.exe (İmzaLama Aracı) kullanarak imzalama, derlemenin hiçbir şekilde değiştirilmediğinden emin olmak için birlikte çalışır.