Saya bekerja pada aplikasi asp.net yang melalui audit keamanan oleh perusahaan keamanan terkemuka dan saya belajar trik mudah ini untuk mencegah kerentanan keamanan yang kurang diketahui tetapi penting.
Penjelasan di bawah ini dari:
http://www.guidanceshare.com/wiki/ASP.NET_2.0_Security_Guidelines_-_Parameter_Manipulation#Consider_Using_Page.ViewStateUserKey_to_Counter_One-Click_Attacks
Pertimbangkan menggunakan Page.ViewStateUserKey untuk melawan serangan satu-klik. Jika Anda mengautentikasi penelepon Anda dan menggunakan ViewState, setel properti Page.ViewStateUserKey di pawang event Page_Init untuk mencegah serangan satu-klik.
void Page_Init (object sender, EventArgs e) {
ViewStateUserKey = Session.SessionID;
}
Tetapkan properti ke nilai yang Anda tahu unik untuk setiap pengguna, seperti ID sesi, nama pengguna, atau pengidentifikasi pengguna.
Serangan satu klik terjadi ketika penyerang membuat halaman Web (.htm atau .aspx) yang berisi bidang formulir tersembunyi bernama __VIEWSTATE yang sudah diisi dengan data ViewState. ViewState dapat dihasilkan dari halaman yang penyerang sebelumnya buat, seperti halaman keranjang belanja dengan 100 item. Penyerang memikat pengguna yang tidak menaruh curiga untuk meramban ke halaman, dan kemudian penyerang menyebabkan halaman dikirim ke server di mana kondisi tampilan yang valid. Server tidak memiliki cara untuk mengetahui bahwa kondisi tampilan berasal dari penyerang. Validasi ViewState dan HMACs tidak melawan serangan ini karena ViewState valid dan halaman dieksekusi di bawah konteks keamanan pengguna.
Dengan mengatur properti ViewStateUserKey, ketika penyerang meramban halaman untuk membuat ViewState, properti diinisialisasi dengan namanya. Ketika pengguna yang sah mengirimkan halaman ke server, itu diinisialisasi dengan nama penyerang. Akibatnya, pemeriksaan HMAC ViewState gagal dan pengecualian dihasilkan.