HTML 转义/反转义

用于安全展示文本的 HTML 实体转义/反转义工具,帮助降低 XSS 风险

使用说明

🚀 快速开始

  • 在文本框输入内容(HTML 或已转义文本)
  • 选择“编码”或“解码”模式
  • 点击对应按钮开始转换,结果显示在同一文本框
  • 点击“复制”,用于代码或展示

📌 常见使用场景

  • 用户评论:转义用户提交的评论内容,防止 XSS 攻击
  • 博客文章:在文章中显示 HTML 代码示例
  • 论坛帖子:安全显示用户发布的内容
  • 聊天消息:防止恶意代码通过聊天功能传播
  • 表单数据:处理和显示表单提交的数据
  • 代码展示:在网页中展示 HTML/JavaScript 代码片段

🎛️ 转义规则与实体

  • 哪些字符通常需要转义:< > & " '(斜杠 / 一般不必;视上下文而定)
  • 怎么写:< → &lt;,> → &gt;,& → &amp;," → &quot;,' → &#39;
  • 属性里的引号:用 &quot;(或 &#34;)表示双引号
  • 展示标签原样:想显示 <script> 文本,请写成 &lt;script&gt;
  • 标签处理:把 <div> 写成 &lt;div&gt;,避免被浏览器解析

🧭 使用建议

  • 上下文转义:根据输出位置选择合适的转义策略
  • 服务端处理:关键安全转义应在服务端进行
  • 双重检查:转义后检查输出,确保没有遗漏
  • 使用库:生产环境建议使用成熟的转义库而非手动处理
  • 预览检查:转义后可以在浏览器控制台预览实际显示效果

⚠️ 限制与兼容性

  • 本工具不是 Sanitizer:不会移除脚本/事件/危险协议,需配合内容净化(白名单清洗)使用
  • 不完全防护:仅转义不能防止所有 XSS,需配合其他安全措施
  • 上下文依赖:不同位置需要不同的转义策略(HTML 内容、属性、JavaScript、CSS)
  • 大量文本:可能导致浏览器失去响应或崩溃,建议分段处理

🔒 隐私与安全

  • 所有处理均在您的浏览器内完成,数据不会离开您的设备

❓ 常见问题

什么是 XSS 攻击?

XSS(跨站脚本攻击)是攻击者通过注入恶意脚本到网页中,窃取用户信息或执行恶意操作。HTML 转义是防御 XSS 的基本手段

什么时候需要 HTML 转义?

显示任何用户输入的内容时都需要转义,包括评论、留言、表单数据等。只要内容可能包含 HTML 标签就需要转义

&amp;lt; 和 &amp;#60; 有什么区别?

两者都表示 <(小于号)。&amp;lt; 为命名实体(lt=less‑than),&amp;#60;/&amp;#x3C; 为数字/十六进制实体。在现代 HTML 中效果相同:需要可读性时用 &amp;lt;;在不支持命名实体或需表示任意字符/跨标记语言时用 &amp;#60;/&amp;#x3C;。实体末尾的分号要保留(如 &amp;lt;);缺少分号可能与后续字符黏连被错误解析,例如“&amp;notin”会被当成“&amp;not;”+“in”显示为“¬in”

转义能防止所有 JavaScript 注入吗?

不能。HTML 转义只在 HTML 上下文有效。在 JavaScript、CSS、URL 等上下文中需要不同的转义方法

为什么有时会看到 &amp;amp;lt; 这样的双重转义?

这是因为内容被转义了两次。第一次 &lt; 变成 &amp;lt;,第二次 &amp; 又被转义成 &amp;amp;,结果变成 &amp;amp;lt;。应避免重复转义

如何允许部分安全的 HTML 标签?

应使用“净化(Sanitization)”而不是仅转义:基于允许列表保留安全标签/属性并过滤协议。建议仅保留 p/br/ul/ol/li/a/strong/em/code/pre/blockquote/h1–h3 等;a 仅允许 href/title/target(协议限 http/https/mailto/tel),img 仅 src/alt;删除 style 与所有 on* 事件。推荐使用 DOMPurify/sanitize‑html 等库,尽量在服务端净化后再渲染;切勿把未净化内容放入 innerHTML/dangerouslySetInnerHTML,纯文本用 textContent

HTML 转义/反转义 - 在线 HTML 实体转换工具 - CrateX.app