Pendahuluan
Dalam pengembangan web modern, banyak developer fokus pada fitur dan tampilan, namun sering mengabaikan aspek keamanan.
Salah satu celah yang paling sering terjadi adalah Cross-Site Scripting (XSS), yaitu teknik serangan yang memungkinkan penyerang menyisipkan script berbahaya ke dalam halaman web.
Artikel ini tidak hanya membahas teori, tetapi juga menyajikan eksperimen langsung untuk memahami bagaimana XSS terjadi, dampaknya, serta cara pencegahannya.
Apa Itu XSS
Cross-Site Scripting (XSS) terjadi ketika aplikasi web menampilkan input pengguna tanpa validasi atau sanitasi yang tepat. Akibatnya, browser akan mengeksekusi input tersebut sebagai kode.
Jenis XSS:
- Reflected XSS
- Stored XSS
- DOM-based XSS
Pada eksperimen ini, fokus pada Reflected XSS karena paling sederhana untuk diuji.
Setup Eksperimen
Lingkungan yang digunakan:
- Localhost (XAMPP atau Laragon)
- PHP dan HTML
- Browser (Google Chrome)
Tujuan: Menguji apakah input pengguna dapat dieksekusi sebagai script oleh browser.
Aplikasi Rentan (Vulnerable Code)
<form method="GET">
<input type="text" name="comment">
<button type="submit">Kirim</button>
</form>
<p>
Komentar: <?php echo $_GET['comment']; ?>
</p>Analisis:
- Input pengguna langsung ditampilkan
- Tidak ada validasi
- Tidak ada encoding
Hal ini membuka celah XSS.
Eksperimen Serangan
Input yang digunakan:
<script>alert('XSS berhasil')</script>Hasil:
- Muncul popup alert di browser
- Script berhasil dijalankan
Hal ini menunjukkan bahwa aplikasi rentan terhadap XSS.
Analisis
Penyebab utama XSS dalam eksperimen ini:
- Browser tidak membedakan antara data dan kode
- Tidak adanya output encoding
- Input pengguna dianggap aman tanpa validasi
Dampak XSS
Serangan XSS dapat dimanfaatkan untuk:
- Mencuri cookie (session hijacking)
- Membuat halaman phishing
- Mengubah tampilan website
- Merekam input pengguna
Alert yang muncul hanyalah bukti bahwa script dapat dijalankan, bukan tujuan utama serangan.
Cara Mencegah XSS
1. Output Encoding
echo htmlspecialchars($_GET['comment']);Hasil:
- Script tidak dijalankan
- Ditampilkan sebagai teks biasa
2. Validasi Input
- Membatasi karakter berbahaya
- Menggunakan whitelist input
3. Content Security Policy (CSP)
- Membatasi sumber script yang boleh dijalankan
Perbandingan
KondisiHasilTanpa proteksiScript dijalankanDengan htmlspecialcharsScript aman
Insight dari Eksperimen
Eksperimen ini menunjukkan bahwa kerentanan XSS sering terjadi bukan karena sistem yang kompleks, tetapi karena kesalahan dasar dalam menangani input.
Banyak developer hanya fokus pada validasi input, padahal output encoding memiliki peran yang lebih penting dalam mencegah XSS.
Kesimpulan
Cross-Site Scripting (XSS) adalah kerentanan yang mudah terjadi namun berdampak besar terhadap keamanan aplikasi web. Dengan memahami cara kerja serangan dan menerapkan teknik pencegahan seperti output encoding, risiko dapat diminimalkan secara signifikan.
Referensi
- OWASP Foundation — https://owasp.org
- Stuttard & Pinto — The Web Application Hacker's Handbook
- Grossman — Cross-Site Scripting Attacks: Exploits and Defense
- MDN Web Docs — https://developer.mozilla.org
- W3Schools — https://www.w3schools.com
Penutup
Keamanan aplikasi web seharusnya menjadi perhatian sejak awal pengembangan. Kesalahan kecil dalam menangani input dapat membuka celah besar yang berdampak serius.