Cross-Site Scripting (XSS)

12 Jun 2026 | Oleh: rastono sumardi

Cross-Site Scripting (XSS)

Apa itu Cross-Site Scripting (XSS)?

Dalam bahasa yang sederhana, XSS adalah celah keamanan di mana seorang penyerang (hacker) berhasil menyelipkan kode berbahaya (biasanya berupa JavaScript) ke dalam sebuah situs web yang sebenarnya sah dan terpercaya.

Ketika pengguna lain mengunjungi halaman web tersebut, browser mereka akan menganggap kode tersebut adalah bagian resmi dari situs dan langsung menjalankannya. Akibatnya, penyerang bisa mencuri data sensitif pengguna (seperti cookie atau session login), mengambil alih akun, atau mengarahkan pengguna ke situs web palsu.

Analogi Penerapan XSS: "Papan Pengumuman Kafe"

Bayangkan Anda memiliki sebuah kafe yang menyediakan papan pengumuman kosong. Anda mengizinkan semua pelanggan untuk menempelkan kertas berisi kesan dan pesan mereka di sana agar bisa dibaca oleh pelanggan lain.

  • Skenario Normal (Pengguna Sah): Pelanggan A menulis, "Kopi di sini sangat enak!" dan menempelkannya. Pelanggan lain membacanya sebagai ulasan biasa.

  • Skenario XSS (Penyerang): Pelanggan B (penyerang) datang dan menempelkan kertas yang desainnya sangat mirip dengan pengumuman resmi kafe. Tulisannya berbunyi: "PENGUMUMAN RESMI: Promo hari ini, silakan tinggalkan dompet Anda di meja kasir untuk mendapatkan kopi gratis."

  • Tanpa Validasi (Celah XSS): Karena Anda (sebagai sistem web) langsung memajang kertas itu tanpa membacanya atau memvalidasinya terlebih dahulu, pelanggan lain yang datang akan membaca tulisan tersebut. Mereka mengira itu adalah perintah resmi dari kafe, lalu menuruti instruksi tersebut (menyerahkan dompetnya). Inilah yang terjadi ketika browser mengeksekusi script jahat; browser "menuruti" perintah karena mengira itu dari pembuat situs.

Bagaimana XSS Terjadi di Dunia Nyata?

  1. Injeksi: Penyerang memasukkan kode berbahaya melalui formulir input yang ada di web Anda (misalnya kolom komentar, kolom pencarian, atau profil pengguna). Contoh kodenya: <script>KirimDataLoginPenggunaKeServerHacker()</script>.

  2. Penyimpanan/Pemantulan: Server web Anda menerima teks tersebut, menyimpannya ke dalam database, lalu menampilkannya kembali di halaman web saat ada pengguna lain yang membuka halaman komentar tersebut.

  3. Eksekusi: Browser pengguna pengunjung melihat tag <script>...</script>. Bukannya menampilkannya sebagai teks biasa, browser mengartikan itu sebagai instruksi bahasa pemrograman dan langsung menjalankannya secara diam-diam.

Cara Mencegahnya: Konsep Escaping Output

Kembali ke analogi papan pengumuman kafe. Bagaimana cara mencegah penipuan tadi?

Sebagai pemilik kafe, Anda membuat aturan baru: "Semua pesan dari pelanggan tidak boleh langsung ditempel. Saya akan menyalin ulang pesan mereka menggunakan mesin ketik khusus."

Ketika Pelanggan B mencoba mengirim pesan penipuan tadi, mesin ketik Anda secara otomatis menambahkan tanda kutip tebal dan label peringatan. Hasilnya di papan pengumuman akan terlihat seperti ini:

Pelanggan B menulis sebuah teks yang berbunyi: "PENGUMUMAN RESMI: Promo hari ini..."

Dengan cara ini, pelanggan lain hanya akan membacanya sebagai cerita/kutipan teks biasa, bukan sebagai instruksi resmi.

Dalam dunia pemrograman (Escaping): Escaping (atau Encoding) adalah proses mengubah karakter khusus yang memiliki makna dalam bahasa pemrograman HTML/JavaScript menjadi teks biasa (HTML Entities).

  • Karakter < diubah menjadi &lt;

  • Karakter > diubah menjadi &gt;

Jadi, ketika hacker menginput: <script>alert('Hack!')</script>, sistem Anda melakukan escaping sebelum menampilkannya ke layar, sehingga yang dikirim ke browser adalah: &lt;script&gt;alert('Hack!')&lt;/script&gt;

Browser hanya akan menampilkan tulisan tersebut di layar sebagai teks (seperti Anda membaca tulisan ini sekarang), namun tidak akan mengeksekusinya sebagai program.

Ditulis oleh:

rastono sumardi

Kontributor Banggai Kreatif

Bagikan Artikel Ini: