C# içindeki MSSQL şifresi koruma

Başlatan esensoy, 29 Kasım 2016, 22:59:22

esensoy

Selamlar,
Diyelim ki Visual C# ile bir program yazdık, webde de bir SQL server var, connection string ile bu server  a bağlanıp veri alıp veriyoruz,

ILSPY gibi bir decompiler ile C# programını açtığımızda tüm kaynak kodları vs leri hatta bu şifreyi bile görebiliyoruz,
Bu gibi bir durumda server şifresini vermemek için herhangi bir yöntem var mı?
En tehlikeli an "zafer" anıdır.

erdcan

Decompiler her halukarda kodları çözüyorsa registry ya da C altında bir text/xml gibi bir kaynak dosyası içerisinde şifreyi saklayabilirsiniz. Böylece kaynaktan aldığınız şifreyi direk vermeyebilirsiniz ancak kodları okuyan birisi bu kaynağa da erişebilir. Kodu ve decompiler çıktısını görmek gerekir.

baran123

Şu videoda decompiler olayını engelliyor.
https://www.youtube.com/watch?v=BzN9ZKLMInU
Fakat bu .NET Reflector için.
Başka Reverse-Engineering programları bunu yapabilir mi emin değilim.
Bence şifreyi USB cihazdaki bir txt dosyasından alabilirsiniz. :)

mert3162

Usb üzerinden harici cihazla okunması mantıklı ama txt formatı anlamsız olur zira adam direk usb içindeki txt dosyayı açtığı gibi şifreye erişebilir.farklı bir metod ile haberleştirme sağlanırsa daha güvenli olacaktır.
|^^^^^^^^^^^^\ ||\
|__PICPROJE.ORG __
||'""|""\___
| _____________ l | |__|__|___| )
(@!)!(@)"""""**|(@) (@)****|(@)---------

 Üstadlarım nonstradam & Logan

ErsinErce

sql server'da db'e kullanıcı oluşturuyorsunuz.
kullanıcı girişte kullanıcı adı şifresini giriyor, bu sayede şifre saklama derdiniz olmuyor.
arada ssl ile bağlantı sağlıyorsunuz büyük ihtimal zaten güvenlik seviyeniz otomatikman normal seviyelere yükseliyor.

muhittin_kaplan


cerdemir

#6
DB Parolanızı ne kadar iyi korursanız koruyun erişilme ihtimali var.

* Uygulamanızın çalışabilmesi için gerekli minimum yetkilere sahip bir kullanıcı oluşturup bu kullanıcı ile db sunucusuna bağlanın. Parolanız ele geçirilse bile en azından uygulamanın yapabileceğinden daha fazlasını yapamasın. Mesela tablo silemesin. Kullanıcınız db_owner olmasın (sa kesinlikle olmasın :) )
* Bağlantı cümlenize "application name" ekleyip, db sunucunuza login trigger yazıp bazı kullanıcıları sadece sizin uygulama için yetkilendirebilirsiniz .https://sqlandme.com/2011/07/13/sql-server-login-auditing-using-logon-triggers/
* DB sunucunuza vpn arkasından bağlanabilirsiniz. (Kullanıcılar önce vpn ile ağınıza bağlanır sonra uygulama DB sunucunuza erişebilir hale gelir)
* DB sunucunuzu internetten erişilemez hale getirip, başka bir servisle(json, xml vb.) veri erişimini gerçekleştirebilirsiniz. Bu servis kullanıcı tanımlama ve yetkilendirme işlemlerini gerçekleştirebilir.
unutmuşum
* Bağlantı cümlenizi DPAPI ile şifreleyip text dosya vs bir yere kaydederseniz başkalarının ulaşsa bile çözemeyeceği bir bağlantı cünleniz olur. Bu yöntemin dezavantajı ise veriyi açacak kullanıcının şifrelemesi lazım. Başka bir windows kullanıcısı şifreyi çözemez. 
DPAPI: https://msdn.microsoft.com/en-us/library/ms995355.aspx

-- cemal