Digital Transformation
XSS (Cross-Site Scripting)
TL;DR: XSS (Cross-Site Scripting) adalah serangan saat penyerang menyisipkan kode JavaScript jahat ke halaman web yang dipercaya pengguna. Browser korban mengeksekusinya seolah datang dari situs aslinya, sehingga session cookie, data form, dan kredensial bisa dicuri. Pertahanan utamanya: input sanitization, output encoding, dan kebijakan Content Security Policy yang ketat.
Apa itu XSS?
XSS terjadi ketika sebuah aplikasi menerima data dari pengguna lalu menampilkannya kembali tanpa pembersihan yang memadai, sehingga skrip yang disisipkan ikut dieksekusi browser. Skrip itu jalan dengan hak akses domain situs target, jadi ia bisa membaca cookie, mengambil token, atau mengirim permintaan atas nama pengguna. Dalam praktik audit yang Vito Atmo lakukan untuk klien e-commerce dan LMS, kolom komentar, parameter pencarian, dan field profil yang tidak di-encode adalah titik masuk paling sering.
Jenis XSS
| Jenis | Lokasi payload | Contoh kanal |
|---|---|---|
| Stored | Disimpan di database server | Komentar artikel, review produk |
| Reflected | Muncul lewat URL/parameter | Halaman hasil pencarian |
| DOM-based | Dieksekusi di sisi klien dari document.location atau innerHTML | Single-page application |
Stored XSS paling berbahaya karena dampaknya beruntun ke setiap pengunjung halaman tersebut.
Kenapa Penting?
Untuk pemilik website bisnis di Indonesia, XSS bukan sekadar isu teknis. Ia bisa berakhir pada akun admin yang diambil alih, data customer bocor, hingga blacklist Google Safe Browsing yang memutus traffic organik. Dokumentasi OWASP memasukkan injection (termasuk XSS) sebagai salah satu top risk web tahunan yang konsisten muncul sejak 2017. Kombinasi dengan Tabnabbing atau social engineering membuat ekspektasi trust pengguna mudah dieksploitasi.
Pertanyaan Umum
Apakah HTTPS otomatis melindungi dari XSS?
Tidak. HTTPS hanya mengenkripsi jalur transmisi. XSS mengeksploitasi konten yang sudah sampai ke browser, jadi enkripsi tidak relevan untuk pertahanan ini.
Pertahanan paling praktis untuk tim non-security?
Gunakan framework yang escape default (React, Next.js menggunakan JSX yang otomatis encode), aktifkan CSP ketat, dan biasakan validasi input di server. Hindari dangerouslySetInnerHTML kecuali sumbernya benar-benar tepercaya.
Istilah Terkait