Serangan Cross-Site Request Forgery (CSRF) merupakan teknik serangan yang memanfaatkan sesi pengguna yang sedang login untuk menjalankan aksi tanpa izin. Serangan ini sering terjadi secara diam-diam dan dapat berdampak serius pada aplikasi web, mulai dari perubahan data hingga penyalahgunaan akun. Artikel ini membahas cara kerja CSRF dan langkah efektif untuk mencegahnya.
Apa itu Serangan CSRF?
Definisi Serangan CSRF
CSRF (Cross-Site Request Forgery) adalah serangan yang memaksa pengguna yang sedang terautentikasi untuk melakukan tindakan yang tidak mereka inginkan pada sebuah aplikasi web. Serangan ini memanfaatkan fakta bahwa browser akan mengirimkan cookie secara otomatis dalam setiap permintaan.
Dengan kata lain:
Penyerang menunggangi sesi login korban, lalu membuat permintaan palsu yang terlihat sah di mata server.
Serangan ini sering masuk kategori one-click attack atau session riding.

Bagaimana Serangan CSRF Bekerja?
Untuk memahami CSRF, mari kita hubungkan mekanismenya dengan perilaku browser modern.
1. Pengguna login ke aplikasi web
Misalnya pengguna login ke bankanda.com. Browser menyimpan cookie sesi agar pengguna tetap dianggap login.
2. Pengguna mengunjungi halaman berbahaya
Penyerang membuat halaman HTML sederhana, misalnya:
<form action="https://localhost/changepassword" method="POST" target="_blank">
<input type="hidden" name="new_password" value="optimaise">
<input type="submit value="Change password CSRF">
</form>
Saat pengguna membuka halaman itu, browser otomatis siap mengirimkan permintaan POST ke server target.
3. Browser mengirim cookie secara otomatis
Inilah inti serangan CSRF: browser mengirim cookie tanpa perlu izin dari pengguna.
4. Server menganggap permintaan itu sah
Selama tidak ada mekanisme validasi CSRF, server akan berpikir bahwa permintaan berasal dari pengguna.
Inilah sebabnya CSRF bisa berdampak fatal meski hanya dari form HTML sederhana.
Dampak Serangan CSRF pada Aplikasi Web
Dampaknya tergantung endpoint yang dieksploitasi. Beberapa akibat serius antara lain:
- Pengambilalihan akun
Mengubah password tanpa izin, mengubah email, atau memodifikasi pengaturan keamanan. - Kerugian finansial
Transfer dana otomatis, pembelian tanpa izin, perubahan metode pembayaran. - Perubahan konfigurasi sistem
Mengubah role pengguna, memodifikasi data penting, atau menghapus informasi tertentu. - Akses berantai
Jika endpoint admin yang kena, kerusakan akan jauh lebih besar.

Cara Mencegah Serangan CSRF
Implementasi CSRF Token
Ini adalah mekanisme pencegahan paling populer:
- Setiap form atau permintaan dari sisi klien harus memiliki token unik.
- Token ini harus diverifikasi oleh server.
- Token tidak boleh bisa ditebak.
- Token harus berbeda di setiap sesi.
Contoh alurnya:
- Server membuat token CSRF.
- Token ditanamkan di form atau header permintaan.
- Server mengecek apakah token valid.
- Permintaan diproses hanya jika token cocok.
Validasi dan Autentikasi Permintaan
Selain token, ada metode lainnya:
- Double Submit Cookie
Cookie berisi token, halaman mengekstraknya ke form atau header. - SameSite Cookie
Menyetel cookie menjadiSameSite=LaxatauStrict, sehingga cookie tidak terkirim dari domain lain. - Cek Origin dan Referer
Banyak developer mengabaikan ini padahal efektif untuk endpoint kritis.
Server harus memverifikasi:
- Apakah
Originsesuai? - Apakah
Referermasuk domain yang sama? - Apakah permintaan benar dari aplikasi sendiri?

