HTML 实体编码是将特殊字符编码为一个符号,这样就可以在 HTML 中使用这些字符而不会影响文档的结构。
例如:
- 不可分的空格 —
<
(小于符号) —<
>
(大于符号) —>
&
(与符号) —&
"
(双引号) —"
'
(单引号) — ''
©
(版权符号)—©
以上列出的一些实体比较容易记忆,但有一些不容易记住的你可以查看 WHATWG 提供的字符实体的官方列表或使用解码工具。
HTML 实体是一段以连字符号(&
)开头,以分号(;
)结尾的字符串。用以显示不可见字符及保留字符(如 HTML 标签)
在前端,一般为了避免 XSS 攻击,会将 <>
编码为 <
与 >
,这些就是 HTML 实体编码。
在 HTML 转义时,仅仅只需要对六个字符进行编码:&
、<
、>
、"
、'
以及 `。我们可以使用 he 或 DOMPurify 库进行编码及转义。
// 实体编码
he.encode('<img src=""></img>') // '<img src=""></img>'
// 转义
he.escape('<img src=""></img>') // '<img src=""></img>'