Web Security · Serangan Siber

Apa Itu CSRF Token?

Bayangkan Anda sedang login di aplikasi perbankan online di satu tab browser, lalu tanpa sadar membuka situs berbahaya di tab lain. Tanpa perlindungan yang tepat, situs berbahaya itu bisa “menumpang” sesi login Anda dan mengirim permintaan transfer dana tanpa sepengetahuan Anda. Inilah ancaman bernama Cross-Site Request Forgery (CSRF), dan CSRF token adalah pertahanan utama yang mencegahnya.

Bagi masyarakat umum, memahami CSRF token membantu menyadari bahwa keamanan aplikasi yang digunakan sehari-hari, mulai dari internet banking hingga media sosial, bukan sekadar soal password kuat, tetapi juga soal mekanisme teknis tak kasat mata yang melindungi dari serangan lintas situs. Bagi pembaca profesional seperti web developer atau security engineer, memahami CSRF dan cara kerja tokennya adalah kewajiban dasar, karena kerentanan ini masuk dalam daftar risiko keamanan aplikasi web yang harus diwaspadai menurut OWASP (Open Web Application Security Project).

1

token unik per sesi/permintaan

State-changing

jenis permintaan yang paling rentan diserang

SameSite

atribut cookie modern pelengkap CSRF token

OWASP

badan yang mengklasifikasikan CSRF sebagai risiko utama

Apa Itu Serangan CSRF? Memahami Ancamannya Dulu

Cross-Site Request Forgery (CSRF) adalah jenis serangan siber di mana penyerang mengelabui browser korban agar mengirim permintaan yang tidak diinginkan ke aplikasi web tempat korban sedang login. Karena browser secara otomatis menyertakan cookie sesi pada setiap permintaan ke domain yang sama, aplikasi web di sisi server tidak bisa membedakan apakah permintaan itu benar-benar berasal dari tindakan sadar pengguna atau dari skrip tersembunyi di situs berbahaya lain yang memanfaatkan sesi login yang masih aktif.

Contoh sederhana: penyerang membuat halaman web berisi form tersembunyi yang otomatis mengirim permintaan “ubah email akun” ke situs target begitu korban membuka halaman tersebut. Jika korban sedang login di situs target pada saat bersamaan, permintaan itu akan diproses seolah-olah benar-benar dikirim oleh korban sendiri, karena cookie sesi ikut terkirim otomatis oleh browser.

Apa Itu CSRF Token dan Bagaimana Cara Kerjanya

CSRF token adalah nilai unik dan sulit ditebak yang dibuat oleh server dan disisipkan ke dalam form atau permintaan aplikasi web. Token ini berfungsi sebagai bukti bahwa permintaan benar-benar berasal dari halaman resmi aplikasi, bukan dari situs pihak ketiga yang mencoba memalsukan permintaan atas nama pengguna.

Server Membuat Token Unik

Saat pengguna memuat halaman berisi form penting, seperti form ubah password atau transfer dana, server membuat CSRF token acak dan menyimpannya terkait dengan sesi pengguna tersebut.

Token Disisipkan ke Halaman

Token ini disematkan ke dalam form sebagai hidden input atau dikirim lewat header khusus, sehingga tidak terlihat langsung oleh pengguna namun ikut terkirim saat form disubmit.

Token Dikirim Bersama Permintaan

Ketika pengguna mengirim form, token tersebut ikut dikirim bersama data lainnya ke server.

Server Memverifikasi Kecocokan Token

Server memeriksa apakah token yang diterima cocok dengan token yang tersimpan untuk sesi tersebut. Jika cocok, permintaan diproses. Jika tidak cocok atau tidak ada sama sekali, permintaan ditolak.

Kunci keamanannya: situs penyerang tidak mengetahui nilai CSRF token milik korban, karena token ini unik per sesi dan tidak bisa diakses lewat cookie otomatis seperti sesi login. Tanpa mengetahui token yang benar, permintaan palsu dari situs berbahaya akan otomatis ditolak server meski cookie sesi ikut terkirim.

Mengapa CSRF Token Penting bagi Keamanan Aplikasi

Analisis dari sisi risiko menunjukkan bahwa tanpa CSRF token, setiap aplikasi web yang mengandalkan autentikasi berbasis cookie session berpotensi rentan terhadap manipulasi permintaan dari situs pihak ketiga. Dampaknya bisa serius, mulai dari perubahan data akun tanpa izin, transfer dana ilegal pada aplikasi finansial, hingga perubahan pengaturan keamanan seperti email atau password pemulihan yang bisa berujung pengambilalihan akun sepenuhnya.

CSRF token menjadi lapisan pertahanan penting khususnya untuk permintaan yang bersifat state-changing, yaitu permintaan yang mengubah data atau kondisi di server, seperti submit form, update profil, atau transaksi keuangan. Permintaan yang hanya membaca data (seperti menampilkan halaman) umumnya tidak memerlukan proteksi CSRF karena tidak mengubah apa pun di sisi server.

CSRF Token vs Mekanisme Keamanan Lain

