Config dosyası encrypted veri

0 7,698

Bu gün işinize yarayacağına inandığım bir konudan bahsetmek istiyorum. Windows service yazdıysanız ve servisin kullandığı şifreniz var ise şifreyi kodamı gömeceğim sorusunu sanırım sormuşsunuzdur. bu noktada farklı alternatifler düşündüm ilki , servis’e çalıştırma anında parametre olarak geçmekti, ancak bir sıkıntısı vardı ve restart sonrası müdehale zorunluluğu doğuyordu. şifreyi gizledik ama pratik olmadığı kesin. 🙂

Sonra config dosyasına gömmek aklıma geldi pratik ama güvenli değildi, appSettings ve ConnectionString komple şifrelemek “isProtected”, “protect” ve “unProtect” methodları ile basit ancak sadece bir parametreyi şifrelemek… peki ne yapalım derken bir parametre daha ekleyip onun değerine göre şifreyi encrpted hale getirip config dosyasını update etmek yine başka bir değere göre açmak aklıma geldi. (bu 2. parametre koda gömülü size özel bir parolada olabilir.)

Yazımda bahsettiğim yapıya göre çalışa bilecek bir dll library projesi için gerekli yapıyı aktaracağım.

İlk adım olarak gerekli method ları tasarlayalım ;

1 – Encryption/Dycription için birer method gerekecek. Bu kısımda en saitinden yola çıkacağız ancak gerçek hayatta kendi encryption dll varsa onu yada 3des veya benzeri bir çözüm kullanmanız mümkün.

2 – Config okuması kolay ancak, En önemlisi config dosyasını update etmek. Bu noktada aşağıdaki şekilde bir kod işimizi görecektir;

Dikkat ettiyseniz, bu adıma kadarki tüm method’ larımızı private olarak tercih ettik, zira bu kısmı dış dünyaya açmanın bir anlamı olacağını düşünmüyorum.

3 – Bu adımda dış dünyaya açacağımız, ve “appsettings” kısmındaki ilgimizi çeken parametrenin adını alan bir method oluşturuyoruz;

Dikkat edilecek bir husus, daha öncede belirttiğim alacağımız aksiyonu kontrol amaçlı “isAlive” isimli bir parametre daha kullanmış olmamız, ancak bu parametre için “0/1” den daha farklı bir kontrol yapılabilir, hatta ufak müdehaleler ile baait bir şifre gömülebilir. Böylece çıktı olarak ürettiğimiz dll referans olarak bir projeye eklendikten ve “isAlive” parametresi de (yada muadili) oluşturulduktan sonra, dll ile oluşturacağınız bir obje ile ilgili methodumuzu çalıştırırken, şifre bilgisini içeren “appsettings” parametresinin adını veriyor olmanız yeterli olacak. kullandığınız encryption algoritmasına göre yeterli oranda güvenlik elde edebilirsiniz. Bu ara parametrenin opsiyonel olarak açılması şart değil, isteğe bağlı olarak bu kısmı kapatabilirsiniz. Sadece kendiniz için bir arka kapı ihtiyacına binayen göstermek istedim. Tüm yazının özeti şöyle, kolaylıkla entegre edilebilecek basit bir dll ile aslında config dosyasına koyduğumuz hassas bilgilerimizi servis veya uygulamamızın ilk çalışmasın anında encrypted olarak güncelleyen ve saklayan bir yapımız olabilir. 😁

Email adresiniz yayınlanmayacaktır.