app.config ve web.config şifreleme ve şifre çözümü

İyi Günler

Karşılaştığım sıkıntı,  yazdığım bir uygulamanın içinde bulunan app.config dosyasının içeriklerinin şifrelenmesi ve kullanımıdır.

Kısaca app.config ve web.config , uygulamanın yapılandırma dosyasıdır ve  Xml dosya türündedir . Asıl amacı, projenin dışarıdan değişmesi istenilen değişkenlerini rahatlıkla, tekrar derlemeden değiştirmektir.

Örnek olarak ;

Uygulamamızın kullandığı bir pdf derleyici var. Her seferinde, programın adını ve yolunu kullandığımız her yerde değiştirmekle uğraşacağımıza app.config üzerinde belirterek tekrardan kurtuluruz.


   Kod tarafında,  yolun değişmesi ya da pdf derleyicisinin markası fark etmeden istediğimiz zaman çağırabiliriz.

using System.Configuration

System.Configuration (referansta yoksa ekleyin)

Örnek 2;

Veritabanı’na bağlandığımız connection içeriğini değiştirmek istiyorsak (Veri tabanı adı, ip, port… vb);

Kod tarafında, veritabanına bağlantı yaptığımız her yerde connection ‘ı  değiştirmemiz ve tekrar derlememiz gerekir. Bunun yerine  app.config üzerinde bir kez tanımlayıp kod tarafında belirttiğimiz her yerde kullanabiliriz. Önerilen bu yöntemin faydası, gereksiz kod tekrarından ve tekrar derlemeye ihtiyaç duymadan uygulamamızın çalışmasını sağlamaktır.

app.config :

Kod tarafında erişmek için;

 

 

Asıl sorunumuz ise, App.config içerisinde istediğimiz alanları şifrelemektir (ben connectionString alanın şifrelemek istiyorum).

Şifreleme;

1-Projemizin içindeki app.config dosyanın adını web.config olarak değiştiriyoruz (Değiştirmeden önce bir yedek alınız.İşlem sonunda eski adını geri vereceğiz).

2-  Windows + R (Çalıştır) alanına cmd yazıp çalıştırıyoruz.

3- cmd ekranına   cd C:\Windows\Microsoft.NET\Framework\v2.0.50727   yazarak çalıştırıyoruz.

4- Açılan dosyanın içine,

aspnet_regiis.exe -pef  “xml şifrelemek istenen tag” “projenin web.config yolu”

aspnet_regiis.exe -pef “connectionStrings” “C:\Users\Tosun\Desktop\ConnectToAccountancy\ConnectToAccountancy”  işlemi çalıştıralım.

connectionStrings = şifrelemek istediğimiz tag (Ben veritabanı şifreliyorum);

Sonuç;

5- Adını değiştirdiğimiz app.config eski haline getiriyoruz.

app.config  yada web.config dosyasının içine bakıyoruz. Kod tarafında bir şey yapmamıza gerek kalmadan net framework çözümlüyor

Kod tarafında connectionString bu şekilde erişiyoruz. ConnectionString de “name” verdiğimiz adı unutmayın!!!

string connection=ConfigurationManager.ConnectionStrings["HeroData"].ToString();

 

Şifreyi kaldırma;

 

1- app.config adını web.config olarak değiştiriyoruz.

2- windows + R (Çalıştır) alanına cmd yaz ve çalıştır.

3-  cd C:\Windows\Microsoft.NET\Framework\v2.0.50727   çalıştır.

4- aspnet_regiis.exe -pdf “connectionStrings” “C:\Users\Tosun\Desktop\ConnectToAccountancy\ConnectToAccountancy”

5 -web.config adını app.config tekrar eski halina getirelim. Bu şekilde connectionString tekrar görmemize sağlar.