Merhaba arkadaşlar bir proje üzerinde çalışıyorum. uygulama windows tabanlı. C# ile geliştiriyorum. uygulamaya uzaktan client bilgisayarlar erişiyor. haliyle exe dosyasının config dosyasında connection string bilgileri bulunmuş bulunuyor. bunun nüne nasıl geçebilirim. web servis demeyin. tüm proje için tek tek tekrar web servis yazmak çok zamanımı alır. fikri nerisi olan?

Malesef yapabileceğim çok fazla bir seçenek yok, IL ve Net framework yapısı gereği yüzde yüz native code elde edemezsin. Bunun için obfuscation, Ngen ve. Net Native gibi yntemler var ama yinede MSIL kodu içinde barındırıyor. İşi bilen biri bunlarıda rahatlıkla aşar. Son olarak IL2CPU adında compiler çıkmıştı ve gerçek native code iddasi vardı ama hiç uğraşmadım. Bir gz atabilirsin.

Exe yolunu gsteriyorsun. Aşağıdaki gibi encrypt / decrpyt yapıyor. Projende herhangi bir kod gerektirmiyor. Çzerken x makinesinde şifrelediysen y makinesinde şifresini çzemiyorsun diye biliyorum, bilen biri x makinesinde çzebilir: <connectionStrings> <add name="SecurePassDataBase" connectionString="Data Source=D-6058; Initial Catalog=DEMO_Test;User ID=sysdba;Password=xxxxxx" /> </connectionStrings> <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider"> <EncryptedData> <CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAATeylFe/ xsUiVdcZvovEYDwQAAAACAAAAAAADZgAAwAAAABAAAABZsoaKP62hL85wpS+O3+ znAAAAAASAAACgAAAAEAAAAHZ5NcKcDcWuEVDKyU4mz7J4AQAAAILD3fmIimyY2rkEkAdAtRn0dh9tI7+ Y5+ILciikoSd/y2myUS88vJ59pIf82vOLk/0UwKL8TnHEaFTeX7SJ5par6pW7Pyhu4kKTEMyMUQsZX/ h8RjNOnt+Q/kZIdqF2YWxFUP0RF3GWirvMNWS3do7IE0WaJ1W3wL+HhalglmKURWIGHsvJlybl+ EGI8crPnli0W/yMN+fR0P/ndaTY87kR4+0gvKDWzZ/dMh8E7ZtodFzTQ4pjpl5YyRHH/ Tc3oFUtimCnzXvCVT4ykK6NEQfPiPc5KJW6ajTEEGOrAXTnr9HF2wCRekE3WUVPYkeHRTjtuf 2hUyvYx4eoGeOIAzFFXxY1GzZqhl8YaHlukZagiTVbfXA6Wh+K0dsAiOPz+wbCT92/ blgsdkoKSMy8vRqFxAhX8HoW6KbJhsBPOvv36iBr1RecCpzUxWrVssS+wi/JclVfVs0nYb/ pFidcJwhuwBsS6IzvV1tgrk8F9CUor+6DYHd/ABQAAABZjFi30hPRmKj+pvxFzjeNH+ Dhhg </CipherValue> </CipherData> </EncryptedData> </connectionStrings> Kaynak kodu : https://www.codeproject.com/KB/dotnet/598863/EncryptDecryptAppConfigFile. zip Kaynak: https://www.codeproject.com/Tips/598863/EncryptionplusDecryptionplusConnectionplusStringpl süper birşeymiş bayıldım

bunun mutlaka mantıklı bir yntemi olması lazım. config dosyası içerisnde bağlantı stringinin olması çok aptalca. en azından bunu gizlemek mümkün değil mi?decompiler olayı vs geçtim artık config dosyasinin içinde ki string'i RSA ile sifrelemek için yntemler mevcut ama cok verimli değil neden dersen application'in okudugu bir seyi kişi de illa okuyabilecektir. sadece zorlaştırmak mümkün. Bunun için web servis, web api gibi teknolojiler geliştiriliyor ki application session - permision düzeyine gre fonksionlar kullanılabilsin diye. web servis mimarilerini kullanmanın bir diğer gereksinimi de, sen connection string confiden oradan buradan gizlersin, networku dinleyen birisi x, y, z yntem ile yine kırar kırıldıktan sonra adama db yi altin tepside sunuyor olursun. bu yuzden asla ve asla database portlarını applicaion serverlarin haric bir noktaya acmaman gerekir. Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.

