HTML Entity Encoding

HTML 实体编码

实体编码小解

HTML 实体是一段以连字号(&)开头、以分号(;)结尾的字符串,用以显示不可见字符及保留字符 (如 HTML 标签)。

whatwg 中可查看实体编码数据。

在前端,一般为了避免 XSS 攻击,会将 <> 编码为 &lt;&gt;,此时仅仅只需要对六个字符进行编码: &, <, >, ", ', ```。

编码过程

HTML 实体编码可使用 Unicode 的 codePoint 或者命名字符引用(Named character references)。

<

  • 命名字符引用中可知其命名为 lt,则实体编码为 &lt;
  • 通过 '<'.codePointAt() 可知其 unicode 的 codePoint 为 60,则实体编码也可表示为 &#60; 或者十六进制表示为 &#x3c;

API

Javascript

在 Javascript 中,可借助于 he 进行转化

he.encode('<div>hello</div>', { useNamedReferences: true })
he.decode(string)