Mengapa Kita Harus Waspada?

Bayangkan kamu membuka sebuah website, lalu mengisi form komentar. Kamu berharap komentar itu hanya menampilkan teks biasa. Tapi ternyata, ada orang yang menyisipkan kode berbahaya di dalam komentar tersebut. Saat dibuka, kode itu langsung berjalan di browserBaik, Rasya. Saya buatkan artikel dengan tema Cross-Site Scripting (XSS) yang bisa kamu gunakan untuk publikasi di Medium. Gaya penulisan saya buat naratif, ringan, dan informatif agar mudah dipahami pembaca umum.

Mengapa XSS Masih Relevan?

Bayangkan kamu membuka sebuah website, lalu ada kolom komentar. Kamu menulis sesuatu, dan komentar itu muncul di halaman. Kedengarannya normal, bukan? Tapi bagaimana jika seseorang menulis bukan sekadar teks, melainkan kode berbahaya yang bisa berjalan di browser orang lain?

Itulah inti dari Cross-Site Scripting (XSS). Serangan ini memanfaatkan celah validasi input untuk menyisipkan script berbahaya ke dalam halaman web. Meski sudah lama dikenal, XSS masih sering ditemukan di aplikasi modern.

Eksperimen Sederhana: Menyusup Lewat Kolom Komentar

Saya mencoba membuat form komentar sederhana dengan PHP:

<?php
$comment = $_POST['comment'];
echo "<p>$comment</p>";
?>

Normalnya, jika pengguna menulis:

Halo, ini komentar saya!

Maka hasilnya tampil biasa.

Namun jika seseorang menulis:

<script>alert('Anda kena XSS!');</script>

Browser akan mengeksekusi script tersebut, bukan menampilkannya sebagai teks. Hasilnya: muncul pop-up "Anda kena XSS!" setiap kali halaman dibuka.

Dampak Nyata

  • Pencurian data pengguna: misalnya cookie session bisa dicuri.
  • Phishing: penyerang bisa menampilkan form palsu untuk mencuri password.
  • Defacement: tampilan website bisa diubah sesuka hati.
  • Penyebaran malware: script berbahaya bisa diarahkan ke situs lain.

Cara Mencegah XSS

Untungnya, ada langkah-langkah sederhana untuk mencegah XSS:

  1. Escape Output Gunakan fungsi seperti htmlspecialchars() di PHP agar input ditampilkan sebagai teks, bukan dieksekusi.
echo "<p>" . htmlspecialchars($comment) . "</p>";
  1. Validasi Input Pastikan data sesuai format yang diharapkan (misalnya hanya huruf/angka).
  2. Content Security Policy (CSP) Tambahkan aturan di header HTTP untuk membatasi eksekusi script.
  3. Gunakan Framework Modern Banyak framework sudah menyediakan proteksi otomatis terhadap XSS.

Refleksi

Eksperimen ini menunjukkan betapa mudahnya XSS dilakukan jika input pengguna tidak divalidasi. Serangan ini sering dianggap "sepele" karena hanya menampilkan pop-up, padahal dampaknya bisa jauh lebih serius: pencurian data, manipulasi tampilan, hingga penyebaran malware.

Sebagai developer, kita harus selalu ingat bahwa setiap input pengguna adalah potensi ancaman. Menulis kode aman bukan pilihan, melainkan kewajiban.

Penutup

Cross-Site Scripting adalah pengingat bahwa keamanan web bukan hanya soal login atau enkripsi. Bahkan kolom komentar sederhana bisa jadi pintu masuk serangan. Dengan validasi input, escaping output, dan kebijakan keamanan tambahan, kita bisa melindungi aplikasi dari ancaman XSS.