C# Güvenlik Önerileri
Yorum Yapılmamış10/08/2008 at 12:11Kategori:.Net
MSDN dökümanları arasında dolaşırken C# ile yazdığımız kodlarda güvenlik için öneriler adlı bir yazı ilgimi çekti. Dilimin döndüğü kadarıyla burada yazmaya çalışacağım.
1.) Değişkenler arasındaki işlemlerde (toplama çıkarma..) ve diğer over-flow ihtimallerine karşı checked anahtar sözcüğü kullanılmalı.
2.) Parametre olarak her zaman kısıtlayıcı türler kullanılmalı. Örnek olarak bir metoda veri yapısı sayısını aktaracak olan parametre int yerine uint olarak tanımlanmalı.
3.) Dosya isimlerine dayalı karar vermeyin. Dosya isimleri değişik yöntemlerle kısaltılmış olabilir.
4.) Uygulama içinde kesinlikle hard code password ya da özel bilgi bulundurulmamalı.
5.) Sql Sorguları ile her giriş kontrol edilmelidir.
6.) E- mail adresi gibi girişler System.Text.RegularExpressions sınıfında bulunan fonksiyonlarla kontrol ettirilmeli.
7.) Hata yakalama sonucunda ortaya çıkan mesajlar direk olarak kullanıcıya gösterilmemeli. Çünkü bu mesajlar veri türleri ya da program işleyişi hakkında kötü amaçlı kişilere bilgiler verebilir.
8.) Uygulamanızın mümkün olan en az izinle çalışabilmesini sağlamanız gerekli. Çünkü çok az uygulama administrator girişi gerektirir.
9.) Kişisel şifreleme algoritmaları kullanmayın. System.Cryptography sınıfını kullanın.(Bu maddeye fazla katılmıyorum. En zeki siz MS çalışanları mısınız?
)
10.) Assembly lerinize güçlü isimler verin.
11.) XML veya diğer konfigurasyon dosyasında çok hassas bilgi depolamayın.
12.) Native kodun güvenli olduğuna emin olun.
13.) Delegelerinizi (Delegates) dışarı aktarırken bir uyarı kullanın.
14.) Visual Studio code analysis tool kullanarak kodlarınızı analiz ettirin. 200 e yakın tehdit ve açığın kapatıldığı görülmüştür.
Ayrıca bir öneri de benden. Yazdığımız kodların güvenliği için programın en son olarak bir dotfuscator aracından geçirilmesi gerekli. Bu araç çalışma zamanındaki kodu tekrar c# koduna dönüştüren yazılımlara karşı koruma görevini yerine getiriyor. Değişken- Fonksiyon- Özellik isimleri değiştirilerek anlamsızlaştırılıyor ve böylece kodu bir araç kullanarak elde eden kişi koddan fazla birşey anlayamıyor.