1. Klasifikasi Utama (Server vs Client Side)
OWASP membagi XSS menjadi dua kategori besar:
- Server XSS: Terjadi ketika aplikasi memasukkan data tidak aman ke dalam respons HTTP dari server. (Stored & Reflected tradisional masuk sini).
- Client XSS: Terjadi ketika data tidak aman diproses di sisi browser (DOM-based).
Detail per Jenis :
I. Stored XSS (Persistent)
- Konsep: Skrip tersimpan permanen di database server (contoh: komentar, profil).
- Alur: Hacker simpan script → Server simpan di DB → Setiap pengunjung buka halaman tersebut, script otomatis terkirim dan jalan di browser mereka. Boom!
II. Reflected XSS (Non-Persistent)
- Konsep: Skrip “numpang lewat” lewat parameter URL.
- Alur: Hacker kirim link jahat ke korban → Korban klik → Script dikirim ke server lalu dipantulkan kembali ke browser korban saat itu juga.
III. DOM-Based XSS
- Konsep: Kerentanan pada kode JavaScript di sisi client.
- Alur: Payload tidak masuk ke server, tapi langsung memanipulasi DOM (Document Object Model) browser melalui URL (fragment
#).
IV. Blind XSS
- Konsep: “Bom waktu” untuk Admin. Skrip masuk ke database (lewat form kontak/report), tapi baru meledak saat admin membuka dashboard panel.
V. Self-XSS
- Konsep: Social Engineering. Menipu user agar menyalin script berbahaya ke Console (F12) mereka sendiri.
Mitigasi (Kunci Utama):
- Input Validation: Pastikan input sesuai format.
- Output Encoding: Ubah
<script>jadi<script>agar hanya dianggap teks biasa oleh browser. - Content Security Policy (CSP): Membatasi dari mana script boleh dijalankan.
- HttpOnly Cookie: Mengunci cookie agar tidak bisa dicuri via
document.cookie.
1. Sisi Browser = Sisi Client (Wujudnya adalah Software)
Dalam konteks XSS, Client dan Browser adalah hal yang sama.
- Siapa mereka? Software yang digunakan untuk membuka web (Chrome, Firefox, Safari).
- Perannya: Tempat di mana “ranjau” (script XSS) meledak. Server hanya mengirimkan kode, tapi yang mengeksekusi/menjalankan kode jahat tersebut adalah mesin JavaScript di dalam Browser.
- Kenapa disebut Client-Side? Karena prosesnya terjadi di perangkat milik orang yang mengakses web, bukan di komputer milik perusahaan pemilik web (Server).
2. Pengguna = User = Visitor (Wujudnya adalah Manusia/Korban)
Ketiga istilah ini merujuk pada manusia yang sedang menggunakan browser tersebut.
- Siapa mereka? Orang yang tidak tahu apa-apa yang sedang mengunjungi website.
- Perannya: Target serangan. Mereka yang memiliki “hak akses” (seperti Cookie login) yang ingin dicuri oleh Hacker.
- Dalam skenario XSS: “User” mengklik link, lalu “Browser”-nya menjalankan script jahat tanpa seizin si “User”.
3. Server (Wujudnya adalah Komputer Pusat/Hosting)
- Siapa dia? Komputer pusat tempat website disimpan (Database, file PHP/NodeJS/Python).
- Perannya:
- Pada Stored XSS: Server berperan sebagai “gudang” tempat menyimpan script jahat.
- Pada Reflected XSS: Server hanya sebagai “papan pantul” yang menerima kiriman script lalu mengirimkannya kembali ke browser.