Güvenliğe genel bakış

Bir uygulamanın güvenliğini sağlamak devam eden bir işlemdir. Bir geliştiricinin bir uygulamanın tüm saldırılara karşı güvenli olduğunu garanti edeceği bir nokta asla olmayacaktır, çünkü yeni teknolojilerin gelecekte ne tür saldırılar oluşturacağını tahmin etmek mümkün değildir. Buna karşılık, bir sistemdeki güvenlik açıklarını henüz kimsenin keşfetmemiş (veya yayımlamamış olması) hiçbir güvenlik açığı olmadığı veya var olmadığı anlamına gelmez. Projenin tasarım aşamasında güvenliği planlamanız ve uygulamanın ömrü boyunca güvenliğin nasıl korunacağını planlamanız gerekir.

Güvenlik Tasarımı

Güvenli uygulamalar geliştirmenin en büyük sorunlarından biri, güvenliğin genellikle bir proje tamamlandıktan sonra uygulanması gereken bir şey olmasıdır. En başta bir uygulamaya güvenlik oluşturmamak, güvenli olmayan uygulamalara yol açar çünkü uygulamanın güvenliğini sağlayan şeylere çok az fikir verilmiştir.

Son dakika güvenlik uygulaması daha fazla hataya yol açar, yeni kısıtlamalar kapsamında yazılım bozulur veya tahmin edilmeyen işlevlere uyum sağlamak için yeniden yazılması gerekir. Düzeltilen her kod satırı yeni bir hata ekleme olanağı içerir. Bu nedenle, yeni özelliklerin geliştirilmesiyle aynı şekilde ilerleyebilmesi için geliştirme sürecinin erken aşamalarında güvenliği göz önünde bulundurmanız gerekir.

Tehdit Modelleme

Maruz kaldığı tüm olası saldırıları anlamadığınız sürece sistemi saldırılara karşı koruyamazsınız. ADO.NET uygulamanızdaki güvenlik ihlallerinin olasılığını ve sonuçları belirlemek için tehdit modelleme olarak adlandırılan güvenlik tehditlerini değerlendirme süreci gereklidir.

Tehdit modelleme üç üst düzey adımdan oluşur: saldırgan görünümünü anlama, sistemin güvenliğini karakterize etme ve tehditleri belirleme.

Tehdit modelleme, en hassas verileri kullanıma sunan en tehlikeli olanları bulmak için uygulamanızdaki güvenlik açıklarını değerlendirmeye yönelik yinelemeli bir yaklaşımdır. Güvenlik açıklarını tanımladıktan sonra, bunları önem derecesine göre sıralar ve tehditlere karşı önlem almak için öncelikli bir önlem kümesi oluşturursunuz.

Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

Kaynak Açıklama
Güvenlik Mühendisliği Portalı'nda Tehdit Modelleme sitesi Bu sayfadaki kaynaklar tehdit modelleme sürecini anlamanıza ve kendi uygulamalarınızı güvenli bir şekilde sağlamak için kullanabileceğiniz tehdit modelleri oluşturmanıza yardımcı olur

En Az Ayrıcalık İlkesi

Uygulamanızı tasarlarken, oluştururken ve dağıtırken, uygulamanızın saldırıya uğrayacağı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ı kodlardan gelir. Diğerleri, bir saldırgan tarafından kötüye kullanılan iyi niyetli kodla kaynaklanabilir. Güvenliği planlarken her zaman en kötü senaryonun gerçekleşeceğini varsayın.

Kullanabileceğiniz bir karşı ölçü, en az ayrıcalıkla çalıştırarak kodunuzun çevresine mümkün olduğunca çok duvar dikmeye çalışmaktır. En az ayrıcalık ilkesi, verilen tüm ayrıcalıkların işi yapmak için gereken en kısa süre boyunca gereken en az kod miktarına verilmesi gerektiğini belirtir.

