Biasanya, serangan CSRF (Cross-Site Request Forgery) dan XSS (Cross-Site Scripting) dianggap sebagai dua hal yang terpisah.
Tapi tahukah kamu? Ketika dua serangan ini digabung, dampaknya bisa jauh lebih berbahaya.
Inilah yang disebut dengan CSRF Chain Attack โ serangan ganda yang saling mendukung.
Yuk, kita bahas dengan bahasa yang sederhana dan mudah dipahami!
๐ง Pengertian Singkat
-
CSRF = Menipu browser pengguna agar mengirim permintaan berbahaya ke server tanpa sepengetahuannya.
-
XSS = Menyuntikkan skrip berbahaya ke dalam halaman web yang akan dijalankan oleh browser korban.
Kalau CSRF bisa mengontrol server,
dan XSS bisa mengontrol browser,
maka jika digabung, penyerang bisa mengontrol dua sisi sekaligus.
๐ฏ Ilustrasi Sederhana
Bayangkan ada aplikasi web toko online. Di sana ada dua celah:
-
Endpoint ubah profil tidak memakai CSRF token
-
Kolom komentar punya celah XSS (tidak memfilter
<script>
)
Penyerang bisa:
-
Gunakan XSS untuk menyisipkan JavaScript di komentar.
-
JavaScript itu akan:
-
Mengambil cookie atau token
-
Mengirim permintaan CSRF ke endpoint yang tidak aman
-
Hasilnya?
-
Akun korban bisa diubah, diambil alih, atau digunakan untuk transaksi tanpa izin.
๐ฅ Contoh Serangan CSRF + XSS
Langkah 1: Penyerang Sisipkan Komentar Jahat
Langkah 2: Pengguna Buka Halaman Komentar
-
Browser otomatis menjalankan JavaScript tadi (karena XSS).
-
Permintaan POST dikirim ke server, membawa cookie login korban.
-
Server tidak punya perlindungan CSRF โ menganggap permintaan sah.
-
Password pengguna langsung berubah!
๐งจ Kenapa Gabungan Ini Berbahaya?
Efek Gabungan | Penjelasan |
---|---|
XSS mencuri data | Bisa ambil token, cookie, atau info sensitif |
XSS mengirim CSRF otomatis | Tanpa klik, tanpa aksi pengguna |
CSRF mengubah data | Melakukan aksi berbahaya di server (tanpa izin) |
Serangan sulit dideteksi | Tidak terlihat jelas oleh pengguna |
๐ก๏ธ Cara Mencegah CSRF Chain
โ 1. Gunakan CSRF Token di Semua Aksi Sensitif
Pastikan semua permintaan POST, PUT, DELETE harus menyertakan token unik, dan server memverifikasinya.
โ 2. Filter Input untuk Mencegah XSS
Jangan izinkan tag <script>
, onerror
, onclick
, dan atribut JavaScript masuk ke halaman.
Gunakan library seperti:
-
DOMPurify (untuk sanitasi HTML)
-
HTMLPurifier (di PHP)
โ
3. Gunakan Cookie SameSite=Strict
Agar cookie tidak terkirim saat permintaan berasal dari situs asing.
โ 4. Tambahkan Header Keamanan
Gunakan:
-
Content-Security-Policy
untuk membatasi JavaScript -
X-Frame-Options: DENY
untuk cegah clickjacking
๐ Rangkuman
Masalah | Solusi Aman |
---|---|
Form tanpa CSRF | Tambahkan token di form dan validasi server |
Input bisa disusupi | Filter/sanitasi input untuk cegah XSS |
Cookie dikirim bebas | Gunakan SameSite dan Secure |
JavaScript bebas | Batasi dengan Content-Security-Policy |
๐งพ Kesimpulan
Serangan CSRF Chain adalah kombinasi mematikan antara XSS dan CSRF.
Keduanya saling mendukung dan bisa menyebabkan:
๐ Data dicuri + ๐ฏ Aksi dilakukan tanpa izin
Untuk mencegahnya:
-
Lindungi form dengan token
-
Filter input pengguna
-
Atur cookie dan header dengan benar
Jangan hanya fokus pada satu jenis serangan โ pikirkan bagaimana serangan bisa digabungkan.
Karena di dunia nyata, penyerang selalu kreatif.
Penulias : Muhammad Aditya Alkhawarizmi
Nim : 23156201023
jurusan : Sistem Komputer