Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Pemrograman Web Aman: Input, Query, dan Hak Akses

Pelajaran 10 dari 14

Validasi tipe, panjang, rentang, allowlist, dan escaping

Escaping keluaran HTML

Setelah pelajaran ini kamu bisa meng-escape teks dari pengguna saat disisipkan ke HTML dengan html.escape di Python dan fungsi escape buatan sendiri di JavaScript, sekali saja di tempat keluaran.

±13 menitDiperiksa 7 Okt 2026

Materi

Cross-site scripting (XSS) terjadi bila teks dari pengguna disisipkan ke halaman dan peramban membacanya sebagai HTML atau skrip, bukan sebagai teks. Pertahanannya disebut output encoding: setiap karakter yang punya arti khusus di HTML diganti dengan entitasnya tepat sebelum disisipkan. Untuk isi elemen dan nilai atribut bertanda kutip, OWASP mendaftar lima karakter: & menjadi &amp;, < menjadi &lt;, > menjadi &gt;, " menjadi &quot;, dan ' menjadi &#x27;. Konteks lain, seperti URL, CSS, dan JavaScript di dalam atribut, butuh encoder lain.

Di Python, html.escape(teks) melakukan kelima penggantian itu; argumen quote=True adalah bawaannya. Di JavaScript, cara paling langsung menampilkan teks adalah element.textContent = teks, yang membuat simpul teks tanpa mengurai HTML. Bila HTML harus dirakit sebagai string, fungsi escape mengganti & lebih dulu: kalau & diganti terakhir, &lt; yang baru dibuat ikut berubah menjadi &amp;lt;.

import html

judul = 'Promo "Akhir Tahun" <b>50%</b> & gratis ongkir'
print(f"<h2>{html.escape(judul)}</h2>")
# <h2>Promo &quot;Akhir Tahun&quot; &lt;b&gt;50%&lt;/b&gt; &amp; gratis ongkir</h2>
const judul = document.querySelector("#judul-promo");
judul.textContent = masukanPengguna;   // tampil apa adanya, tidak diurai sebagai HTML

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Kolom catatan menampilkan "Kopi &amp; Teh" di layar, padahal pengguna mengetik "Kopi & Teh". Teks disimpan di basis data dalam bentuk "Kopi &amp; Teh", dan template meng-escape setiap nilai sebelum ditampilkan. Apa penyebabnya?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke