Cross Site Request Forgery (CSRF): Pengertian dan Cara Kerja

Cross Site Request Forgery (CSRF)

Cross Site Request Forgery (CSRF) menjadi salah satu serangan web yang masih sering muncul meskipun banyak framework modern sudah membekali dirinya dengan proteksi bawaan. Serangan ini memanfaatkan sesi login yang sah milik pengguna untuk mengeksekusi aksi berbahaya tanpa disadari. Ketika pengguna sedang login ke sebuah aplikasi, peretas dapat memancing mereka membuka link tertentu, dan dalam hitungan detik, aksi berbahaya terjadi di belakang layar.

Masalahnya, banyak pengembang pemula yang hanya fokus pada UX, performa, atau fitur aplikasi, sehingga bagian keamanan seperti CSRF sering terbengkalai. Padahal, serangan ini terlihat sederhana tetapi efeknya bisa sangat fatal, mulai dari perubahan data, transaksi ilegal, hingga pengambilalihan akun. Untuk kamu yang berkecimpung di dunia pemrograman atau sedang belajar keamanan web, memahami CSRF adalah langkah penting untuk membangun aplikasi yang aman dan terpercaya.

Apa Itu Cross Site Request Forgery (CSRF)?

Cross Site Request Forgery atau CSRF adalah serangan yang memaksa pengguna yang sedang login mengirimkan permintaan yang tidak mereka inginkan ke server aplikasi. Peretas tidak perlu mencuri password atau melakukan teknik hacking rumit. Mereka hanya memanfaatkan fakta bahwa browser secara otomatis mengirimkan cookies sesi ketika mengakses sebuah domain. Selama cookie masih valid, server akan menganggap permintaan itu sah, meskipun sebenarnya berasal dari website lain.

Serangan ini masih sering terjadi karena banyak aplikasi yang tidak menerapkan validasi ekstra terhadap permintaan yang masuk. Selama request tersebut terlihat “normal” dan membawa cookie sesi, server akan mengeksekusinya. Tanpa mekanisme perlindungan seperti token CSRF, sebuah aplikasi bisa sangat rentan terhadap manipulasi permintaan dari luar domain.

Bagaimana CSRF Bisa Terjadi?

CSRF terjadi ketika browser pengguna mengirimkan request yang tidak disengaja ke server, biasanya setelah mereka diklik untuk membuka sebuah link, gambar, atau halaman yang disiapkan oleh peretas. Misalnya, kamu sedang login di aplikasi perbankan, lalu membuka blog yang tidak aman. Di halaman tersebut ternyata ada kode tersembunyi yang mengirimkan permintaan transfer uang ke akun peretas. Karena kamu masih login, server akan memproses request itu seolah-olah kamu yang melakukannya.

Skenario ini sangat mudah dilakukan karena browser modern mengikuti standar yang mengharuskan cookies dikirim otomatis ketika mengakses domain terkait. Hal ini baik untuk kenyamanan login, tetapi menjadi celah besar jika tidak ada validasi tambahan. Itulah sebabnya CSRF sering muncul pada aplikasi dengan endpoint sensitif seperti update profil, perubahan password, atau transaksi.

Komponen Penting dalam Serangan CSRF

1. Session Cookies

Session cookie menjadi kunci utama serangan ini. Tanpa cookie yang valid, server tidak akan mengenali permintaan sebagai request dari pengguna yang sah.

2. HTTP Request Palsu

Peretas menyiapkan request yang terlihat normal tetapi sebenarnya didesain untuk memicu aksi tertentu, seperti update data atau transfer dana.

3. Interaksi Tanpa Konfirmasi

CSRF bekerja karena banyak aplikasi tidak memberikan form konfirmasi tambahan seperti modal, OTP, atau token.

4. Target Endpoint Raw

Endpoint yang menerima request langsung tanpa validasi—misalnya /update-profile, /transfer, atau /change-password.

Tahapan Serangan CSRF

