Mengenal bahaya CSRF pada aplikasi anda
Eko Susilo Harjo October 26, 2024

Apa Itu CSRF (Cross-Site Request Forgery)?
Cross-Site Request Forgery (CSRF) adalah jenis serangan yang memaksa pengguna untuk menjalankan aksi yang tidak diinginkan pada aplikasi web di mana mereka telah diautentikasi. Serangan ini terjadi ketika seorang pengguna yang telah login pada suatu situs web secara tidak sengaja mengirimkan permintaan yang dibuat oleh penyerang melalui browser mereka.
Dalam serangan CSRF, penyerang mencoba untuk memanfaatkan otoritas pengguna yang sah agar bisa melakukan aksi yang diinginkan penyerang. Contohnya, mengubah pengaturan akun, melakukan transaksi, atau menghapus data penting di server target.
Bagaimana CSRF Terjadi?
Untuk memahami bagaimana CSRF bisa terjadi, penting untuk memahami alur dasar bagaimana serangan ini bekerja. Berikut adalah langkah-langkah umum yang terjadi dalam serangan CSRF:
- Pengguna Login ke Aplikasi Web: Pengguna login ke aplikasi web yang sah (misalnya, situs perbankan online atau platform media sosial) dan browser menyimpan session cookie yang diperlukan untuk autentikasi.
- Penyerang Membuat Permintaan Berbahaya: Penyerang membuat link atau form HTML berbahaya yang mengandung permintaan ke aplikasi web tersebut. Permintaan ini dapat berupa permintaan POST atau GET yang ditujukan untuk mengubah data pengguna di aplikasi yang ditargetkan.
- Pengguna Mengakses Link Berbahaya: Pengguna, tanpa sadar, mengunjungi situs web penyerang atau mengklik link berbahaya melalui email atau pesan yang dikirimkan oleh penyerang. Saat pengguna mengklik link ini, browser pengguna secara otomatis menyertakan cookie session yang sudah tersimpan.
- Permintaan Dikirim ke Aplikasi yang Sah: Karena cookie session pengguna sudah tersimpan, aplikasi web yang sah menganggap permintaan ini berasal dari pengguna yang telah terautentikasi, sehingga permintaan tersebut diproses.
- Aksi Tidak Diinginkan Berhasil Dilakukan: Aplikasi web mengeksekusi aksi yang diminta oleh penyerang, seperti transfer dana atau perubahan data, seolah-olah permintaan tersebut memang dilakukan oleh pengguna.
Contoh Kasus Serangan CSRF
Misalkan ada sebuah aplikasi perbankan online dengan URL untuk transfer dana seperti berikut:
https://bankonline.com/transfer?to=12345&amount=10000
Penyerang bisa membuat link berbahaya yang secara otomatis mengarahkan pengguna untuk mengunjungi URL tersebut. Jika pengguna sudah login ke situs bank tersebut, maka ketika pengguna mengklik link tersebut, browser mereka akan mengirimkan permintaan transfer dana tanpa sepengetahuan pengguna.
Penyerang dapat menyematkan link tersebut dalam gambar atau tombol di situs lain yang dikunjungi pengguna. Misalnya:
<img src="https://bankonline.com/transfer?to=12345&amount=10000" style="display:none;" />
Saat pengguna mengunjungi situs penyerang dan browser mereka memuat gambar tersembunyi tersebut, permintaan transfer dana akan dikirim ke aplikasi perbankan tanpa persetujuan pengguna.
Penyebab Terjadinya CSRF
Ada beberapa penyebab utama yang memungkinkan serangan CSRF terjadi, antara lain:
- Kurangnya Validasi Token CSRF: Banyak aplikasi web yang tidak menggunakan token anti-CSRF untuk memvalidasi permintaan dari pengguna. Token ini sangat penting untuk memastikan bahwa setiap permintaan berasal dari sumber yang sah.
- Penggunaan Autentikasi Berbasis Cookie: Aplikasi yang hanya mengandalkan cookie untuk autentikasi tanpa mekanisme tambahan rentan terhadap serangan CSRF. Hal ini karena cookie secara otomatis dikirim oleh browser dalam setiap permintaan yang menuju ke domain tersebut.
- Pengguna Tidak Menyadari Link Berbahaya: Penyerang seringkali memanfaatkan rekayasa sosial (social engineering) untuk mengarahkan pengguna ke link atau halaman yang mengandung permintaan berbahaya.
Bagaimana Cara Mencegah CSRF?
Berikut adalah beberapa langkah yang dapat Anda lakukan untuk mencegah serangan CSRF pada aplikasi web Anda:
- Menggunakan CSRF Token: Salah satu cara paling efektif untuk mencegah serangan CSRF adalah dengan menerapkan CSRF token pada setiap form atau permintaan POST. Token ini harus dihasilkan secara acak dan unik untuk setiap sesi pengguna. Server akan memverifikasi token tersebut setiap kali menerima permintaan dari pengguna, memastikan bahwa permintaan berasal dari sumber yang sah.
- Verifikasi Referer dan Origin Header: Memverifikasi
Referer
atauOrigin
header pada setiap permintaan dapat membantu memastikan bahwa permintaan berasal dari domain yang sah. Meskipun metode ini tidak sekuat penggunaan CSRF token, namun bisa menjadi langkah tambahan yang berguna. - Gunakan Metode POST untuk Aksi yang Berisiko: Usahakan untuk menggunakan metode POST daripada GET untuk aksi yang berisiko, seperti perubahan data atau transaksi. Dengan demikian, penyerang tidak bisa dengan mudah menempatkan permintaan dalam bentuk link yang bisa diklik pengguna.
- Implementasi SameSite Cookie: Gunakan opsi
SameSite
pada cookie autentikasi untuk membatasi kapan cookie dapat dikirim oleh browser. Dengan mengaturSameSite=Lax
atauSameSite=Strict
, Anda bisa mencegah browser mengirim cookie pada permintaan yang berasal dari situs lain. - Hindari Autentikasi Berdasarkan Cookie Saja: Untuk aksi-aksi yang sangat penting, pertimbangkan untuk meminta pengguna untuk memasukkan password atau melakukan autentikasi ulang. Ini memastikan bahwa aksi tersebut benar-benar dimaksudkan oleh pengguna.
Kesimpulan
CSRF adalah jenis serangan yang sering kali tidak disadari oleh pengguna namun dapat menimbulkan kerugian yang besar. Dengan memahami bagaimana CSRF bekerja dan menerapkan langkah-langkah pencegahan yang tepat seperti penggunaan CSRF token, validasi Referer
, dan implementasi SameSite
pada cookie, Anda dapat melindungi aplikasi web dari ancaman CSRF.
Meskipun keamanan tidak pernah bisa dijamin sepenuhnya, namun dengan mengimplementasikan langkah-langkah tersebut, Anda bisa meminimalkan risiko serangan CSRF dan menjaga data pengguna tetap aman. Pastikan selalu mengikuti praktik terbaik dalam keamanan web untuk memberikan perlindungan yang optimal bagi aplikasi Anda.
Discover more from teknologi now
Subscribe to get the latest posts sent to your email.