Güvenli uygulamalar oluşturmak için en iyi yöntem, hiç izin olmadan başlamak ve ardından gerçekleştirilmekte olan belirli bir görev için en dar izinleri eklemektir. Buna karşılık, tüm izinlerle başlayıp tek tek izinlerin reddedilmesi, güvenlik açıklarının istenmeden gerekenden daha fazla izin verilmesi nedeniyle test ve bakımının zor olduğu güvenli olmayan uygulamalara yol açar.

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ın Güvenliğini Sağlama Genel güvenlik konularının bağlantılarını içerir. Ayrıca dağıtılmış uygulamaların, Web uygulamalarının, mobil uygulamaların ve masaüstü uygulamalarının güvenliğini sağlamaya yönelik konuların bağlantılarını içerir.

Kod Erişimi Güvenliği (CAS)

Kod erişim güvenliği (CAS), kodun korumalı kaynaklara ve işlemlere erişimini sınırlamaya yardımcı olan bir mekanizmadır. .NET Framework'te 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 tanır.

  • Kodun çalışması için gereken izinleri ve sahip olmak için yararlı olabilecek izinleri istemesini sağlar ve kodun hiçbir zaman sahip olması gereken izinleri belirtir.

  • Kod tarafından istenen izinlere ve güvenlik ilkesinin izin verdiği işlemlere göre yüklenen her derlemeye izin verir.

  • Kodun çağıranların belirli izinlere sahip olmasını istemesini sağlar.

  • Kodun çağıranların dijital imzaya sahip olmasını istemesini sağlar, böylece yalnızca belirli bir kuruluştan veya siteden arayanların korumalı kodu çağırmasına izin verir.

  • Çağrı yığınındaki her çağıranın verilen izinlerini çağıranların sahip olması gereken izinlerle karşılaştırarak çalışma zamanında kod üzerinde kısıtlamalar uygular.

Bir saldırı başarılı olursa oluşabilecek hasar miktarını en aza indirmek için, kodunuz için yalnızca işini yapmak için ihtiyaç duyduğu kaynaklara erişim izni veren bir güvenlik bağlamı seçin.

Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

Kaynak Açıklama
Kod Erişimi Güvenliği ve ADO.NET Kod erişim güvenliği, rol tabanlı güvenlik ve kısmen güvenilen ortamlar arasındaki etkileşimleri ADO.NET bir uygulamanın perspektifinden açıklar.
Kod Erişim Güvenliği .NET Framework'te CAS'yi açıklayan ek konuların bağlantılarını içerir.

Veritabanı Güvenliği

En düşük ayrıcalık ilkesi, veri kaynağınız için de geçerlidir. Veritabanı güvenliği için bazı genel yönergeler şunlardır:

  • Olası en düşük ayrıcalıklara sahip hesaplar oluşturun.

  • Kullanıcıların yalnızca kodun çalışması için yönetim hesaplarına erişmesine izin verme.

  • İstemci uygulamalarına sunucu tarafı hata iletileri döndürmeyin.

  • Hem istemci hem de sunucudaki tüm girişleri doğrulayın.

  • Parametreli komutları kullanın ve dinamik SQL deyimlerinden kaçının.

  • Güvenlik ihlallerine karşı uyarı almak için kullandığınız veritabanı için güvenlik denetimini ve günlüğe kaydetmeyi etkinleştirin.

Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

Kaynak Açıklama
SQL Server Güvenliği SQL Server'a yönelik güvenli ADO.NET uygulamaları oluşturmaya yönelik yönergeler sağlayan uygulama senaryolarıyla SQL Server güvenliğine genel bir bakış sağlar.
Veri Erişim Stratejileri için Öneriler Verilere erişmek ve veritabanı işlemlerini gerçekleştirmek için öneriler sağlar.

Güvenlik İlkesi ve Yönetici

Kod erişim güvenliği (CAS) ilkesinin yanlış yönetilmesi olası güvenlik zayıflıkları oluşturabilir. Bir uygulama dağıtıldıktan sonra güvenliği izleme teknikleri kullanılmalıdır ve yeni tehditler ortaya çıktıkçe riskler değerlendirilmelidir.

Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

Kaynak Açıklama
Güvenlik İlkesi Yönetimi Güvenlik ilkesi oluşturma ve yönetme hakkında bilgi sağlar.
Güvenlik İlkesi En İyi Yöntemleri Güvenlik ilkesini yönetmeyi açıklayan bağlantılar sağlar.

Ayrıca bkz.