bunun mutlaka mantıklı bir yntemi olması lazım. config dosyası içerisnde bağlantı stringinin olması çok aptalca. en azından bunu gizlemek mümkün değil mi?decompiler olayı vs geçtim artık

Exe yolunu gsteriyorsun. Aşağıdaki gibi encrypt / decrpyt yapıyor. Projende herhangi bir kod gerektirmiyor. Çzerken x makinesinde şifrelediysen y makinesinde şifresini çzemiyorsun diye biliyorum, bilen biri x makinesinde çzebilir: <connectionStrings> <add name="SecurePassDataBase" connectionString="Data Source=D-6058; Initial Catalog=DEMO_Test;User ID=sysdba;Password=xxxxxx" /> </connectionStrings> <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider"> <EncryptedData> <CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAATeylFe/ xsUiVdcZvovEYDwQAAAACAAAAAAADZgAAwAAAABAAAABZsoaKP62hL85wpS+O3+ znAAAAAASAAACgAAAAEAAAAHZ5NcKcDcWuEVDKyU4mz7J4AQAAAILD3fmIimyY2rkEkAdAtRn0dh9tI7+ Y5+ILciikoSd/y2myUS88vJ59pIf82vOLk/0UwKL8TnHEaFTeX7SJ5par6pW7Pyhu4kKTEMyMUQsZX/ h8RjNOnt+Q/kZIdqF2YWxFUP0RF3GWirvMNWS3do7IE0WaJ1W3wL+HhalglmKURWIGHsvJlybl+ EGI8crPnli0W/yMN+fR0P/ndaTY87kR4+0gvKDWzZ/dMh8E7ZtodFzTQ4pjpl5YyRHH/ Tc3oFUtimCnzXvCVT4ykK6NEQfPiPc5KJW6ajTEEGOrAXTnr9HF2wCRekE3WUVPYkeHRTjtuf 2hUyvYx4eoGeOIAzFFXxY1GzZqhl8YaHlukZagiTVbfXA6Wh+K0dsAiOPz+wbCT92/ blgsdkoKSMy8vRqFxAhX8HoW6KbJhsBPOvv36iBr1RecCpzUxWrVssS+wi/JclVfVs0nYb/ pFidcJwhuwBsS6IzvV1tgrk8F9CUor+6DYHd/ABQAAABZjFi30hPRmKj+pvxFzjeNH+ Dhhg </CipherValue> </CipherData> </EncryptedData> </connectionStrings> Kaynak kodu : https://www.codeproject.com/KB/dotnet/598863/EncryptDecryptAppConfigFile. zip Kaynak: https://www.codeproject.com/Tips/598863/EncryptionplusDecryptionplusConnectionplusStringpl DE5TROY3R tarafından 19/Ağu/20 11:58 tarihinde düzenlenmiştir

bunun mutlaka mantıklı bir yntemi olması lazım. config dosyası içerisnde bağlantı stringinin olması çok aptalca. en azından bunu gizlemek mümkün değil mi?decompiler olayı vs geçtim artık Hocam, ncelikle config file kullanmak zorunda değilsin. Kodun içinde de bu tanımları yapabilirsin ama yine isteyen bulur. sizin projenin tasarım aşaması hatalı. Eskiden olduğu gibi artık server - client tasarımlarda; güvenlik, verimlilik, ynetim... gibi nedenlerle client doğrudan db bağlanmıyor. server tarafında db nünde bir api, service vb. tarzı yapı ile client'dan gelen sorgulara cevap veriliyor. Bylelikle client, db server hakkında en ufak bir bilgi içermiyor. Doğrusuda bu ve sanırım siz zaten bunu biliyorsunuz.