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 :)