Güvenliğe genel bakış
Uygulamanın güvenliğini sağlamak, devam eden bir işlemdir. Bir geliştiricinin bir uygulamanın tüm saldırılardan güvenli olduğunu garanti edebildiği bir nokta olmaz. Bu, yeni teknolojilerin ne tür gelecekte yeni teknolojiler sunabileceğini tahmin etmek olanaksızdır. Bunun tersine, bir sistemde hiç kimse henüz keşfedilmiş (veya yayımlanmadığı) güvenlik kusuru yok veya var olmadığı anlamına gelmez. Projenin tasarım aşamasında güvenlik planlaması yapmanız ve güvenliğin uygulamanın kullanım ömrü boyunca nasıl bakımının planlanacağını planlamanız gerekir.
Güvenlik için tasarım
Güvenli uygulamalar geliştirmenin en büyük sorunlarından biri, güvenlik genellikle bir proje kod tamamlandıktan sonra uygulamaya yönelik bir şeydir. Bir uygulamayı güvenli hale getirmeye yönelik olarak düşündüler verilmediği için, bilinemeyebilir 'teki bir uygulamaya güvenlik, güvenli olmayan uygulamalara yönelik olarak oluşturulmamalıdır.
Son dakikalık güvenlik uygulamaları, yeni kısıtlamalar kapsamında yazılım kesildiği veya beklenmeyen işlevlere uyum sağlamak için yeniden yazılması gerektiği için daha fazla hataya yol açar. Düzeltilen kodun her satırı, yeni bir hata tanıtma olasılığını içerir. Bu nedenle, yeni özelliklerin geliştirilmesinde ilerlemeniz için geliştirme sürecinin başlarında güvenliği göz önünde bulundurmanız gerekir.
Tehdit modelleme
Kullanıma sunulan tüm olası saldırıları anlamadığınız takdirde bir sistemi saldırılara karşı koruyamazsınız. tehdit modelleme olarak adlandırılan güvenlik tehditlerini değerlendirme işlemi, ADO.NET uygulamanızda güvenlik ihlallerinin olasılığını ve kollerini belirlemede gereklidir.
Tehdit modelleme üç üst düzey adımdan oluşur: duyuru görünümünü anlama, sistemin güvenliğini belirleme ve tehditleri belirleme.
Tehdit modellemesi, en önemli verileri kullanıma sunduklarında, uygulamanızdaki güvenlik açıklarını en çok tehlikeli olanları bulmaya yönelik yinelemeli bir yaklaşımdır. Güvenlik açıklarını tanımladıktan sonra, bunları önem derecesine göre derecelendirdikten sonra tehditleri sayaca yönelik öncelikli bir karşı önlem kümesi oluşturursunuz.
Daha fazla bilgi için aşağıdaki kaynaklara bakın:
| Kaynak | Açıklama |
|---|---|
| Güvenlik Mühendisliği portalındaki tehdit modelleme sitesi | Bu sayfadaki kaynaklar, tehdit modelleme sürecini anlamanıza yardımcı olur ve kendi uygulamalarınızı güvenli hale getirmek için kullanabileceğiniz tehdit modellerini derleyebilirsiniz |
En az ayrıcalık Ilkesi
Uygulamanızı tasarladığınızda, yapılandırdığınızda ve dağıttığınızda, uygulamanızın saldırıya uğradığını varsaymalısınız. Bu saldırılar genellikle kodu çalıştıran kullanıcının izinleriyle yürütülen kötü amaçlı koddan gelir. Diğerleri, bir saldırgan tarafından yararlanılabilen iyi şekilde kod içerebilir. Güvenliği planlarken, her zaman en kötü durum senaryosunun gerçekleşeceğini kabul eder.
Kullanabileceğiniz bir sayaç ölçüsü, en az ayrıcalıkla çalışırken kodunuzun etrafında çok sayıda duvarı kullanmayı denemenize olanak tanır. En az ayrıcalık ilkesi, verilen ayrıcalıkların, işin tamamlanması için gereken en kısa süre için gerekli olan en az kod miktarına verilmesi gerektiğini belirtir.
Güvenli uygulamalar oluşturmak için en iyi yöntem, hiçbir izin olmadan ve sonra gerçekleştirilen belirli bir görev için en dar izinleri ekleyecek şekilde başlatılır. Buna karşılık, tüm izinlerle başlayıp, her birinin reddedilmesi, güvenli olmayan uygulamalara, gerekenden daha fazla izin verilmesinin istenmeden daha fazla izin verilmesinin mevcut olmasından kaynaklanır.
Uygulamalarınızın güvenliğini sağlama hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:
| Kaynak | Açıklama |
|---|---|
| Uygulamaların güvenliğini sağlama | Genel güvenlik konularına bağlantılar içerir. Ayrıca dağıtılmış uygulamalar, Web uygulamaları, mobil uygulamalar ve masaüstü uygulamalarının güvenliğini sağlamaya yönelik konulara bağlantılar içerir. |
Kod Erişimi Güvenliği (CAS)
Kod erişim güvenliği (CAS), kodun korumalı kaynaklara ve işlemlere erişimi sınırlamaya yardımcı olan bir mekanizmadır. .NET Framework, CAS aşağıdaki işlevleri gerçekleştirir:
Çeşitli sistem kaynaklarına erişme hakkını temsil eden izinleri ve izin kümelerini tanımlar.
Yöneticilerin, izin kümelerini kod gruplarıyla (kod grupları) ilişkilendirerek güvenlik ilkesini yapılandırmasına olanak sağlar.
Kodun çalışması için gereken izinleri ve olması gereken izinleri ve kodun hiçbir şekilde sahip olması gereken izinleri belirtmesini sağlar.
Kod tarafından istenen izinlere ve güvenlik ilkesi tarafından izin verilen işlemlere göre yüklenen her derleme için izin verir.
Kodun çağıranlarının belirli izinlere sahip olduğunu talep etmesini sağlar.
Kod çağıranlarının dijital imzaya sahip olmasını talep etmesini sağlar ve böylece yalnızca belirli bir kuruluştan veya siteden gelen çağıranların korunan kodu aramasını sağlar.
Çağrı yığınında her çağıranın verilen izinlerini çağıranların sahip olması gereken izinlerle karşılaştırarak çalışma zamanında kod kısıtlamalarını zorlar.
Bir saldırının başarılı olması durumunda oluşabilecek hasar miktarını en aza indirmek için, kodunuz için yalnızca işlerini yapmak için ihtiyaç duymakta olan kaynaklara erişim veren bir güvenlik bağlamı seçin ve daha fazla bilgi edinebilirsiniz.
Daha fazla bilgi için aşağıdaki kaynaklara bakın:
| Kaynak | Açıklama |
|---|---|
| Kod Erişimi Güvenliği ve ADO.NET | ADO.NET uygulamasının perspektifinden kod erişimi güvenliği, rol tabanlı güvenlik ve kısmen güvenilen ortamlar arasındaki etkileşimleri açıklar. |
| Kod erişim güvenliği | .NET Framework CA 'ları açıklayan ek konuların bağlantılarını içerir. |
Veritabanı güvenliği
En az ayrıcalık ilkesi de veri kaynağınız için geçerlidir. Veritabanı güvenliği için bazı genel yönergeler şunları içerir:
Olası en düşük ayrıcalıklara sahip hesaplar oluşturun.
Kullanıcıların yalnızca kod çalışmasını sağlamak için yönetim hesaplarına erişmesine izin vermeyin.
İstemci uygulamalarına sunucu tarafı hata iletileri döndürme.
Hem istemcide hem de sunucuda tüm girişleri doğrulayın.
parametreli komutları kullanın ve dinamik SQL deyimlerden kaçının.
Herhangi bir güvenlik ihlallerine uyarı almak için kullandığınız veritabanı için güvenlik denetimini ve günlük kaydını etkinleştirin.
Daha fazla bilgi için aşağıdaki kaynaklara bakın:
| Kaynak | Açıklama |
|---|---|
| SQL Server Güvenliği | SQL Server hedef alan güvenli ADO.NET uygulamalar oluşturmaya yönelik rehberlik sağlayan uygulama senaryolarında SQL Server güvenliğe genel bakış sağlar. |
| veri erişimi stratejileri için Öneriler | Verilere erişmek ve veritabanı işlemlerini gerçekleştirmek için öneriler sağlar. |
Güvenlik Ilkesi ve yönetimi
Kod erişimi güvenliği (CAS) ilkesini yanlış yönetmek, güvenlik zayıflığı oluşturabilir. Bir uygulama dağıtıldıktan sonra güvenlik izleme teknikleri kullanılmalıdır ve yeni tehditler ortaya çıktı olarak değerlendirilir.
Daha fazla bilgi için aşağıdaki kaynaklara bakın:
| Kaynak | Açıklama |
|---|---|
| Güvenlik Ilkesi yönetimi | Güvenlik ilkesi oluşturma ve yönetme hakkında bilgi sağlar. |
| En Iyi Güvenlik Ilkesi uygulamaları | Güvenlik ilkesini yönetmeyi açıklayan bağlantılar sağlar. |