HTML Entities — HTML

Coba kamu nulis tutorial HTML di blog — kamu pengen kasih contoh kode halo. Tapi kalau kamu ketik literal di artikel, browser bakal kira kamu lagi bikin paragra

Coba kamu nulis tutorial HTML di blog — kamu pengen kasih contoh kode <p>halo</p>. Tapi kalau kamu ketik literal <p> di artikel, browser bakal kira kamu lagi bikin paragraf beneran, bukan nampilin teks <p>. Solusinya: HTML entities — kode rahasia buat karakter spesial. &lt; jadi <, &gt; jadi >, &amp; jadi &. Kayak escape sequence yang bilang ke browser "ini teks saja, jangan diparse".

💡 Garda terdepan lawan XSS. Entity bukan cuma soal nampilin karakter — dia fondasi keamanan web. Tiap input user (nama, comment, post) yang di-render mentah ke HTML = celah XSS (Cross-Site Scripting). Hacker tinggal nulis <script>curi_cookie()</script> di kolom comment, browser eksekusi. Encode jadi &lt;script&gt; = aman, browser nampilin sebagai teks. Framework modern (React, Vue) auto-encode by default — tapi dangerouslySetInnerHTML / v-html bypass-nya.

Kapan Perlu, Kapan Tidak

Dengan <meta charset="UTF-8"> (yang sudah kamu pelajari di Meta Tags), sebagian besar karakter — termasuk huruf beraksen, emoji, dan simbol mata uang — bisa ditulis langsung tanpa entity. Contoh: ©, , , ° boleh langsung diketik.

HTML entities masih wajib dipakai di 3 situasi:

Format HTML entity: &nama; atau &#nomor;

Entities yang sering digunakan:

Contoh Penggunaan Entity

<p>Tag paragraf ditulis dengan &lt;p&gt;</p>
<p>Harga: Rp 50.000 &amp; gratis ongkir</p>
<p>&copy; 2024 Website Saya</p>

🎭 Analogi sehari-hari

HTML entity = kode rahasia surat untuk karakter yang punya arti spesial. Daripada langsung tulis < (yang dikira tag), tulis &lt; — browser baca "less than", render < di layar tanpa nyangka tag.

⚠️ Jebakan yang sering ditemui

TL;DR: HTML entities = kode buat karakter spesial yang punya arti di HTML (biar gak diparse). Wajib: &lt; (<), &gt; (>), &amp; (&), &quot; (" di atribut). Modern UTF-8 udah support langsung ketik ©, , , ° (gak butuh entity). &nbsp; cegah pecah baris (BUKAN buat spasi visual — pakai CSS). Garda terdepan lawan XSS: encode user input sebelum render mentah ke HTML. Entity TIDAK berlaku di <style>/<script>.

Yang akan kamu pelajari