Bagaimana caranya agar informasi yang disimpan di file web.config yang sifatnya secure tidak dapat langsung dibaca? Kita dapat melakukannya dengan mengenkripsi elemen yang kita inginkan seperti misalnya elemen connectionStrings, elemen appSettings dan elemen mailSettings. Tekniknya mudah sekali, mari kita lakukan langkah-langkah berikut ini (tools yang saya gunakan yaitu Visual Studio 2010 dan VB 2010) :
1. Buat sebuah asp.net web project template.
2. Design UI di web form seperti berikut ini didalam HTML nya :
3. Tambahkan elemen berikut ini di file web.config (diantara elemen configuration) :
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="Rully Yulian MF < rully@yulianmf.com >">
<network defaultCredentials="false" host="smtp.gmail.com" password="rahasia_dong"
port="587" userName="rully@yulianmf.com" enableSsl="true" />
</smtp>
</mailSettings>
</system.net>
<appSettings>
<add key="userName" value="Rully" />
<add key="password" value="rahasia" />
</appSettings>
<connectionStrings>
<clear />
<add name="LocalSqlServer"
connectionString="data source=.\SQL2008;uid=sa;pwd=sql2008;initial catalog=aspnetdb"
providerName="System.Data.SqlClient" />
</connectionStrings>
4. Ketikkan kode berikut ini untuk menampilkan list element web.config yang akan di enkripsi (tentunya kita dapat melakukan enkripsi pada element web.config lainnya) :
Protected Sub Page_Load() Handles Me.Load
If Not IsPostBack Then
CheckBoxList1.Items.AddRange(
New ListItem() {
New ListItem With {.Text = "Connection Strings",
.Value = "connectionStrings"},
New ListItem With {.Text = "App Settings",
.Value = "appSettings"},
New ListItem With {.Text = "Smtp Mail Settings",
.Value = "system.net/mailSettings/smtp"}
})
End If
End Sub
5. Tambahkan prosedur berikut ini yang digunakan untuk melakukan enkripsi pada element web.config. .NET framework menyediakan dua provider library untuk melakukan enkripsi yaitu DataProtectionConfigurationProvider dan RSAProtectedConfigurationProvider (default). List kedua provider tersebut dapat anda lihat di file machine.config sesuai dengan versi .NET framework yang digunakan (C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config) :

Private Sub EncryptElement(ByVal pathElement As String,
ByVal Encrypted As Boolean)
Dim config = WebConfigurationManager.OpenWebConfiguration("~")
Dim theSection = config.GetSection(pathElement)
If (Encrypted) Then
If Not theSection.SectionInformation.IsProtected Then
'theSection.SectionInformation.ProtectSection(
' "DataProtectionConfigurationProvider")
theSection.SectionInformation.ProtectSection(Nothing)
End If
Else
If theSection.SectionInformation.IsProtected Then
theSection.SectionInformation.UnprotectSection()
End If
End If
config.Save()
End Sub
Apabila kita ingin menggunakan RSAProtectedConfigurationProvider maka cukup memberikan nilai Nothing sebaga input parameter pada method ProtectSection.
6. Tambahkan event handler berikut pada button yang telah dibuat diatas :
Protected Sub Button1_Click() Handles Button1.Click
Dim itemList = CheckBoxList1.Items
Dim item As ListItem
For Each item In itemList
EncryptElement(item.Value, item.Selected)
Next
lblInfo.Text = "Encrypt / Decrypt Successfully"
End Sub
7. Jalankan asp.net web site tersebut dan pilih element-element yang diinginkan untuk di enkripsi dari checkbox list control. Anda dapat melihat hasilnya seperti pada gambar dibawah ini (tentunya untuk membaca element tersebut dari program kita tidak perlu untuk mendekripsi terlebih dahulu kecuali apabila terjadi perubahan value pada element yang bersangkutan) :




Selamat mencoba.