Dampak
Pemalsuan Permintaan Lintas Situs (CSRF) memungkinkan penyerang mengelabui browser korban agar melakukan tindakan yang tidak diinginkan di situs web lain tempat korban saat ini diautentikasi. Karena browser secara otomatis menyertakan kredensial ambien seperti cookie dalam permintaan, penyerang dapat melakukan operasi perubahan status—seperti mengubah kata sandi, menghapus data, atau memulai transaksi—tanpa sepengetahuan pengguna.
Akar Penyebab
Penyebab mendasar CSRF adalah perilaku default browser web dalam mengirimkan cookie yang terkait dengan domain setiap kali permintaan dibuat ke domain tersebut, terlepas dari asal permintaan [S1]. Tanpa validasi khusus bahwa permintaan sengaja dipicu dari antarmuka pengguna aplikasi itu sendiri, server tidak dapat membedakan antara tindakan pengguna yang sah dan tindakan palsu.
Mekanisme Perlindungan CSRF Django
Django menyediakan sistem pertahanan bawaan untuk mengurangi risiko ini melalui integrasi middleware dan templat [S2].
Aktivasi Middleware
django.middleware.csrf.CsrfViewMiddleware bertanggung jawab atas perlindungan CSRF dan biasanya diaktifkan secara default [S2]. Itu harus diposisikan sebelum tampilan middleware apa pun yang mengasumsikan serangan CSRF telah ditangani [S2].
Implementasi Templat
Untuk formulir POST internal apa pun, pengembang harus menyertakan tag {% csrf_token %} di dalam elemen <form> [S2]. Hal ini memastikan bahwa token rahasia dan unik disertakan dalam permintaan, yang kemudian divalidasi oleh server terhadap sesi pengguna.
Risiko Kebocoran Token
Detail penerapan yang penting adalah {% csrf_token %} tidak boleh disertakan dalam formulir yang menargetkan URL eksternal [S2]. Melakukan hal ini akan membocorkan token CSRF rahasia kepada pihak ketiga, yang berpotensi membahayakan keamanan sesi pengguna [S2].
Pertahanan Tingkat Browser: Cookie SameSite
Browser modern telah memperkenalkan atribut SameSite untuk header Set-Cookie untuk memberikan lapisan pertahanan [S1] yang mendalam.
- Ketat: Cookie hanya dikirim dalam konteks pihak pertama, artinya situs di bilah URL cocok dengan domain cookie [S1].
- Lax: Cookie tidak dikirim pada subpermintaan lintas situs (seperti gambar atau bingkai) namun dikirim saat pengguna menavigasi ke situs asal, misalnya dengan mengikuti tautan standar [S1].
Bagaimana FixVibe mengujinya
FixVibe sekarang menyertakan perlindungan CSRF sebagai pemeriksaan aktif yang terjaga keamanannya. Setelah verifikasi domain, active.csrf-protection memeriksa formulir perubahan status yang ditemukan, memeriksa input berbentuk token CSRF dan sinyal cookie SameSite, lalu mencoba pengiriman asal palsu yang berdampak rendah dan hanya melaporkan ketika server menerimanya. Pemeriksaan cookie juga menandai atribut SameSite yang lemah sehingga mengurangi pertahanan CSRF secara mendalam.
