Pendahuluan

Di dunia keamanan web, banyak istilah teknis yang terdengar mirip, padahal memiliki makna dan dampak yang sangat berbeda. Salah satu contohnya adalah CSRF dan SSRF. Keduanya sama-sama mengandung kata “Request Forgery” dan sering membuat bingung, terutama bagi yang baru belajar keamanan web.

Padahal, CSRF (Cross-Site Request Forgery) dan SSRF (Server-Side Request Forgery) memiliki cara kerja, target, dan dampak yang sangat berbeda. Artikel ini akan membantu kamu memahami perbedaan keduanya dengan cara yang sederhana.

Apa Itu CSRF (Cross-Site Request Forgery)?

CSRF adalah serangan yang mengecoh pengguna yang sedang login ke sebuah website agar tanpa sadar melakukan aksi tertentu, seperti mengubah password, mengirim uang, atau menghapus data.

Bagaimana Cara Kerjanya?

Misalnya kamu sedang login ke akun bank. Lalu kamu membuka website lain yang ternyata dibuat oleh penyerang. Di website itu, penyerang menyisipkan kode yang akan mengirimkan permintaan ke situs bank kamu, misalnya:

<img src="https://bank.com/transfer?to=hacker&amount=1000">

Jika situs bank tidak memeriksa asal permintaan, maka uangmu bisa saja ditransfer ke penyerang—padahal kamu tidak pernah menekan tombol apapun!

Apa Itu SSRF (Server-Side Request Forgery)?

Berbeda dengan CSRF yang menipu pengguna, SSRF menipu server.

Penyerang memanfaatkan celah di server agar server tersebut mengirim permintaan ke alamat yang tidak seharusnya, termasuk ke sistem internal yang seharusnya tidak bisa diakses dari luar.

Contoh Sederhana:

Sebuah website menyediakan fitur untuk mengambil gambar dari URL yang dikirim pengguna. Penyerang lalu mengirimkan URL seperti:

http://127.0.0.1/admin

Server kemudian tanpa sadar mengakses alamat lokal (localhost) dan membuka halaman admin internal. Jika tidak ada perlindungan, penyerang bisa membaca informasi rahasia atau bahkan mengambil alih server.

Perbandingan CSRF vs SSRF

Aspek CSRF SSRF
Target Pengguna (user) Server
Pelaku Korban yang sedang login Server yang mengirim permintaan
Media Serangan Browser pengguna Aplikasi web/server
Contoh Umum Transfer uang, ubah password Akses metadata server, intranet, admin panel
Tujuan Mengecoh pengguna untuk melakukan aksi Menyalahgunakan server untuk akses tersembunyi

Mengapa Banyak yang Bingung?

Kedua istilah ini terdengar mirip karena sama-sama mengandung kata “Request Forgery”, yaitu pemalsuan permintaan. Namun, yang dipalsukan dan siapa yang tertipu sangat berbeda:

  • CSRF → menipu pengguna
  • SSRF → menipu server

Mengetahui perbedaan ini sangat penting untuk menentukan jenis perlindungan yang harus digunakan.

Cara Mencegah Kedua Serangan Ini

Mencegah CSRF:

  • Gunakan CSRF Token pada setiap form.
  • Periksa Origin atau Referer header untuk memastikan permintaan datang dari sumber sah.
  • Gunakan cookie dengan atribut SameSite agar tidak dikirim dari domain lain

Mencegah SSRF:

  • Validasi input URL secara ketat.
  • Whitelist domain yang boleh diakses.
  • Blokir akses ke alamat internal seperti 127.0.0.1, 169.254.169.254 (metadata AWS), dan IP privat.
  • Gunakan firewall atau proxy dengan aturan khusus untuk request keluar.

Studi Kasus Nyata

  • CSRF: Facebook pernah mengalami bug yang memungkinkan pengguna menghapus foto hanya dengan membuka tautan tertentu.
  • SSRF: Pada 2019, Capital One diretas melalui SSRF. Penyerang berhasil mengakses metadata layanan cloud dan mengambil data pribadi jutaan orang.

Kesimpulan

Meskipun terdengar mirip, SSRF dan CSRF adalah dua jenis serangan yang sangat berbeda. CSRF menyerang pengguna, sementara SSRF menyasar server.

Mengetahui perbedaan ini bukan hanya penting bagi developer, tetapi juga bagi siapa saja yang peduli dengan keamanan data. Dengan memahami cara kerja dan menerapkan perlindungan yang tepat, kita bisa membuat aplikasi web jauh lebih aman dari kedua ancaman ini.