Langsung ke konten
Security Lab

XSS Prevention

TersediaInput dan outputPemula

Input tak tepercaya menjadi berbahaya saat diperlakukan sebagai kode. Bandingkan rendering yang tidak aman dan yang aman untuk teks yang sama.

Ketik input, lalu bandingkan bagaimana renderer yang rentan dan yang aman memperlakukannya. Lab ini memvisualisasikan cara browser mem-parsing hasilnya, karakter apa yang diubah oleh output encoding, dan seperti apa kode yang aman.

Input tak tepercaya adalah data, bukan kode
Komentar, nama, dan kata pencarian datang dari orang yang tidak Anda kendalikan. Bahaya muncul saat halaman menyusun HTML dengan menempelkan teks itu, karena browser tidak bisa membedakan markup Anda dari markup mereka.
Tempat teks mendarat menentukan pertahanannya
Teks di dalam elemen, di dalam atribut berkutip, atau di dalam URL di-parse dengan aturan berbeda. Setiap tempat butuh encoding atau validasinya sendiri.
Output encoding menjaga teks tetap teks
Encoding mengubah karakter seperti < dan " menjadi entitas seperti &lt; dan &quot;. Browser lalu menampilkannya sebagai karakter, bukan membacanya sebagai markup.
Berlapis, bukan satu tembok
Framework yang me-render teks dengan aman secara default, encoding yang tepat, validasi URL, dan Content Security Policy masing-masing menghentikan kesalahan yang berbeda. Encoding yang benar adalah perbaikan utamanya; yang lain membatasi kerusakan jika ada yang lolos.

Yang akan Anda pelajari

  • Mengenali input tak tepercaya dan tempat ia masuk ke halaman.
  • Mengetahui metode rendering mana yang memperlakukan teks sebagai HTML, dan mana yang tetap menjadikannya teks.
  • Menerapkan output encoding sesuai konteks tempat data ditampilkan.
  • Menjelaskan bagaimana framework dan Content Security Policy menambah lapisan pertahanan.

Tantangan terpandu

Lihat semua tantangan terpandu