Pernah login ke sebuah aplikasi pakai akun Google, Facebook, atau GitHub?
Itu artinya kamu sedang menggunakan sistem OAuth — cara praktis untuk login tanpa bikin akun baru. Tapi tahukah kamu? Kalau tidak hati-hati, OAuth juga bisa jadi celah berbahaya untuk serangan CSRF.
Banyak developer lupa atau tidak sadar bahwa OAuth rentan disalahgunakan, terutama jika langkah-langkah keamanannya tidak lengkap.
🧠 Apa Itu OAuth?
OAuth adalah standar yang memungkinkan satu aplikasi (misalnya: Aplikasi A) meminta akses ke data milikmu di aplikasi lain (misalnya: Google), tanpa harus tahu password kamu.
Proses singkat OAuth:
-
Kamu klik “Login with Google”
-
Kamu diarahkan ke halaman login Google
-
Setelah izin diberikan, Google mengirimkan kode/token kembali ke Aplikasi A
-
Aplikasi A memakai kode itu untuk memverifikasi identitas kamu
Semuanya tampak aman… tapi tunggu dulu.
💣 Di Mana Bahaya CSRF?
Masalahnya ada di langkah ke-3, saat kode/token dikirim balik ke Aplikasi A.
Jika aplikasi tidak mengecek siapa yang mengirim token itu, penyerang bisa:
-
Menyusupkan token mereka sendiri
-
Membajak akun orang lain
-
Login sebagai orang lain tanpa password
Ini yang disebut OAuth CSRF Attack — serangan CSRF yang menargetkan proses OAuth login.
🎭 Contoh Serangan OAuth CSRF
-
Penyerang login ke Google dan mendapat token dari Google
-
Penyerang menyisipkan link ke situs korban:
-
Korban (yang sudah login ke aplikasimu) mengklik link tersebut
-
Server aplikasimu menerima token, dan menganggap korban adalah penyerang
-
Hasilnya: korban “terlogin” ke akun penyerang, dan semua tindakan korban akan dilakukan atas nama penyerang
Bayangkan: korban klik “hapus akun”, yang terhapus justru akun penyerang. Tapi kalau korban isi data pribadi—datanya masuk ke akun penyerang!
❌ Kesalahan Umum Developer
-
Tidak menyimpan dan memverifikasi “state” parameter (pengaman OAuth bawaan)
-
Tidak mengecek asal permintaan (Referer / Origin)
-
Menganggap token OAuth selalu aman tanpa validasi tambahan
✅ Solusi: Cara Mengamankan OAuth dari CSRF
1. Gunakan Parameter state
OAuth menyediakan parameter state
yang dikirim bersama permintaan login, lalu diverifikasi saat callback.
Simpan state
di session sebelum redirect ke Google, lalu cocokkan saat callback.
2. Validasi Referer / Origin
Pastikan permintaan callback
benar-benar datang dari domain resmi seperti Google atau Facebook.
3. Jangan Proses Token Sembarangan
Jangan langsung terima token tanpa validasi. Selalu periksa apakah:
-
Token valid
-
State cocok
-
User sesuai dengan identitas
📌 Rangkuman Singkat
Masalah OAuth | Dampaknya | Solusi Aman |
---|---|---|
Tidak pakai state |
Bisa diserang CSRF login | Tambahkan & validasi state |
Tidak cek asal permintaan | Penyerang bisa spoof permintaan | Cek Referer atau Origin |
Token diterima mentah-mentah | Bisa login sebagai orang lain | Verifikasi token & pengguna |
🧾 Kesimpulan
OAuth memang memudahkan login pengguna, tapi jika tidak dikonfigurasi dengan aman, justru bisa menjadi jalan masuk bagi CSRF.
Jangan hanya fokus membuat fitur bisa jalan—pastikan juga proses login OAuth kamu aman dan terlindungi.
Ingat: keamanan bukan soal “apakah bisa login”, tapi “siapa yang benar-benar login”.
Penulias : Muhammad Aditya Alkhawarizmi
Nim : 23156201023
jurusan : Sistem Komputer