C# Güvenli MySQL Bağlantısı Nasıl Sağlanır?

Engin.

Kilopat
Katılım
18 Haziran 2016
Mesajlar
1.978
Makaleler
2
Çözümler
10
Selam. C# projemde veritabanı olarak MySQL kullanacağım. Fakat bağlantıyı yaparken veritabanının hostu, kullanıcı adı, şifresi gibi bilgileri girmemiz gerekiyor. Bu bilgileri dümdüz girdiğimiz takdirde program decompile edilince kabak gibi açığa çıkıyor.

Ben bu veritabanı bağlantısını nasıl güvenli bir şekilde, decompile edildiğinde bile açık açık yazmayacak şekilde güvenli olarak sağlayabilirim? Sunucu daha doğrusu veri tabanında ve programımda yapmam gereken güvenlik önlemleri nelerdir? Teşekkür ederim.
 
  1. Bağlantıyı nasıl kuruyorsunuz?
  2. Connection String kullanmıyor musunuz?
  3. Bu bir form uygulaması mı?
  1. Bağlantıyı SqlConnection con = new SqlConnection("baglantı kodu"); gibi klasik bir yöntemle kuruyorum.
  2. Connection String dediğiniz şey string connectionString = "bağlantı cümlesi"; şeklinde olan şey mi?
  3. Bu bir WPF uygulaması. Yani evet, form uygulaması.
Zaten bağlantıyı normal şekilde yapabilirim sorun olmuyor. Fakat decompile edildiğinde bütün kodlar private, public, protected fark etmeksizin hepsi gözüküyor.
 
Şimdi şöyle ki bu bağlantıyı kod satırlarında değil, uygulamanın config bölümünde kurmanız lazım. Ayrıca SQL commandlar ile çalışmak yerine Entity Framework ve LINQ yapısını kullanırsanız sorununuz çözülecektir.

Yani bu şekilde uygulama bir kere açıldığında bağlantı kurulacak ve bir daha bağlanma ihtiyacı kalmayacak. Bu videoyu izleyin. Böylece nesne tabanlı veri tabanı tasarımına geçiş yapmış olacaksınız. Benzer yöntemi MySQL ile de yapabileceğinizi düşünüyorum. Onu araştırmadım ama bu şekilde bir araştırma yaptığınızda sonuca ulaşabilirsiniz.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
Client tarafta secret tutulmaz.
DB ye direkt baglanmamali.
Ayrica DB de remote baglantilari kabul etmemeli. Aninda hacklenirsin.
 
Client tarafta secret tutulmaz.
DB ye direkt baglanmamali.
Ayrica DB de remote baglantilari kabul etmemeli. Aninda hacklenirsin.
İşte tam olarak bu problemden dolayı ne yapmam gerektiğini öğrenmeye çalışıyorum hocam. Sizin bir öneriniz var mı? Nasıl bir yol izlemem gerekiyor?
 
Son düzenleme:
İşte tam olarak bu problemden dolayı ne yapmam gerektiğini öğrenmeye çalışıyorum hocam. Sizin bir öneriniz var mı? Nasıl bir yol izlemem gerekiyor.
Mesela kendi sunucunda duran bir web servis yazabilirsin. Bu servis ASP.NET de olabilir, PHP de.
 
İşte tam olarak bu problemden dolayı ne yapmam gerektiğini öğrenmeye çalışıyorum hocam. Sizin bir öneriniz var mı? Nasıl bir yol izlemem gerekiyor.
Web servis katmani yazmak gerekiyor.

Client yapmak istedigi islemi declarative bir sekilde server'a iletecek, burada server senin yazdigin ikinci bir uygulama, DB degil.

Authentication/Authorization server'in sorumlulugunda olmali.
Eger DB ile baglanti kurulmasi gerekiyorsa bunu da yine server yapacak.
Client yalnizca yapmak istedigi islemi soyler, geri kalani server halleder.

Client tarafta yazdigin her kodun okunabilecegini, manipule edilebilecegini ve degistirilebilecegini bilerek yazmak gerekiyor. Istedigin kadar obfuscation yap, sifrele; bu gercegi degistiremezsin.
 
Son düzenleme:
Yazdığınız uygulamayı şifrelerseniz decode edilemez bu methodu kullanabilirsiniz.
Şifreleme programları çok pahalı hocam. Ayrıca bazı anti virüsler virüs olarak algılayabiliyor şifrelemeden ötürü. İşe yarar ücretsiz şifreleme uygulaması da neredeyse az ya da hepsini geçebilecek şifre çözücüler var.

Web servis katmani yazmak gerekiyor.

Client yapmak istedigi islemi declarative bir sekilde server'a iletecek, burada server senin yazdigin ikinci bir uygulama, DB degil.

Authentication/Authorization server'in sorumlulugunda olmali.
Eger DB ile baglanti kurulmasi gerekiyorsa bunu da yine server yapacak.
Client yalnizca yapmak istedigi islemi soyler, geri kalani server halleder.

Client tarafta yazdigin her kodun okunabilecegini, manipule edilebilecegini ve degistirilebilecegini bilerek yazmak gerekiyor. Istedigin kadar obfuscation yap, sifrele; bu gercegi degistiremezsin.
Biraz zahmetli bir iş gibi gözüküyor anladığım kadarıyla. Client dediğimiz şey benim form uygulamam. Kullanıcının gördüğü etkileşime girdiği yer. Bu program server ile görüşüyor. Server ise veri tabanından istenilen şeyi programa iletiyor. Anladığım kadarıyla böyle.

Yardımlarınız için teşekkürler. Biraz kafa yorma vakti. :)
 

Geri
Yukarı