Apa itu CSRF?
CSRF (Pemalsuan permintaan lintas situs), juga dikenal sebagai serangan/sesi sesi satu klik, singkatan Cina: CSRF/XSRF. CSRF (Cross Site Request Forgery) adalah metode serangan jaringan yang terdaftar sebagai salah satu dari 20 risiko keamanan teratas di Internet pada tahun 2007. Risiko keamanan lainnya, seperti injeksi skrip SQL dan serangan skrip domain lintas situs, telah menjadi terkenal dalam beberapa tahun terakhir, dan banyak situs web telah membela diri terhadapnya. Namun, CSRF masih merupakan konsep asing bagi kebanyakan orang. Bahkan Gmail yang paling terkenal memiliki kerentanan CSRF pada akhir 2007, yang diretas dan menyebabkan kerugian besar bagi pengguna Gmail.
Apa yang bisa dilakukan CSRF?
Anda dapat memahami serangan CSRF seperti ini: penyerang telah mencuri identitas Anda dan mengirim permintaan berbahaya atas nama Anda. CSRF dapat melakukan hal-hal seperti mengirim email, mengirim pesan, mencuri akun Anda, atau bahkan membeli barang dan mentransfer mata uang virtual atas nama Anda...... Masalah yang ditimbulkan antara lain: kebocoran privasi pribadi dan keamanan properti.
ASP.NET MVC AntiForgeryToken tanda anti-pemalsuan
Di MVC ASP.NET, token formulir dan token cookie dibuat secara otomatis setiap kali @Html.AntiForgeryToken() digunakan di halaman tampilan. Namun, jika kita ingin mencapai pengambilan manual di latar belakang, kita perlu menggunakan kelas System.Web.Helpers.AntiForgery, dan teman-teman yang tertarik untuk melihat kode sumber akan menemukan bahwa pada kenyataannya, metode panggilan internal @Html.AntiForgeryToken() sama dengan kelas AntiForgery.
Ini terutama digunakan untuk mendapatkan formulir dan token cookie yang sesuai melalui dua metode statis: AntiForgery.GetHtml() atau AntiForgery.GetTokens(string oldCookieToken, out string newCookieToken, out string formToken). Namun, perlu dicatat bahwa setelah metode GetHtml dipanggil, token cookie yang sesuai akan dibuat secara otomatis, dan kemudian sepotong kode HTML dengan bidang tersembunyi nilai token formulir akan dikembalikan secara langsung, dan nilai yang dikembalikan akan dalam bentuk ini:
<input name="__RequestVerificationToken" type="hidden" value="8_nUk_3z0svQr9qcvRBi9SWMZ2-SYmuy9kRe9OgRobGULkb2Z4JZxRZFhR0ndeoy9hmDLDru7MFk-W4xrnL5z5T6VbkfXK7fyRk-egQBGm41"> Nama nama bidang tersembunyi umumnya ditetapkan ke "__RequestVerificationToken", dan nilainya adalah token keamanan terenkripsi. Bidang tersembunyi ini biasanya ditempatkan dalam formulir yang akan dikirimkan, dan pengiriman akhir diverifikasi terhadap token cookie.
Jika Anda menggunakan metode GetTokens, Anda dapat memperoleh formulir terenkripsi dan token cookie setelah meneruskan parameter yang sesuai, tetapi di sini Anda perlu menyimpan sendiri nilai yang sesuai.
Selanjutnya, kami akan memperkenalkan metode memperbarui AntiForgeryToken secara manual, terutama melalui AJAX.
Kode Paket:
Kode pengujian:
Kami menemukan bahwa saat mengirim permintaan ajax, parameter __RequestVerificationToken disertakan secara otomatis, seperti yang ditunjukkan pada gambar di bawah ini:
|