Web. config Dosyasının İçeriğini Şifrelemek Bilindiği üzere web. config; bir ASP. NET uygulamasının bir çok konfigürasyonunun yapılabildiği XML tabanlı bir dosyadır ve uygulamaya ait spesifik ya da genel ayarlar burada tutulmaktadır. ASP. NET ile geliştirilen bir web uygulamasının derlenerek publish edilmesi, kodların gizliliğini sağlasa da web. config dosyası derlenmemektedir. Biz de bu makalemizde web. config dosyasının içeriğindeki bölümlerin nasıl şifreleneceğini göreceğiz. Şifreleme Yöntemleri Nelerdir? - Bu şifreleme işlemi için DPAPI veya RSA kullanılmaktadır. - DPAPI ile şifreleme yaparken DataProtectionConfigurationProvider kullanılırken, RSA için ise RSAProtectedConfigurationProvider kullanılmaktadır. - Şifreleme makine bazlı ya da kullanıcı bazlı yapıldığından, başka bir sistem üzerinde çalışmasını sağlamak için şifrelemeyi o sistem üzerinde tekrar yapmak gerekecektir. - Ayrıca web. config içerisindeki bazı sectionlar şifrelenememektedir. Kaç Şekilde Şifreleme Yapılabilir? İki şekilde yapılabilir. Visual Studio Command Prompt veya Windows Command Prompt`dan aspnet_regiis. exe uygulamasını ilgili parametreler ile çalıştırarak ya da uygulamanızın içinden programatik olarak yapabilirsiniz. aspnet_regiis. exe ile Şifrelemek Bu uygulama ile şifrelemek için şuradaki makaleyi okuyabilirsiniz. Programatik Olarak Şifrelemek web. config dosyamızda şifreleyeceğimiz section`ı oluşturuyoruz / belirliyoruz. System. Web. Configuration`ı sayfamıza ekliyoruz ve şifreleme fonksiyonumuzu yazıyoruz; private void SifreleAslanim { //Uygulama dizinimizdeki web. config dosyasına erişiyoruz Configuration config = WebConfigurationManager. OpenWebConfiguration ; //Hangi section`u şifreleyeceğimizi belirliyoruz ConfigurationSection section = config. GetSection ; if } Ve fonksiyonumuzu çalıştırıyoruz; SifreleAslanim ; web. config dosyamıza bakıyoruz; AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAsQxvcnc0GUS3DK3hpL PZ1wQAAAACAAAAAAADZgAAqAAAABAAAADwqim5UlKmK0+kXBrQpHA8A AAAAASAAACgAAAAEAAAALrJpAOn1+EdVDU/9kkEzargAAAAOJqWAX/tTNv OBPZ/tqN2SE7dMCHVLOKTFdyTx6laWc5Tw5jcUihcbhcX73KhGT2CSVyHosXb7 m+iQwZEtFEBJqEACq+2hM/QrxFr+DZaFdjBMu7Eg+AfXFIfGkuQv1UCCnHVnfQJd lyqF3unKzkqGuppH0Ez15+doNOnXjZ+qLKRB6Dg2C+fSbIRHje5an5K7+6YWcAim du9oep4I7GgUndghVzwLoqltv7/Pvj6vGP6hQpugU9f48E2jrztPoqz65cINW4OZ3SGC9 Ul402781cdTmY+rq+npLal8yzpoYAUAAAAe7RSzjpGiQkEcAqwDag459eDxi4= Görüldüğü gibi belirttiğimiz section belirttiğimiz algoritmaya göre şifrelenmiş. Peki veriye ulaşmamız gerektiğinde şifreyi çözecek miyiz? Hayır. Direkt olarak appSettings düğümünde tanımladığımız key ile ulaşmamız mümkün; string strKey = WebConfigurationManager. AppSettings . ToString ; Response. Write ; Ekrana şifresiz bir şekilde yazdırıldığını görüyoruz. Programatik Olarak Şifreyi Çözmek Yine uygulama tarafında çalışacak olan DeCrypt fonksiyonumuzu yazarsak; private void CozAslanim { //Uygulama dizinimizdeki web. config dosyasına erişiyoruz Configuration config = WebConfigurationManager. OpenWebConfiguration ; //Hangi section`u çözeceğimizi belirliyoruz ConfigurationSection section = config. GetSection ; if } Fonksiyonumuzu çalıştırıyoruz; CozAslanim ; appSettings düğümünün decrypt edildiğini ve salt halinin tekrardan web. config dosyamıza kaydedildiğini görüyoruz. Yazar: Onur YILMAZ