MekanismeMelindungi dariCara Kerja Singkat
CSRF TokenPermintaan palsu dari situs lainVerifikasi token unik per sesi pada setiap permintaan state-changing
SameSite CookiePengiriman cookie otomatis lintas situsBrowser membatasi cookie hanya dikirim untuk permintaan dari domain yang sama
CORSAkses API dari domain tidak diizinkanServer menentukan domain mana saja yang boleh mengakses resource-nya
JWT (Bearer Token)Pemalsuan identitas loginToken dikirim manual lewat header, tidak otomatis seperti cookie sehingga secara alami lebih tahan CSRF

Menariknya, aplikasi yang menggunakan autentikasi berbasis token seperti JWT lewat header Authorization secara alami lebih tahan terhadap CSRF dibanding autentikasi berbasis cookie, karena browser tidak mengirim header kustom secara otomatis seperti halnya cookie. Namun, jika token disimpan di cookie untuk kenyamanan, proteksi CSRF tambahan tetap diperlukan.

Praktik Terbaik Implementasi CSRF Token

  • Gunakan token yang benar-benar acak dan panjang, dihasilkan dengan generator kriptografis yang aman, bukan sekadar angka berurutan yang mudah ditebak.
  • Terapkan token per sesi atau bahkan per permintaan untuk keamanan berlapis, meski token per sesi umumnya sudah cukup untuk kebanyakan aplikasi.
  • Kombinasikan dengan atribut cookie SameSite=Strict atau Lax sebagai lapisan pertahanan tambahan yang saling melengkapi, bukan pengganti.
  • Selalu validasi token di sisi server untuk setiap permintaan state-changing, jangan hanya mengandalkan validasi di sisi klien yang bisa dilewati penyerang.

Bagaimana CSRF Token Berkaitan dengan JWT dan Idempotency

CSRF token, JWT, dan idempotency sama-sama menjaga keandalan dan keamanan komunikasi antara klien dan server, namun dari sudut yang berbeda. JWT membuktikan siapa yang mengirim permintaan (autentikasi). CSRF token membuktikan bahwa permintaan benar-benar berasal dari halaman resmi aplikasi, bukan situs pihak ketiga yang menumpang sesi login (memastikan niat pengguna asli). Idempotency memastikan permintaan yang sama tidak diproses berulang kali akibat masalah jaringan. Ketiganya melengkapi lapisan keamanan dan keandalan yang berbeda dalam satu sistem web modern yang matang.

Pelajari CSRF Lebih Lanjut di OWASP

FAQ Seputar CSRF Token

1. Apakah semua permintaan web butuh CSRF token?

Tidak, CSRF token utamanya diperlukan untuk permintaan yang mengubah data di server (state-changing), seperti submit form atau transaksi, bukan untuk permintaan yang hanya membaca data.

2. Apa beda CSRF dengan XSS (Cross-Site Scripting)?

CSRF mengeksploitasi kepercayaan server terhadap browser pengguna yang sudah login, sementara XSS mengeksploitasi kelemahan aplikasi untuk menyisipkan skrip berbahaya langsung ke halaman yang dilihat pengguna. Keduanya berbeda meski sama-sama serangan sisi klien.

3. Apakah aplikasi berbasis JWT tetap butuh CSRF token?

Jika JWT dikirim lewat header Authorization secara manual, risiko CSRF jauh berkurang. Namun jika token JWT disimpan dan dikirim otomatis lewat cookie, proteksi CSRF tambahan tetap diperlukan.

4. Apakah SameSite cookie sudah cukup tanpa CSRF token?

SameSite cookie memberi perlindungan kuat, namun sebagian besar praktik terbaik keamanan tetap menyarankan kombinasi keduanya sebagai pertahanan berlapis (defense in depth), bukan mengandalkan satu mekanisme saja.

5. Apa yang terjadi jika CSRF token yang dikirim tidak valid?

Server akan menolak permintaan tersebut, biasanya dengan mengembalikan kode error seperti 403 Forbidden, sehingga perubahan data yang diminta tidak akan diproses.

Kesimpulan

CSRF token adalah salah satu lapisan pertahanan paling mendasar namun sering diabaikan dalam keamanan aplikasi web modern. Dengan memastikan setiap permintaan yang mengubah data benar-benar berasal dari halaman resmi aplikasi, bukan dari situs pihak ketiga yang menumpang sesi login pengguna, CSRF token melindungi dari serangan yang bisa berujung pada perubahan data ilegal hingga pengambilalihan akun. Bagi developer, mengombinasikan CSRF token dengan atribut cookie SameSite dan validasi ketat di sisi server adalah standar minimum yang wajib diterapkan pada aplikasi apa pun yang menangani data sensitif pengguna, sejalan dengan lapisan keamanan lain seperti JWT dan idempotency yang bersama-sama membentuk fondasi sistem web yang benar-benar bisa dipercaya.

Bagikan:

Kia Krikil

Editor di Kiakrikil.com yang fokus menyajikan berita terbaru seputar pendidikan dan teknologi.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *