Microsoft menyediakan fungsionalitas internal yang kami gunakan dalam aplikasi kami untuk tujuan keamanan, jadi tidak ada yang bisa meretas situs kami atau menyerang beberapa informasi penting.
Penggunaan ValidateAntiForgeryToken
Mari kita coba dengan contoh sederhana untuk memahami konsep ini. Saya tidak ingin membuatnya terlalu rumit, itu sebabnya saya akan menggunakan templat aplikasi MVC, sudah tersedia di Visual Studio. Kami akan melakukan langkah demi langkah. Ayo mulai.
Langkah 1 - Buat dua aplikasi MVC dengan templat internet default dan beri nama masing-masing sebagai CrossSite_RequestForgery dan Attack_Application.
Sekarang, buka Konfigurasi Web aplikasi CrossSite_RequestForgery dan ubah string koneksi dengan yang diberikan di bawah ini lalu simpan.
`
<connectionStrings> <add name="DefaultConnection" connectionString="Data Source=local\SQLEXPRESS;Initial Catalog=CSRF;
Integrated Security=true;" providerName="System.Data.SqlClient" />
</connectionStrings>
Sekarang, klik Tools >> NuGet Package Manager, lalu Package Manager Console
Sekarang, jalankan tiga perintah yang disebutkan di bawah ini di Package Manager Console untuk membuat database.
Aktifkan-migrasi, tambah-migrasi, perbarui-basis data pertama
Catatan Penting - Saya telah membuat database dengan pendekatan kode pertama karena saya ingin membuat contoh ini dalam cara kerja pengembang. Anda dapat membuat basis data secara manual juga. Itu pilihanmu.
- Sekarang, buka Pengontrol Akun. Di sini, Anda akan melihat metode daftar yang jenisnya diposkan. Di atas metode ini, harus ada atribut yang tersedia sebagai [ValidateAntiForgeryToken]. Komentar atribut ini. Sekarang, klik kanan pada register dan klik go to View. Di sana lagi, Anda akan menemukan penolong html sebagai @ Html.AntiForgeryToken (). Komentar yang ini juga. Jalankan aplikasi dan klik tombol register. URL akan terbuka sebagai:
http: // localhost: 52269 / Akun / Daftar
Catatan - Saya tahu sekarang pertanyaan yang muncul di benak semua pembaca adalah mengapa kedua pembantu ini perlu dikomentari, karena semua orang tahu ini digunakan untuk memvalidasi permintaan. Lalu, saya hanya ingin membuat Anda semua tahu bahwa ini hanya karena saya ingin menunjukkan perbedaannya setelah dan sebelum menerapkan bantuan ini.
Sekarang, buka aplikasi kedua yaitu Attack_Application. Lalu, buka metode Registrasi Pengontrol Akun. Cukup ubah metode POST dengan yang sederhana, seperti ditunjukkan di bawah ini.
Formulir pendaftaran
- @ Html.LabelFor (m => m.UserName) @ Html.TextBoxFor (m => m.UserName)
- @ Html.LabelFor (m => m.Password) @ Html.PasswordFor (m => m.Password)
- @ Html.LabelFor (m => m.ConfirmPassword) @ Html.PasswordFor (m => m.ConfirmPassword)
7. Sekarang, misalkan Anda adalah seorang hacker dan Anda tahu URL dari mana Anda dapat mendaftarkan pengguna di aplikasi CrossSite_RequestForgery. Sekarang, Anda membuat situs Pemalsuan sebagai Attacker_Application dan hanya memasukkan URL yang sama dalam metode posting.
8. Jalankan aplikasi ini sekarang dan isi kolom register dan klik register. Anda akan melihat Anda terdaftar di aplikasi CrossSite_RequestForgery. Jika Anda memeriksa database aplikasi CrossSite_RequestForgery maka Anda akan melihat dan entri yang telah Anda masukkan.
- Penting - Sekarang, buka aplikasi CrossSite_RequestForgery dan komentari token di Account Controller dan daftarkan View. Coba daftar lagi dengan proses yang sama. Kemudian, kesalahan akan terjadi seperti di bawah ini.
Kesalahan Server dalam Aplikasi '/'. ________________________________________ Cookie anti-pemalsuan yang diperlukan "__RequestVerificationToken" tidak ada.
Inilah yang dikatakan konsep itu. Apa yang kami tambahkan dalam tampilan yaitu @ Html.AntiForgeryToken () menghasilkan __RequestVerificationToken pada waktu buka dan [ValidateAntiForgeryToken] tersedia dengan metode Controller. Cocokkan token ini pada waktu posting. Jika tokennya sama, maka artinya ini adalah permintaan yang valid.