Web.config dosyasını şifrelemek

ASP.NET projelerimizde hepimiz web.config içerisinde bazı sabit bilgiler tutarız. appSettings'te, connectionStrings'te, vb..

Bir şekilde web.config dosyasını notepad te açan herkes bu bilgileri rahatlıkla görebilir.

örn:

<appSettings>
<add key="FCKEditor:BasePath" value="~/fckeditor/" />
<add key="FCKEditor:UserFilesPath" value="~/upload" />
<!--# Eposta gönderme ayarları-->
<add key="epostaFromAddress" value="xx@yyy.com" />
<add key="epostaReply" value="xxx@yyy.com" />
<add key="epostaFromName" value="Ad Soyad" />
<add key="epostaServer" value="123.456.123.456" />
<add key="epostaPort" value="587" />
<add key="epostaUser" value="xxx@yyy.com" />
<add key="epostaPass" value="pass" />
<add key="epostaTo" value="xxx@yyy.com" />
<!-- Configuration -->
<add key="PAGE_TITLE" value="Site Title" />
<add key="SITE_ADRESI" value="http://localhost:58810" />
<!--# PayPal-->
<add key="PayPalEposta" value="info@xxx.com" />
<add key="PayPalTestModu" value="1" />
</appSettings>
<connectionStrings>
<add name="MyConn" connectionString="server=123.456.123.456;User Id=user;password=pass;database=db;charset='latin5';"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>

Bu bilgiler bazen bizim için önemli olabilir ve müşterinin (3. şahısların) bu bilgilere erişmesini istemeyebiliriz.

İşte bu durumlar için size harika bir çözüm önerim var. Biz bu bilgileri şifreleyebiliriz :)

Bunun için komut satırında "C:\Windows\Microsoft.NET\Framework\v2.0.50727" klasörüne geçin. (Herhalde .NET 1.1 kullanmıyorsunuzdur.)

cd C:\Windows\Microsoft.NET\Framework\v2.0.50727

Sonra şu satırı çalıştırın:

aspnet_regiis.exe -pef "connectionStrings" D:\Inetpub\FirmaRehberi\Web

connectionStrings i değil de appSettings i de şifreleyebilirsiniz, sadece şu değişikliği yapın:

aspnet_regiis.exe -pef "appSettings" D:\Inetpub\FirmaRehberi\Web

Son parametre tabii ki websitenizin harddiskinizdeki yolu.

Şifreleme işleminden sonra web.config dosyamız şu şekilde değişir:

Gördüğünüz gibi herşey şifrelenmiş durumda.

Peki web.config dosyamızı şifreledikten sonra code behind tarafında ne yapmamız gerekiyor? kısaca HİÇBİR ŞEY :)

Yani kodlarımızda hiçbirşeyi değiştirmemiz gerekmiyor.

Yine ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString şeklinde connection string bilgisine erişebiliriz :)

Ya şifrelemeyi geri almak istersek? Bu da son derece kolay, komut satırında -pef yerine -pdf yazarsak olur biter.

aspnet_regiis.exe -pdf "connectionStrings" D:\Inetpub\FirmaRehberi\Web
aspnet_regiis.exe -pdf "appSettings" D:\Inetpub\FirmaRehberi\Web

güzel değil mi?

herkese kolay gelsin :)