Thursday 9 January 2014

ASP.NET Hosting – JaringanHosting.com :: Membuat Aman ViewState dalam ASP.NET

ASP.NET ViewState adalah state management pada sisi klien.  ViewState disimpan dalam field tersembunyi dengan ID bernama __VIEWSTATE. Biasanya, informasi ViewState yang tersimpan terlihat seperti di bawah ini:



Sekarang mari kita lihat 'value'nya. Itu terlihat seperti string yang terenkripsi. Itu tidak lain hanyalah string Base64 yang dikodekan dan bukan merupakan string yang dienkripsi. Sehingga dapat dengan mudah diterjemahkan. Alasan utama untuk menggunakan Base64 encoding adalah sebagai berikut: 

ASP.NET Hosting - JaringanHosting.com
  • Base64 membuat string cocok untuk transfer HTTP
  • Hal ini membuat sedikit sulit untuk dibaca
Tetapi orang-orang sering bingung dan seringkali menyangka jika ini adalah string yang dienkripsi.  Mari kita coba decode string menggunakan ViewState Decoder (alat yang bagus yang dibuat oleh Fritz Onion).


Setelah men-decode string, kita bisa melihat data yang tepat disimpan dalam ViewState. Anda dapat menulis beberapa baris kode untuk memecahkan kode teks dan Anda akan mendapatkan informasi ViewState yang sebenarnya.


  
Jadi inilah cara kerja  ViewState :
Secara default, ViewState adalah serial Base-64 encoded string. Pada postback, informasi kondisi tampilan dimuat dan diterapkan kembali ke keadaan bertahan dari kontrol dalam hirarki kontrol.

Solusi

1. Ada dua cara yang berbeda di mana Anda dapat mencegah seseorang dari mendekripsi data ViewState. Anda dapat memastikan bahwa informasi ViewState adalah tamper-proof dengan menggunakan "kode hash". Anda dapat melakukan ini dengan menambahkan EnableViewStateMAC = "true" pada halaman Anda. MAC adalah singkatan dari "Message Authentication Code".

 

Ketika kita menggunakan "EnableViewStateMAC = true", selama ViewState menyimpan, ASP.NET internal menggunakan kode hash. Kode hash ini adalah checksum cryptographically yang kuat. Hal ini ditambah dengan konten ViewState dan disimpan dalam field yang tersembunyi. Selama postback, data checksum diverifikasi lagi oleh ASP.NET. Jika ada ketidakcocokan, postback akan ditolak.

2. Opsi kedua adalah atur ViewStateEncryptionMode="Always" yang akan mengekripsi data View State. Contoh bisa dilihat pada gambar dibawah ini.



ViewStateEncryptionMode memiliki 3 opsi yang bisa dipilih, yaitu:
  • Always: selalu mengenkripsi ViewState.
  • Auto: Menginkripsi saat ada permintaan. Apabila pilihan ini dijalankan, 'the control' harus memanggil method Page.RegisterRequiresViewStateEncryption()
  • Never: Tidak akan mengenkripsi ViewState.
Apabila anda menulis ViewStateEncryptionMode="Always" dan mencoba untuk mendecode data ViewState, Anda akan mendapatkan informasi seperti pada gambar di bawah ini. 



Kita juga dapat mengaktifkan pengaturan ini untuk EnableViewStateMAC dan ViewStateEncryptionMode di web.config:



Note: Cobalah untuk hindari mengenkripsi apabila itu tidak diperlukan karena dapat mempengaruhi performa.
JaringanHosting.com adalah provider ASP.NET danWindows Hosting No #1 di Indonesia sesuai dengan rekomendasi dari pihak Microsoft. Microsoft memberikan rekomendasi ini berdasarkan pada beberapa persyaratan utama, yaitu: WebMatrix, WebDeploy, Visual Studio 2012, ASP.NET 4.5, ASP.NET MVC 4.0, Silverlight 5 and Visual Studio Lightswitch. Untuk keterangan lanjutan, silahkan klik disini!

0 comments:

Post a Comment