Penggunaan Sekuritas Header HTTP
Header berikut sangat membantu:
- SameSite Cookie
Menghalangi cookie terkirim lintas domain. - Content-Security-Policy (CSP)
Mengurangi risiko CSRF berbasis form dan script dirancang khusus. - X-Frame-Options / Frame-Ancestors
Menghindari klikjacking—sering dikombinasikan dengan teknik CSRF.
Pengaturan sederhana seperti dibawah ini sudah sangat membantu mengatasi CSRF.
Set-Cookie: sessionid=abc123; HttpOnly; Secure; SameSite=Strict
Praktik Terbaik dalam Pengembangan Web
Dalam pengalaman implementasi keamanan aplikasi, beberapa praktik yang terbukti efektif
- Pisahkan endpoint GET dan POST
GET hanya untuk membaca data.
POST hanya untuk tindakan penting. - Form dengan metode POST selalu memiliki token CSRF.
- Gunakan framework yang sudah menyediakan proteksi CSRF bawaan.
- Laravel: CSRF Middleware
- Django: CSRF Middleware
- Express.js: csurf package
- Spring Security: CSRF Protection
- Hindari endpoint sensitif terbuka tanpa adanya autentikasi.
- Review keamanan secara rutin dengan OWASP ZAP atau Burp Suite.
Studi Kasus dan Contoh CSRF
Account Takeover via CSRF in Google OAuth Binding by Rocky1696

<html>
<body>
<h1>CSRF PoC: Google Social Connect</h1>
<img src="https://www.target.com/account/social-connect/google?state=&code=4%token
</body>
</html>
Selama proses penilaian keamanan di target.com, ditemukan kerentanan serius pada fitur Google Social Connect yang memungkinkan Account Takeover melalui serangan CSRF. Masalah ini terjadi karena endpoint /account/social-connect/google tidak memvalidasi parameter state dalam alur OAuth. Dengan menghapus nilai state, penyerang dapat membuat pengguna yang sedang login secara tidak sadar menghubungkan akun Google milik penyerang ke akun mereka. Begitu akun Google penyerang berhasil terhubung, penyerang dapat masuk melalui “Continue with Google” dan mendapatkan akses penuh ke akun korban tanpa perlu kata sandi, brute force, maupun verifikasi tambahan. Kerentanan ini membuka peluang pengambilalihan akun hanya dengan satu klik ketika korban mengunjungi halaman berbahaya yang berisi payload CSRF.
Kesalahan Umum dalam Pencegahan CSRF
Berdasarkan pengalaman membantu beberapa klien, kesalahan-kesalahan berikut paling sering saya temui:
- Mengandalkan captcha sebagai proteksi CSRF
Captcha bukan solusi CSRF. - Hanya memakai header Referer
Referer bisa dihapus di beberapa kondisi. - Tidak memberikan token ke endpoint AJAX
AJAX juga rentan CSRF seperti form biasa. - Token CSRF tidak diverifikasi dengan benar
Ada yang generate token tapi tidak dicek di server. - Token CSRF disimpan di cookie
Kesalahan fatal karena cookie otomatis terkirim.
Pentingnya Memahami dan Mengatasi Serangan CSRF
Dalam cybersecurity, kita sering fokus ke serangan besar seperti SQL Injection atau XSS. Namun CSRF tidak boleh diremehkan karena:
- Memanfaatkan kepercayaan server terhadap browser pengguna.
- Eksploitasinya sangat mudah.
- Dampaknya bisa langsung terasa.
Di era aplikasi web modern yang penuh fitur transaksi, CSRF bisa menyebabkan kerusakan finansial dan reputasi.
CSRF adalah serangan klasik namun masih sangat relevan dan berbahaya. Dengan memahami cara kerjanya, kita bisa membuat sistem yang lebih tangguh dan aman.
- Gunakan CSRF token di semua endpoint yang memodifikasi data.
- Aktifkan SameSite Cookie segera.
- Cek origin dan referer untuk permintaan sensitif.
- Terapkan best practice dari framework yang Anda gunakan.
- Lakukan review keamanan secara rutin.
Keamanan aplikasi bukan soal menambahkan fitur rumit, tetapi memastikan setiap permintaan adalah permintaan yang sah. Dengan mitigasi yang tepat, serangan CSRF bisa dicegah dengan sangat efektif.
Sebagai penutup, jika Anda ingin bisnis Anda semakin dikenal dan tampil di halaman pertama Google, Jasa SEO Terpercaya Optimaise siap membantu Anda. Dengan strategi SEO yang telah terbukti efektif serta pengalaman dalam meningkatkan visibilitas berbagai bisnis di Malang, Bali, dan Jakarta, kami siap membawa website Anda ke level berikutnya. Jangan biarkan pesaing melangkah lebih dulu—optimalkan website Anda sekarang juga.
Dapatkan strategi SEO terbaik untuk pertumbuhan bisnis Anda dengan mengunjungi optimaise.co.id dan berlangganan layanan kami untuk hasil yang maksimal.

