Entitas HTML

Kodekan dan uraikan karakter dan entitas khusus HTML

Kasus penggunaan

  • Escape konten pengguna untuk HTML yang aman — ubah `<script>` menjadi `&lt;script&gt;` sebelum disisipkan ke dalam template.
  • Baca sumber email HTML mentah — uraikan `&amp;` dan `&#x2603;` untuk melihat apa yang sebenarnya dilihat penerima.
  • Buat potongan aman untuk CMS — kodekan `'` dan `"` agar kolom database tidak merusak konteks SQL atau HTML.
  • Debug laporan XSS — unescape input mencurigakan untuk memulihkan payload asli yang ditandai oleh alat keamanan.

Kapan Anda memerlukan pengkodean entitas HTML?

Ketika teks yang disuplai pengguna dirender menjadi HTML, karakter seperti `<` dan `>` harus di-escape sebagai `&lt;` dan `&gt;` untuk menghindari diinterpretasikan sebagai tag. Mengabaikan ini adalah penyebab utama kerentanan XSS. Alat ini mengkodekan lima karakter inti yang tidak aman di HTML ditambah karakter Unicode yang Anda pilih untuk di-escape.

Entitas numerik (`&#38;`, `&#x26;`) bekerja di semua konteks HTML. Entitas bernama (`&amp;`, `&copy;`) lebih mudah dibaca tetapi hanya berfungsi di HTML — parser XML tidak mengetahui semua nama HTML.

Contoh

InputHasil
<script>alert('hi')</script>&lt;script&gt;alert(&#39;hi&#39;)&lt;/script&gt;
© 2024 — Wenee&copy; 2024 &mdash; Wenee

Pertanyaan yang sering diajukan

Karakter mana yang perlu dikodekan?

Setidaknya: `<`, `>`, `&`, `"`, dan `'`. Mengkodekan lebih banyak (seperti semua non-ASCII) tidak berbahaya tetapi membengkak output.

Apakah entitas bernama atau numerik lebih baik?

Bernama (`&amp;`) lebih mudah dibaca di HTML; numerik (`&#38;`) bekerja di HTML dan XML. Pilih numerik untuk keamanan lintas format.

Apakah pengkodean entitas HTML sama dengan pengkodean URL?

Tidak — entitas HTML menggunakan sintaks `&...;` untuk konteks HTML. Pengkodean URL menggunakan `%XX` untuk konteks URL. Mereka melayani lapisan yang berbeda.

Apakah ini mencegah XSS?

Mengkodekan konten teks dalam output HTML mencegah vektor XSS yang paling umum. Konteks lain (nilai atribut, string JavaScript, CSS) memerlukan aturan escape mereka sendiri.

Apakah teks saya dikirim ke mana pun?

Tidak. Pengkodean dan penguraian terjadi sepenuhnya di browser Anda.