Entiti HTML

Enkod dan nyahkod aksara khas dan entiti HTML

Kes penggunaan

  • Lindungi kandungan pengguna untuk HTML selamat — tukar `<script>` kepada `&lt;script&gt;` sebelum dimasukkan ke templat.
  • Baca sumber e-mel HTML mentah — nyahkod `&amp;` dan `&#x2603;` untuk melihat apa yang penerima sebenarnya lihat.
  • Bina coretan selamat CMS — sandikan `'` dan `"` supaya lajur pangkalan data tidak rosak dalam konteks SQL atau HTML.
  • Nyahpepijat laporan XSS — nyahsandikan input mencurigakan untuk mendapatkan semula payload asal yang ditandai alat keselamatan.

Bila anda perlu menyandi entiti HTML?

Apabila teks yang disediakan pengguna dirender ke dalam HTML, watak seperti `<` dan `>` mesti disandi sebagai `&lt;` dan `&gt;` untuk mengelakkan daripada ditafsir sebagai tag. Mengabaikan ini adalah punca utama kerentanan XSS. Alat ini menyandi lima watak asas yang tidak selamat dalam HTML ditambah mana-mana Unicode yang anda pilih untuk disandi.

Entiti numerik (`&#38;`, `&#x26;`) berfungsi dalam mana-mana konteks HTML. Entiti bernama (`&amp;`, `&copy;`) lebih mudah dibaca tetapi hanya berfungsi dalam HTML — pengurai XML tidak tahu 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

Soalan lazim

Watak mana yang perlu disandi?

Sekurang-kurangnya: `<`, `>`, `&`, `"`, dan `'`. Menyandi lebih banyak (seperti semua bukan-ASCII) tidak membahayakan tetapi membebankan output.

Adakah entiti bernama atau numerik lebih baik?

Bernama (`&amp;`) lebih mudah dibaca dalam HTML; numerik (`&#38;`) berfungsi dalam kedua-dua HTML dan XML. Pilih numerik untuk keselamatan merentas format.

Adakah penyandian entiti HTML sama dengan penyandian URL?

Tidak — entiti HTML menggunakan sintaks `&...;` untuk konteks HTML. Penyandian URL menggunakan `%XX` untuk konteks URL. Mereka berkhidmat untuk lapisan yang berbeza.

Adakah ini menghalang XSS?

Menyandi kandungan teks dalam output HTML menghalang vektor XSS yang paling biasa. Konteks lain (nilai atribut, rentetan JavaScript, CSS) memerlukan peraturan penyandian mereka sendiri.

Adakah teks saya dihantar ke mana-mana?

Tidak. Penyandian dan penyahkodan berlaku sepenuhnya dalam pelayar anda.