名称只是名称,不应获得页面执行能力
从 Flux Art 完成创作后,团队可能把图片和文件名导入自建审核列表。若名称中的尖括号被当成标签,问题不在图片模型,而在列表如何把文字放进页面。对于本来只需要显示的名称、备注和提示词,应走纯文本路径。本文讨论自建工具的前端实现,不是平台漏洞报告,也不声称所有输入都要删除特殊字符。正确目标是保留原文字义,同时不让它变成页面结构。
先沿着数据流找显示位置
列出文件名从哪里进入:本地选择器、接口响应、历史记录和批量导入都可能提供字符串。再找到它出现在列表、详情面板、搜索结果高亮、错误提示和下载确认框的每个位置。同一字段在一个位置安全显示,并不证明其他位置相同。记录实际赋值方式与组件版本,不只看变量名是否叫安全名称。后端保存过的文字再次进入页面时仍要按所在显示环境处理。
把纯文本接收点与富文本接收点分开
MDN 的 textContent 说明指出,innerHTML 会解析 HTML,显示纯文本不应依赖这种解析。技术依据见 https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent 。在自建列表中,可为专用标签节点设置 textContent;这样替换的是该节点的文本内容,不会把文字变成标签。下面是假设检查表,不是真实安全测试报告。富文本编辑器另行设计,不能用本表证明它已安全。
| 入口 | 应观察的结果 | 异常处理 |
|---|---|---|
| 文件名称 | 符号按原文字显示 | 改用专用文本节点 |
| 备注内容 | 不形成新增元素 | 隔离富文本路径 |
| 搜索高亮 | 仅受控强调节点 | 取消字符串拼装 |
| 错误提示 | 文件名仍为文本 | 检查失败模板 |
| 历史记录 | 重载后规则一致 | 修复旧入口 |
| 未检查部件 | 明确未知范围 | 不标全站通过 |
不要把整个卡片都替换成文本
卡片可能同时包含缩略图、名称、状态和按钮。直接对卡片根节点写入 textContent 会移除其子节点,虽然不解析标签,却也破坏操作界面。应给名称和说明设置明确的文本容器,按钮由受控组件创建,再把各段文本放入对应位置。搜索高亮若只是强调匹配词,可用受控节点与文本节点组合,不能把原始搜索结果拼进 HTML 字符串后统一插入。
转义不是可以跨环境复用的通行证
用于 HTML 文本的处理不能自动保证 URL、样式或事件属性的安全。名称可以按文字显示,但用户提供的跳转地址仍要单独解析与限制用途;两者不是同一项检查。也不要把已经转义过的字符串重复转义直到界面出现乱码。建议在业务数据层保存原文字,在每个输出位置采用适合该位置的安全接口,明确富文本是否允许以及由谁维护经过审查的清理方案。
用无害样例核对显示结果
假设一个测试文件的名称包含普通尖括号、引号、与号和多语言文字。这是人为构造的验收输入,不是真实攻击事件,也不需要编写可执行载荷。在隔离页面确认这些字符按文字显示,名称节点内部没有因输入新增的元素,按钮与缩略图仍然可用。随后切换项目、重新加载历史记录并搜索该文件,复查所有显示入口,而不是只测首次选择后的那一行。
把视觉正确和结构正确同时记录
截图能证明文字看起来是否完整,却不能独自证明浏览器没有生成隐藏元素。建议同时记录渲染方式、名称节点的实际文本、受控子节点结构以及对应源文件版本。测试中若发现多了元素,先停止该入口的发布,保留样例与修复前后差异;不要把删去尖括号当作最终修复。未知入口标记待补证,仍允许通过受控的文件清单交付素材,不冒称整个系统已经通过安全审计。
返修时检查重复渲染和异常消息
列表更新、排序和空结果提示常会使用另一套模板。修复正常卡片后,还应检查加载失败的提示是否把文件名拼回 HTML,以及历史缓存记录是否走旧显示函数。若框架默认进行文本转义,也要核对项目中是否启用了绕过机制或直接插入 HTML 的接口。回归证据绑定实际组件版本;换用新的高亮插件或备注格式后,原来的检查记录不能自动覆盖新增渲染路径。
交付的是可检查的实现,不是一句安全标签
建议交接显示入口清单、纯文本容器约定、隔离样例与回归结果,并写明富文本及其他输出环境不在本次范围内。技术规则核对于2026年11月10日,文中的核对流程为编辑建议,未替读者执行应用测试。Flux Art 是多模型 AI 视觉创作与生产平台,创作入口见 https://flux-art.net/zh ,自建素材接入可参考 https://flux-art.net/zh/openapi 。生成素材的使用与审核页面代码的安全责任应分别验收。