网页要展示文字,还是要执行标记
回答里出现尖括号、标签或代码时,直接拼进HTML会让浏览器把它解释成页面结构。即使来源是模型,也不应自动视为可信HTML;先决定产品需要的是普通文本还是受控富文本。
本文的目标只是展示普通文本。模型受到来源指令影响与浏览器解释HTML是两个层面;提示词写“不要输出危险内容”不能代替网页端的正确渲染。
一个无害样例就能看出差别
给定原文为小于号b大于号A&B小于号/b大于号,也就是代码中的<b>A&B</b>。如果当HTML解析,会生成加粗结构;如果作为文本,应让用户看到原始标签文字。
这份样例不含攻击代码,不需要连接模型或浏览器网络。原始字符串、预期文本和序列化后的HTML可以分别记录,观察解释边界。

客户端和服务端分别选择合适入口
在浏览器DOM中写普通文本,可使用目标元素的textContent,避免innerHTML解析。服务端生成普通段落时,应在HTML文本位置转义特殊字符,或使用默认转义的模板系统。
文末函数演示后者:将&、尖括号和引号转成字符引用后放入固定p标签。它只处理普通文本位置,不能用于URL、属性、CSS、JavaScript字符串或任意HTML片段。
运行后看到的是转义结果
保存为plain-text-html.mjs,用Node.js 24 LTS运行node plain-text-html.mjs --demo。输出固定段落包裹的文本,内部b标签已转为&开头的字符引用,不应再被当成新的标签。
测试逐字符核对尖括号、&和引号,不代表完成真实浏览器安全审计。不要先转义再用textContent写入,否则用户可能看到多余字符引用;应按实际输出上下文选择一次正确处理。
需要Markdown与链接时另外设计
若产品要渲染Markdown,必须使用适当解析与净化策略,限制链接协议及允许结构。本文的五字符转义器不会保留富文本,也不是通用HTML净化库,不能为任意HTML提供安全保证。
来源引用链接同样要验证真实URL与允许协议,不能把模型任意输出直接放入href。不要因为正文已经转义,就认为所有属性与交互动作都已安全。
本例与真实上线之间还有什么
本地实际测试了字符串转换和类型拒绝,没有运行浏览器、真实Claude响应、Markdown或富文本组件。需要上线时,对所用框架的模板、客户端赋值及链接路径分别验收。
保留原始回答供授权范围内核对,渲染层不要为了修页面擅自改写内容事实。正文里的代码标签应能原样复制,样式改变不应悄悄改变用户得到的文本。
参考资料与核验范围
资料核对日期:2026年10月21日。以下为官方原始资料;产品入口和可用范围仍以当前账户为准。
1. [官方资料1](https://platform.claude.com/docs/en/test-and-evaluate/strengthen-guardrails/mitigate-jailbreaks)
2. [官方资料2](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent)