HTML 实体编码完全指南:所有特殊字符对照 + XSS 防御

想在网页上显示 < 这个符号,直接写 < 浏览器会以为你在开标签——必须写成 &lt; 才能原样显示。这就是 HTML 实体编码。

✍️ 作者:DevToolbox 技术团队📅 更新于:2026-06-24📎 引用:RFC Standards

📌 本文关键结论(TL;DR)

  • HTML 实体编码完全指南:所有特殊字符对照 + XSS 防 是开发者常用的解决方案之一
  • 本文基于 RFC 标准实战经验编写
  • 提供免费在线工具,浏览器本地处理,数据不上传
  • 文末有 FAQ 区块解答常见疑问,可直接复制使用
✍️ 作者:DevToolbox 技术团队📅 更新于:2026-06-24📎 引用:RFC Standards

📌 本文关键结论(TL;DR)

  • HTML 实体编码完全指南:所有特殊字符对照 + XSS 防 是开发者常用的解决方案之一
  • 本文基于 RFC 标准实战经验编写
  • 提供免费在线工具,浏览器本地处理,数据不上传
  • 文末有 FAQ 区块解答常见疑问,可直接复制使用

HTML 实体编码是前端开发必学的基础,也是防止 XSS 攻击的第一道防线。本文讲清命名实体 vs 数字实体的区别、常用字符对照表、以及 3 个真实 XSS 漏洞场景。文末推荐 DevToolbox HTML 实体参考表——支持搜索 + 复制。

一、HTML 实体的 3 种写法

HTML 实体都以 & 开头、以 ; 结尾,中间有 3 种形式:

三种写法浏览器都识别。命名实体好记,数字实体覆盖全(任何 Unicode 字符都能编码)。

二、必背的 15 个常用实体

前 4 个是 HTML 语法保留字符,必须转义。其余是排版符号:

字符 命名实体 十进制 何时用
<&lt;&#60;显示 < 符号
>&gt;&#62;显示 > 符号
&&amp;&#38;显示 & 符号
"&quot;&#34;属性值内用
'&apos;&#39;属性值内用
非断行空格&nbsp;&#160;防止空格被折叠
©&copy;&#169;版权符号 ©
®&reg;&#174;注册商标 ®
&trade;&#8482;商标 ™
×&times;&#215;乘号 ×
÷&divide;&#247;除号 ÷
&para;&#182;段落符号 ¶
&euro;&#8364;欧元 €
¥&yen;&#165;日元 ¥
&mdash;&#8212;长破折号 —

三、3 个真实 XSS 漏洞场景

场景 1:用户输入直接插入 HTML

// ❌ 危险:用户输入直接拼接
element.innerHTML = userInput;

// ✅ 安全:textContent 自动转义
element.textContent = userInput;

场景 2:URL 参数未过滤

// ❌ 危险:URL 参数直接拼 HTML
const name = new URLSearchParams(location.search).get('name');
document.write(`<h1>Welcome ${name}</h1>`);

// ✅ 安全:用 DOMPurify 或服务端转义
const safe = DOMPurify.sanitize(name);
document.write(`<h1>Welcome ${safe}</h1>`);

场景 3:模板引擎自动转义失效

Vue/React 默认自动转义用户输入,但 v-html / dangerouslySetInnerHTML跳过转义。只在 100% 信任内容时使用,外部输入必须先过 DOMPurify

四、为什么用 &nbsp; 而不是空格

HTML 默认会合并连续空白——3 个空格显示成 1 个。想保留原始间距或对齐,用 &nbsp;(non-breaking space)。常用于:

五、结语

HTML 实体是前端"基本功中的基本功"。背下前 4 个保留字符(&lt; &gt; &amp; &quot;)就能解决 90% 的场景;遇到 XSS 记住铁律——任何用户输入都要转义或过滤

查表或复制实体?DevToolbox HTML 实体参考 收录 200+ 常用字符,支持搜索和点击复制。

相关工具:HTML 实体参考 · URL 编解码 · 正则表达式测试

🔗 分享: 𝕏 📘 ✈️ 💬
🧰
添加到主屏幕
离线也能用,秒开不等待