Berikut tahapan umum serangan CSRF:

  1. Peretas Mengidentifikasi Endpoint Sensitif
    Peretas mencari tahu endpoint mana yang bisa dieksploitasi, seperti form update password atau transaksi.
  2. Membuat Request Palsu
    Mereka membangun form atau script otomatis untuk mengirimkan request tersebut.
  3. Memancing Korban Membuka Halaman Berbahaya
    Korban diarahkan ke halaman jebakan melalui link, email, atau pop-up.
  4. Browser Korban Mengirimkan Cookie Secara Otomatis
    Tanpa disadari, browser mengirimkan request lengkap dengan session cookie.
  5. Server Menjalankan Aksi Tanpa Validasi Tambahan
    Karena server tidak tahu itu permintaan palsu, aksi berbahaya pun terjadi.

Jenis-Jenis Serangan CSRF

Serangan CSRF bisa muncul dalam berbagai bentuk tergantung bagaimana peretas memicu permintaan berbahaya dari browser korban. Teknik yang digunakan mungkin terlihat sederhana, tetapi masing-masing memiliki tingkat efektivitas berbeda tergantung seberapa longgar konfigurasi keamanan suatu aplikasi. Salah satu jenis paling umum adalah

1. CSRF melalui form HTML

Peretas menyisipkan form tersembunyi yang otomatis mengirimkan permintaan POST ketika halaman dimuat. Ini sering digunakan untuk aksi seperti update password, posting data, atau transaksi.

2. CSRF via image request

Ketika tag <img> disusun agar mengakses endpoint tertentu yang tidak memerlukan metode POST atau validasi tambahan. Metode ini biasanya menargetkan endpoint GET yang masih sensitif.

3. CSRF melalui link

Memanfaatkan klik pengguna dengan teknik social engineering, misalnya link yang terlihat aman tetapi ternyata memicu request ke server lain.

4. CSRF via script tag,

Meskipun jarang digunakan karena banyak server memblokirnya, tetap berbahaya pada aplikasi lama yang kurang aman.

Dengan memahami variasinya, kamu bisa menilai lebih baik bagaimana sebuah aplikasi dapat disusupi melalui berbagai jalur request.

Contoh Kasus Serangan CSRF

Dalam dunia nyata, CSRF pernah menyebabkan kerugian besar pada berbagai platform. Misalnya, beberapa tahun lalu, sebuah media sosial terkenal sempat memiliki celah yang memungkinkan pengguna tanpa sadar mengunggah status otomatis hanya dengan membuka sebuah halaman tertentu. Peretas membuat halaman berisi skrip yang memicu permintaan POST ke endpoint posting status. Karena pengguna sedang login, status palsu langsung muncul tanpa konfirmasi.

Di kasus lain, platform internet banking pernah terkena CSRF yang memungkinkan transfer otomatis ke rekening peretas. Metode ini dilakukan dengan membuat halaman yang berisi form tersembunyi dan mengirim permintaan transfer saat halaman dibuka. Celah ini sangat berbahaya karena pengguna tidak menyadari apa pun sampai saldo berkurang. Ada juga kasus pada aplikasi internal perusahaan, di mana mekanisme approval dokumen dapat di-bypass hanya dengan mengirimkan request otomatis. Semua contoh ini menunjukkan bahwa CSRF bukan sekadar teori, tetapi ancaman nyata yang dapat menyerang aplikasi kecil hingga sistem besar.

Perbedaan CSRF dan XSS

Berikut tabel perbandingannya:

AspekCSRFXSS
TargetPengguna yang sedang loginPengguna & browser
Cara KerjaMemaksa request menggunakan cookie korbanMenyuntikkan script berbahaya ke halaman
Ketergantungan CookieSangat bergantungTidak selalu
DampakAksi tanpa izin seperti update dataPembajakan session, deface, data leak
Teknik EksploitasiSocial engineeringManipulasi input

Cara Kerja Token CSRF

Token CSRF adalah string acak yang disisipkan pada setiap form atau request sensitif. Token ini unik pada setiap sesi pengguna, sehingga hanya request asli dari halaman aplikasi yang memiliki token valid. Ketika pengguna mengirimkan form, server akan memeriksa kecocokan token. Jika token tidak cocok, request langsung ditolak.

