.Net Programlama Güvenlik için Dikkat Edilmesi Gerekenler
4
●84
- 06-10-2023, 12:28:19.Net için en önemli güvenlik konuları nelerdir bilgisi olanlar başlık olarak yardımcı olabilir mi?
- 06-10-2023, 13:25:10Scicek adlı üyeden alıntı: mesajı görüntüleşifrelemeden kastınız programdaki api ye yollanan tüm verilerimi şifrelemek gerekiyor?Misafir adlı üyeden alıntı: mesajı görüntüle
- 19-01-2024, 13:27:40Kimlik doğrulama veya yönetimden onay bekliyor.Merhabalar,
Söz konusu .Net olunca client uygulamaya hiçbir şekilde güvenmemenizi ve gerekli olan önemli ayarları client uygulamada barındırmamanızı tavsiye ederim.
Online uygulamalar için;
- API geliştirme
- Stored Procedure'ler ile kısıtlanmış kullanıcı üzerinden sorgular gerçekleştirme
- Çoklu faktör kimlik doğrulama (2FA)
Client uygulamanızı sunucudan alınan bir token ile çalıştırdığınızda ve ilgili token'ın bir geçerlilik süresi (örneğin 8 saat geçerlilik, süresi dolunca yeniden giriş sağlanması ve giriş işlemlerinin 2 faktörlü kimlik doğrulama ile gerçekleşmesi) tanımladığınızda güvenliği üst seviyeye çıkarmış olursunuz.
Obfuscate ile yazılımınızın kodlarını daha karmaşık hale getirebilirsiniz. Fakat yeterli değildir. Üstteki güvenlik tedbirleri mutlaka uygulamanızı tavsiye ederim. (Ücretsiz açık kaynak olan obfuscate aracının yaklaşık $1000 ücrete satılan bir obfuscate aracından daha iyi koruma sağladığını görünce obfuscate araçlarına olan güvenim azalmıştır.) Arama motorlarına .Net Obfuscator yazdığınız takdirde onlarca obfuscate aracı bulabilirsiniz.
Client uygulama içerisinde önemli verilerinizi mutlaka AES-256 ile şifreleyerek depolamanızı ve hash için minimum SHA-256'yı tercih etmenizi önemlidir. (SHA3-512 tercihimdir.)
Örnek bir proje senaryo ile alınabilecek güvenlik tedbirlerini özetlemek isterim.
1. Uzak sunucumda stored prosedürler yazılmıştır.
2. Client uygulamanın stored prosedürlere erişebilmesi için sunucuda yeni bir kullanıcı oluşturulmuştur ve ilgili kullanıcının yalnızca "Execute" yetkisi bulunmaktadır. Yani sadece prosedür ve fonksiyon çalıştırabilir. (Tablolar, view, jobs, triggers vb. göremez.)
3. Client uygulamada tüm veritabanı ve sunucu bilgileri şifrelenerek depolanır ve uygulama çalıştırıldıktan sonra veri tabanı bilgileri çözülür ve işlemler gerçekleştirilir. (Statik analizden kaçmak için kullanılır.)
4. Client uygulama uzak sunucu ile haberleşirken her zaman veriler şifreli gönderilir ve uzak sunucuda açılarak çalıştırılır.
5. Client uygulamadan uzak sunucuda bir giriş işlemi yapılacaksa (login) kullanıcı adı ve parola gönderilirken parolanın tuzlama işleminden sonra hash değeri (SHA3 tavsiyedir) alınarak gönderilir.
6. Kullanıcı adı ve parola doğrulaması yapıldıktan sonra 2 faktörlü kimlik doğrulama gerçekleştirilir. (Mümkünse 2 faktörlü kimlik doğrulama uygulaması standart TOTP uygulamalarından farklı özel geliştirilebilir (şahsen ben öyle yapıyorum) veya TOTP standart teknik kullanılır.)
7. Giriş işlemi gerçekleştirildikten sonra sunucudan client uygulamaya bir token gönderilir. (Token'a gerçeklilik süresi tanımlanır. Örneğin 4 saat sonra token yaşamı sonlandırılır.) Böylelikle token çalınsa bile uzun süre kullanılamaz.
8. Giriş işlemi gerçekleştikten sonra kullanıcının tüm işlemleri token üzerinden gerçekleştirilir.
2. madde yerine API kullanımıda gerçekleştirilebilir ve veri tabanı prosedürleri yerine api kullanılır.
+ Web sitesinde SSL sertifikası bulundurmak. (MITM saldırılarına karşı sizi korur.)
+ Client uygulamaya anti-debug fonksiyonları eklenerek olası dinamik analiz yöntemlerinden olabildiğince uygulamayı koruma altına almak.
+ Antiscreenlog ile client uygulamanın ekran görüntüsü farklı bir uygulama tarafından alınması engellenir. (bknz. https://learn.microsoft.com/en-us/wi...isplayaffinity)
Önemli Not: Şu unutulmamalıdır. Client uygulama her zaman hack işlemine maruz kalabilir. Çünkü assembly bilen bir korsan uygulamanın işlemciye gönderilen komutlarına müdahale eder. Böylelikle siz ne kadar güvenlik tedbiri alırsanız alın engelleri aşacaktır. (Her uygulama komutlarını işlemcinin anlayacağı dile (assembly) dönüştürmek zorundadır. Peki ya assembly bilen bir hacker uygulamayı kurcalıyorsa?) Önemli olan uygulama hack işlemine maruz kalsa bile veri güvenliğini sağlayabiliyor mu? Bu son derece önemli bir noktadır ve tüm planlamalarda mutlaka düşünülmesi gerekir.
Saygılarımla,