Panduan / OWASP dan keamanan aplikasi

Apa itu XSS? Cara mencegah skrip berbahaya di website

XSS terjadi ketika data yang tidak dipercaya dijalankan sebagai kode pada browser. Pemeriksaan perlu mengikuti tempat data ditampilkan, termasuk halaman admin dan pratinjau, bukan hanya formulir awal.

Di halaman ini

Apa yang terjadi saat XSS?

Cross-site scripting (XSS) membuat browser menjalankan konten yang seharusnya diperlakukan sebagai data. Dampaknya dapat berupa tindakan memakai sesi pengguna, perubahan tampilan, atau terbukanya informasi yang dapat diakses halaman tersebut.

Periksa semua tempat data muncul: komentar, hasil pencarian, nama berkas, notifikasi, dan dasbor petugas. Sebuah masukan bisa tersimpan dahulu lalu baru menimbulkan masalah ketika dibuka orang lain. Data dari URL atau respons API juga dapat menjadi masalah bila dimasukkan ke halaman melalui operasi yang tidak aman.

Contoh: catatan pelanggan di dasbor petugas

Dalam contoh fiktif ini, pelanggan menulis catatan pesanan. Halaman pelanggan menampilkannya sebagai teks, tetapi dasbor petugas memasukkan catatan itu sebagai HTML mentah. Pengamanan pada halaman pelanggan belum melindungi petugas.

Tim memutuskan bahwa catatan hanya perlu teks biasa. Pengembang memakai keluaran teks aman pada kedua halaman. Jika suatu fitur benar-benar membutuhkan format HTML, fitur itu memakai sanitasi HTML dengan aturan terbatas; bukan mengizinkan seluruh tag dan atribut.

Pilih perlindungan sesuai tempat data digunakan

Kebutuhan fitur Pilihan yang diperiksa
Menampilkan teks biasa Auto-escaping dari framework atau operasi seperti textContent
Membuat tautan dari masukan Validasi tujuan/skema URL dan encoding atribut yang sesuai
Mengizinkan tulisan berformat Sanitasi HTML dengan pustaka yang dipelihara dan aturan format yang jelas
Menyisipkan data ke kode atau event handler Ubah desain agar data tidak disisipkan langsung ke konteks berbahaya

Encoding HTML bukan solusi universal untuk JavaScript, CSS, dan URL. Periksa pula fitur framework yang sengaja melewati auto-escaping. Hasil sanitasi dapat kembali berisiko bila kode lain mengubahnya secara tidak aman.

Bukti perbaikan yang berguna

Pada lingkungan uji yang diizinkan, gunakan data buatan dan catat:

  • Titik masuk serta seluruh halaman yang menampilkan data tersebut.
  • Hasil yang diharapkan: teks tetap teks, atau format terbatas yang telah disanitasi.
  • Bukti peninjauan kode dan pengujian ulang pada tampilan pelanggan maupun petugas.
  • Uji regresi setelah perubahan komponen, editor, atau pustaka sanitasi.

Tidak munculnya jendela peringatan saja belum membuktikan seluruh jalur aman. Tetapkan perilaku yang diperiksa dan cakupannya. WAF, atribut cookie, dan CSP juga tidak menggantikan perbaikan cara aplikasi merender data.

Langkah berikutnya

Tambahkan CSP sebagai lapisan tambahan dan masukkan pemeriksaan ke proses pengembangan aplikasi. Untuk konteks risikonya, baca kategori Injection.

Unduh artikel (.md)

Sumber rujukan

  1. Cross Site Scripting Prevention Cheat Sheet ↗OWASP Foundation; panduan teknis keamanan aplikasi · Framework Security; Output Encoding; HTML Sanitization; Safe Sinks; Other Controls
  2. Content Security Policy Cheat Sheet ↗OWASP Foundation; panduan teknis keamanan aplikasi · Defense in Depth

Baca naskah lengkap untuk melihat syarat dan pengecualiannya. Sesuaikan dengan layanan dan bidang usaha Anda.

Perlu membahas kebutuhan tim Anda?

Ceritakan sistem yang dikelola dan kebutuhan pengamanan tim Anda.

Konsultasikan kebutuhan Anda