HTML Entity
Tham chiếu ký tự để biểu diễn ký tự đặc biệt trong HTML. Bắt đầu bằng & và kết thúc bằng ;.
HTML entity là tham chiếu ký tự dùng để biểu diễn an toàn các ký tự đặc biệt trong tài liệu HTML. Các ký tự có ý nghĩa đặc biệt trong cú pháp HTML (<, >, &) sẽ được hiểu là thẻ hoặc cú pháp nếu viết trực tiếp, vì vậy entity chỉ rõ "hiển thị dưới dạng ký tự". Các ví dụ phổ biến bao gồm & (&), < (<), > (>), " (") và ' (').
HTML entity có hai loại: tham chiếu có tên và tham chiếu số. Tham chiếu có tên như & dễ đọc, với khoảng 2.200 entity có tên được định nghĩa trong đặc tả HTML. Tham chiếu số sử dụng ký hiệu thập phân (&) hoặc thập lục phân (&) để chỉ định trực tiếp code point Unicode, cho phép biểu diễn ký tự không có tên được định nghĩa. Sách cơ bản HTML/CSS bao gồm các kiến thức cơ bản toàn diện.
Từ góc độ bảo mật web, chuyển đổi ký tự thành HTML entity (escaping) là nền tảng để phòng chống XSS (Cross-Site Scripting). Khi xuất đầu vào người dùng ra HTML, năm ký tự <, >, &, " và ' phải luôn được chuyển đổi thành entity. Không làm vậy có nguy cơ bị chèn script độc hại. Hầu hết framework web cung cấp auto-escaping trong template engine, nhưng nhà phát triển phải escape rõ ràng khi sử dụng innerHTML hoặc dangerouslySetInnerHTML.
Các entity thường dùng trong thực tế bao gồm khoảng trắng không ngắt ( ), ký hiệu bản quyền (©), ký hiệu thương hiệu (™), mũi tên (→) và ký hiệu toán học (×, ÷). Entity đặc biệt phổ biến khi hiển thị khoảng trắng liên tiếp hoặc cung cấp nội dung cho ô bảng trống.
Một quan niệm sai lầm phổ biến là "entity không cần thiết khi sử dụng UTF-8". Mặc dù UTF-8 cho phép bao gồm trực tiếp ký tự tiếng Nhật và emoji, escape ký tự cú pháp HTML (<, >, &) là bắt buộc bất kể mã hóa ký tự. Dấu ngoặc kép (") trong giá trị thuộc tính HTML cũng phải được chuyển đổi thành ". Sách phát triển frontend web cung cấp thêm ngữ cảnh.
Đối với đếm ký tự, HTML entity tạo ra sự khác biệt giữa số ký tự mã nguồn và số ký tự hiển thị trên trình duyệt. & là 5 ký tự trong mã nguồn nhưng hiển thị là một "&" duy nhất trên trình duyệt. là 6 ký tự trở thành một khoảng trắng. Vì đếm ký tự mã nguồn HTML so với đếm ký tự văn bản hiển thị cho kết quả rất khác nhau, điều quan trọng là hiểu công cụ đếm ký tự nhắm vào cái nào.