← Tất cả bài viết

HTML entities và escape: khi nào cần và vì sao quan trọng

22/07/2026

Trình duyệt hiểu vài ký tự là cú pháp HTML: < mở thẻ, & mở entity. Khi muốn hiển thị chính các ký tự này như văn bản thường, bạn phải escape chúng thành HTML entity.

Bảng entity thường dùng

  • <&lt;
  • >&gt;
  • &&amp;
  • "&quot;
  • '&#39;

Liên hệ với bảo mật XSS

Đây không chỉ là chuyện hiển thị. Nếu bạn nhét dữ liệu người dùng thẳng vào HTML mà không escape, kẻ tấn công có thể gửi <script>...</script> và chạy mã trên trình duyệt nạn nhân — đó là lỗ hổng Cross-Site Scripting (XSS).

// SAI — dính XSS
el.innerHTML = userInput;

// ĐÚNG — trình duyệt tự escape khi dùng textContent
el.textContent = userInput;

Nguyên tắc

  • Escape theo ngữ cảnh: trong nội dung HTML, trong thuộc tính, trong URL, trong JavaScript đều có luật escape khác nhau
  • Ưu tiên API an toàn của framework (React tự escape khi render, Thymeleaf/JSP có thẻ escape)
  • Chỉ dùng dangerouslySetInnerHTML / render HTML thô với nội dung bạn tin tưởng và đã làm sạch (sanitize)

👉 Dùng thử công cụ liên quan trên dev-hub: HTML Escape — chạy hoàn toàn trong trình duyệt, không gửi dữ liệu lên server.