FixVibe
Covered by FixVibehigh

Perlindungan CSRF: Membela Terhadap Perubahan Negara yang Tidak Sah

Pemalsuan Permintaan Lintas Situs (CSRF) tetap menjadi ancaman signifikan terhadap aplikasi web. Penelitian ini mengeksplorasi bagaimana kerangka kerja modern seperti Django menerapkan perlindungan dan bagaimana atribut tingkat browser seperti SameSite menyediakan pertahanan mendalam terhadap permintaan tidak sah.

CWE-352

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].

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.