Mekanisme ini bekerja karena peretas tidak dapat menebak atau mengambil token dari halaman pengguna, kecuali ada celah XSS. Dengan kata lain, CSRF Token menciptakan lapisan verifikasi tambahan yang memastikan setiap permintaan benar-benar berasal dari interaksi yang sah, bukan dari halaman eksternal. Cara ini terbukti efektif dan menjadi mekanisme standar pada framework modern seperti Laravel, Django, dan Rails. Token juga sering digabungkan dengan metode lain seperti SameSite cookies untuk meningkatkan perlindungan.

Cara Mengecek Kerentanan CSRF

Mengecek kerentanan CSRF dapat dilakukan dengan dua pendekatan:

  1. Manual: kamu bisa membuat halaman HTML sederhana yang mengirimkan request POST ke endpoint aplikasi target. Jika server memproses request tersebut tanpa validasi token atau tanpa menolak request lintas domain, berarti aplikasi rentan. Teknik manual ini efektif untuk endpoint sensitif seperti update profil, perubahan password, atau pengiriman data. Selain itu, kamu bisa memeriksa apakah form di aplikasi sudah menyertakan token unik. Jika tidak ditemukan, besar kemungkinan CSRF belum diimplementasikan.
  2. Otomatis: kamu bisa menggunakan tools seperti OWASP ZAP atau Burp Suite, yang dapat memindai aplikasi dan mendeteksi pola request tanpa proteksi. Tools ini biasanya memberikan hasil cepat dan mendalam, terutama pada aplikasi besar. Penting bagi pengembang rutin melakukan pengecekan ini setiap kali merilis fitur baru untuk memastikan tidak ada endpoint sensitif yang terlewat.

Best Practice Keamanan Web untuk Mencegah CSRF

Berikut beberapa praktik terbaik yang disarankan untuk mencegah CSRF:

  1. Gunakan CSRF Token pada setiap form
    Selalu sertakan token acak yang divalidasi pada sisi server untuk memastikan keaslian request.
  2. Aktifkan Cookie dengan SameSite
    Mengatur cookie menjadi SameSite=Lax atau Strict mencegah browser mengirimkan cookie ke domain eksternal.
  3. Validasi Header Referer atau Origin
    Pastikan request berasal dari domain resmi aplikasi dan bukan dari halaman luar.
  4. Gunakan method selain GET untuk aksi penting
    Endpoint sensitif sebaiknya menggunakan POST atau PUT agar tidak mudah dieksekusi otomatis oleh tag HTML biasa.
  5. Pisahkan endpoint publik dan privat
    Endpoint yang memerlukan login harus dipastikan tidak bisa diakses atau dipicu dari domain lain.
  6. Aktifkan proteksi pada framework
    Jangan mematikan middleware CSRF. Banyak pengembang menonaktifkannya karena error kecil, padahal ini sangat berbahaya.
  7. Tambah verifikasi aksi sensitif
    Penggunaan OTP, email konfirmasi, atau autentikasi dua langkah dapat mencegah eksekusi berbahaya meskipun terjadi CSRF.

Kesimpulan

Pada pembahasan kita di atas dapat kita simpulkan bahwa Cross Site Request Forgery (CSRF) adalah salah satu ancaman paling umum namun sering kali tidak disadari dalam keamanan aplikasi web. Serangan ini memanfaatkan kepercayaan server terhadap pengguna yang sedang login, sehingga peretas dapat menjalankan aksi berbahaya tanpa interaksi langsung.

Penting bagi developer memahami bagaimana CSRF bekerja, jenis-jenis serangannya, dan bagaimana menerapkan pencegahan yang tepat. Dengan memanfaatkan fitur keamanan seperti CSRF Token, SameSite Cookies, validasi header, serta proteksi bawaan dari framework modern, aplikasi bisa jauh lebih aman dari serangan ini.

Artikel ini merupakan bagian seri artikel Programming dari KantinIT.com dan jika ada ide topik yang mau kami bahas silahkan komen di bawah ya..

Write a Comment

Leave a Comment

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

Subscribe to our Newsletter

Subscribe to our email newsletter to get the latest posts delivered right to your email.
Pure inspiration, zero spam ✨