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:

  1. Kamu klik “Login with Google”

  2. Kamu diarahkan ke halaman login Google

  3. Setelah izin diberikan, Google mengirimkan kode/token kembali ke Aplikasi A

  4. 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

  1. Penyerang login ke Google dan mendapat token dari Google

  2. Penyerang menyisipkan link ke situs korban:

    arduino
    https://aplikasimu.com/auth/callback?code=TOKEN_PENYERANG
  3. Korban (yang sudah login ke aplikasimu) mengklik link tersebut

  4. Server aplikasimu menerima token, dan menganggap korban adalah penyerang

  5. 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.

url
https://accounts.google.com/o/oauth2/auth?client_id=...&state=abc123

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