DEV Community

Cover image for Praktikum Keamanan Web: Cross-Site Request Forgery (CSRF) πŸ˜±πŸ›‘οΈ
ahmadasroni38
ahmadasroni38

Posted on

Praktikum Keamanan Web: Cross-Site Request Forgery (CSRF) πŸ˜±πŸ›‘οΈ

Halo, teman-teman mahasiswa! Selamat datang di praktikum keren tentang Cross-Site Request Forgery atau CSRF – salah satu serangan web yang licik banget! Bayangkan kamu lagi login di bank online, terus buka tab lain ke situs jahat. Tanpa sadar, situs jahat itu bisa "paksa" browser kamu kirim request ke bank buat transfer uang ke hacker – padahal kamu nggak klik apa-apa! Serem kan? Ini karena browser otomatis kirim cookie autentikasi kalau request dari situs lain.

CSRF kayak "pemalsuan permintaan" dari situs lain, manfaatin kepercayaan browser ke cookie session. Yuk kita pelajari bareng, santai tapi seru, dengan contoh gampang dan ilustrasi visual!

Ilustrasi klasik ini nunjukin alur serangan CSRF – victim tergoda klik atau buka situs jahat, terus request jahat dikirim otomatis!

Diagram sederhana ini gambarin gimana hacker "nyamar" pakai session victim – super jelas!

Apa Itu CSRF? πŸ€”

CSRF adalah serangan di mana situs jahat memaksa browser user yang sudah login ke situs target untuk melakukan aksi tidak diinginkan (transfer uang, ubah password, delete akun, dll).

Syarat utama:

  • User sudah login (ada cookie session valid).
  • Aksi penting pakai method GET atau POST tanpa proteksi.
  • Browser otomatis kirim cookie ke domain asal.

Flowchart detail ini dari PortSwigger – langkah demi langkah serangan CSRF, langsung paham!

Contoh 1: Transfer Uang di Bank Online (Klasik Banget!) πŸ’Έ

Situs bank rentan: Form transfer pakai GET.

http://bank.com/transfer?jumlah=1000000&rekening_tujuan=12345678
Enter fullscreen mode Exit fullscreen mode

Hacker buat situs jahat:

<img src="http://bank.com/transfer?jumlah=5000000&rekening_tujuan=hacker123" width="1" height="1">
Enter fullscreen mode Exit fullscreen mode

Victim yang sudah login bank buka situs jahat β†’ Browser load gambar, otomatis kirim request transfer ke hacker! Uang hilang tanpa victim sadar.

Contoh bank transfer ini persis gambarin bahaya CSRF – duit lenyap diam-diam!

Contoh 2: Ubah Email di Profile (POST Attack)

Form rentan (POST tanpa proteksi):

<form action="/ubah-email" method="POST">
    <input name="email" value="baru@email.com">
    <button>Simpan</button>
</form>
Enter fullscreen mode Exit fullscreen mode

Situs jahat:

<form action="http://situs.com/ubah-email" method="POST" id="jahat">
    <input type="hidden" name="email" value="hacker@evil.com">
</form>
<script>document.getElementById('jahat').submit();</script>
Enter fullscreen mode Exit fullscreen mode

Victim buka β†’ Form otomatis submit, email diganti jadi milik hacker!

Contoh 3: Like atau Delete Post di Sosmed

Kalau like pakai GET: ?post_id=123&action=like β†’ Hacker bisa buat img tag buat auto-like atau delete.

Cara Mencegah CSRF (Super Efektif!) πŸ”βœ¨

  1. Gunakan CSRF Token (Yang Paling Umum & Kuat)
    • Server generate token unik per session/form.
    • Token dikirim di form (hidden input) atau header.
    • Server cek token sebelum proses request.

Diagram ini nunjukin gimana CSRF token blokir serangan – situs jahat nggak punya token valid!

Visual proteksi token ini bikin langsung ngerti kenapa aman!

  1. SameSite Cookie: Set cookie dengan SameSite=Lax atau Strict β†’ Browser nggak kirim cookie ke request cross-site.

  2. Gunakan POST untuk aksi penting, bukan GET.

  3. Double Submit Cookie atau framework built-in (Laravel, Django otomatis proteksi).

Bonus: CSRF vs XSS πŸ†š

CSRF manfaatin kepercayaan ke cookie, XSS suntik script.

Comparison ini jelasin bedanya – dua musuh berbeda tapi sama bahayanya!

Latihan Seru Buat Kamu! πŸ’ͺπŸ”₯

  1. Buat form transfer rentan di PHP, test CSRF pakai img tag.
  2. Tambahin CSRF token manual, test lagi (harusnya gagal!).
  3. Coba di labs seperti PortSwigger Web Security Academy (ada lab CSRF gratis).
  4. Diskusi: Kenapa banyak bank pakai token + OTP ekstra?

Selamat praktikum, guys! CSRF ini serangan "diam-diam" yang licik, tapi dengan token, website kamu aman kayak brankas bank πŸ’° Jadi developer yang aware security dari sekarang! Ingat: Selalu proteksi aksi state-changing! Keep coding safely and have fun! πŸŽ‰πŸ”

Top comments (0)