Digital Transformation
XSS (Cross-Site Scripting)
TL;DR: XSS (Cross-Site Scripting) adalah celah keamanan saat penyerang menyisipkan kode JavaScript berbahaya ke halaman web, lalu kode itu berjalan di browser pengunjung lain. Dampaknya mulai dari pencurian sesi login sampai pengalihan ke situs palsu. Pencegahan utamanya: validasi input, encoding output, dan penerapan Content Security Policy.
Apa itu XSS?
XSS (Cross-Site Scripting) terjadi ketika sebuah situs menampilkan data dari pengguna tanpa membersihkannya lebih dulu, sehingga skrip berbahaya ikut tereksekusi di browser pengunjung. Bayangkan kolom komentar yang menerima teks apa pun. Jika seseorang menulis potongan skrip dan situs menampilkannya mentah, skrip itu akan berjalan di perangkat setiap orang yang membuka halaman tersebut.
Berbeda dengan serangan yang menargetkan server, XSS menargetkan pengunjung. Inilah alasannya XSS sering dipasangkan dengan lapisan pertahanan seperti Content Security Policy yang membatasi sumber skrip yang boleh dijalankan browser.
Jenis XSS
| Jenis | Cara kerja | Contoh |
|---|---|---|
| Stored | Skrip disimpan di database lalu tampil ke banyak pengguna | Komentar atau profil yang tercemar |
| Reflected | Skrip dikirim lewat URL dan langsung dipantulkan ke halaman | Link hasil pencarian yang dimanipulasi |
| DOM-based | Skrip dieksekusi murni di sisi browser lewat manipulasi DOM | Parameter URL yang dibaca JavaScript tanpa validasi |
Kenapa Penting?
Untuk pemilik website bisnis di Indonesia, satu celah XSS bisa berarti sesi login pelanggan dicuri atau halaman checkout dialihkan ke form palsu. Dalam beberapa audit yang Vito Atmo lakukan untuk klien e-commerce, sumber risiko paling sering adalah field input yang menampilkan ulang teks pengguna tanpa encoding. Pencegahannya tidak mahal: bersihkan input, encode output sesuai konteks (HTML, atribut, JavaScript), dan terapkan CSP. Praktik ini sejalan dengan panduan OWASP soal XSS.
Pertanyaan Umum
Apakah XSS sama dengan SQL injection?
Tidak. XSS menyisipkan skrip yang berjalan di browser pengunjung, sementara SQL injection menyerang database di server. Keduanya berakar dari input yang tidak divalidasi, tapi target dan dampaknya berbeda.
Apakah HTTPS mencegah XSS?
Tidak sepenuhnya. SSL/HTTPS mengenkripsi data saat dikirim, tapi tidak menyaring skrip berbahaya di dalam konten. XSS tetap perlu dicegah di level kode aplikasi.