Cross-Site Scripting (XSS) Lab
Pelajari bagaimana hacker menyisipkan script jahat ke website dan cara mencegahnya!
📖 Apa itu XSS (Cross-Site Scripting)?
Cross-Site Scripting (XSS) adalah serangan di mana hacker menyisipkan kode JavaScript berbahaya ke dalam halaman website. Kode tersebut kemudian dijalankan di browser pengunjung lain yang membuka halaman tersebut.
Bayangkan ada buku tamu di website. Kamu menulis komentar: "Halo!". Tapi hacker menulis kode JavaScript di kolom komentar. Ketika orang lain melihat halaman itu, kode jahat tersebut berjalan di browser mereka!
3 Jenis XSS:
Script disimpan di database (misalnya di komentar). Setiap orang yang membuka halaman akan terkena.
Script dikirim via URL/form dan langsung ditampilkan kembali tanpa disimpan.
Script mengubah DOM secara langsung di browser tanpa melibatkan server.
💀 Pencarian — Reflected XSS
Coba ketik: <script>alert('XSS!')</script>
atau <img src=x onerror=alert('Hacked!')>
💀 Buku Tamu — Stored XSS
Tulis komentar! Coba sisipkan: <b>Teks Tebal</b>
atau <h1 style="color:red">HACKED!</h1>
atau bahkan <img src=x onerror=alert('XSS!')>
📋 Payload XSS untuk Dicoba:
htmlspecialchars().
Coba sisipkan payload XSS yang sama — script tidak akan dieksekusi!
🛡️ Pencarian — AMAN dari Reflected XSS
Coba ketik payload XSS yang sama — kali ini akan ditampilkan sebagai teks biasa!
🛡️ Buku Tamu — AMAN dari Stored XSS
Coba sisipkan script! Input akan di-escape sehingga ditampilkan sebagai teks biasa.
📊 Perbandingan Kode: Rentan vs Aman
💀 Kode RENTAN
🛡️ Kode AMAN
htmlspecialchars() mengubah:
| Karakter | Menjadi | Keterangan |
|---|---|---|
< | < | Mencegah tag HTML |
> | > | Mencegah tag HTML |
& | & | Escape ampersand |
" | " | Mencegah keluar dari atribut |
' | ' | Mencegah keluar dari atribut |
🔑 Cara Mencegah XSS:
- ✅ Output Encoding — Selalu gunakan htmlspecialchars() saat menampilkan data user
- ✅ CSP Header — Content Security Policy untuk membatasi sumber script
- ✅ Input Validation — Validasi dan filter input (whitelist approach)
- ✅ HttpOnly Cookie — Cegah JavaScript akses cookie session
- ✅ Framework Modern — React, Vue, Angular auto-escape output by default