第 3 课

CMS 与模板中的实体

文本节点、属性值与导出字段何时需要转义。

CMS 与模板引擎常会自动转义内容——但未必在你期望的那一层发生。

文本节点 vs 属性

HTML 文本节点通常必须转义 <>&

属性值 里若使用 "' 作为定界符,属性内部的引号也需要转义。例如 title="He said "hi"" 会破坏属性结构,除非引号被编码。

双重编码陷阱

典型错误链:

  1. CMS 存的是 Tom &amp; Jerry(已转义)
  2. 模板引擎再转义一次 → Tom &amp;amp; Jerry
  3. 页面上显示字面量 &amp; 而不是 &

修复原则:在不可信文本进入 HTML 的边界只转义一次。若数据已实体化,下次转义前应先解码或标记为已安全。

富文本 vs 纯文本字段

富文本编辑器可能输出已含实体的 HTML 片段;纯文本字段则常在输出时整段转义。两种字段混在同一流水线里会导致展示不一致。

邮件与导出格式

CSV、JSON API、邮件模板常因 XML/HTML 兼容而实体化。导入网页前需确认下游期望的是原始文本还是已转义 HTML。

框架自动转义

React、Vue 等在使用文本插值 API 时默认转义。手动 dangerouslySetInnerHTML 或原始模板块会绕过这层保护——实体与净化需自行负责。

想动手练习时,可使用 DevCove 相关工具——可选,不属于本课正文。

打开相关工具

返回课程概览