隐藏文本和 XML 注释
公开文件时,只确认画面上可见的信息是不够的。
SVG、HTML、XML 系文件中,可能残留不显示的文本或注释。
即使外观看起来是空白,文件内部也可能残留作业备注、删除前的文章、姓名、公司名、内部 URL、项目名。
匿名性中,不仅要确认可见信息,也要确认只要想读就能读到的信息。
本文整理隐藏文本和 XML 注释如何成为风险,以及公开前应该确认什么。
什么是隐藏文本
隐藏文本,是指在画面上不可见,或以难以注意到的形式残留在文件中的文字信息。
包括透明文字、移到画面外的文字、隐藏图层、极小文字、用 CSS 隐藏的元素等。
| 类型 | 外观 | 内容 |
|---|---|---|
| 透明文字 | 看不见 | 作为字符串残留 |
| 画面外文字 | 显示范围外 | 带坐标残留 |
| 隐藏元素 | 不显示 | 作为标签残留 |
| 过小文字 | 难以阅读 | 放大或搜索可找到 |
| 删除前草稿 | 有时看不见 | 作为注释或其他元素残留 |
隐藏文本即使没有恶意也会残留。
作业中放置的备注、以为删除了的姓名、旧标题、模板中的公司名,都可能残留在公开文件中。
什么是 XML 注释
XML 注释是可以写在文件内的备注。
通常在浏览器显示中看不见。但是,打开文件就能读到。
它以 <!-- comment --> 这样的形式书写,用于 SVG、HTML、XML 等。
| 注释中残留的东西 | 例子 | 匿名性上的注意点 |
|---|---|---|
| 作业备注 | 之后删除〇〇公司名 | 组织名残留 |
| 负责人名 | checked by Tanaka | 个人名出现 |
| 内部 URL | staging.example | 开发环境可见 |
| 项目名 | project-alpha | 相关人员能看懂 |
| 计划删除的文 | 原说明文 | 以为删除的信息残留 |
注释在开发和制作中很方便。
但是,如果残留在公开文件中,不显示的信息会被第三方读到。
为什么与匿名性有关
隐藏文本和注释有时会直接显示本人或所属。
此外,即使单独看很弱,也会和其他信息组合。和文件名、发帖者、公开时间、图片内容、URL、过去发帖重叠时,候选会被缩小。
| 残留信息 | 连接对象 | 会发生什么 |
|---|---|---|
| 公司名 | 发帖内容、职业 | 所属会被推测 |
| 作者名 | 账号、过去文件 | 接近实名 |
| 内部 URL | 组织或项目 | 相关人员被缩小 |
| 草稿文 | 原经历 | 以为删除的信息复活 |
| 日期 | 发布时间、事件 | 可按时间线核对 |
不可见信息是发帖者本人容易漏看的信息。
正因如此,要把它放入公开前检查对象。
确认方法
确认的基本方法,是把文件作为文本打开。
SVG、HTML、XML 可以用文本编辑器打开。搜索姓名、公司名、学校名、邮箱地址、URL、注释符号、旧标题、内部词语。
| 确认方法 | 查看内容 | 注意点 |
|---|---|---|
| 用文本编辑器打开 | 注释、标签、字符串 | 不只凭显示判断 |
| 文件内搜索 | 姓名、组织名、URL | 用多种写法搜索 |
| 在浏览器中查看源代码 | HTML 和 SVG 结构 | 与渲染结果不同 |
| 放大查看 | 小文字、画面边缘 | 也确认外观泄露 |
搜索字符串不能只搜自己的名字。
公司名、部门名、学校名、项目名、旧网名、邮箱、地名、内部用语也要确认。
用工具删除后也要手动确认
使用优化工具或删除工具,有时可以减少不必要的注释和元数据。
如果把文件放入 Web 上的优化服务或删除服务,文件内容和访问信息可能会交给外部。需要匿名性的公开中,先在本地确认。
但是,不能完全依赖工具。
工具的动作会随设置改变。它不会从匿名性角度完全替你判断哪些元素该留、哪些元素该删。
| 工具能减少的东西 | 人要查看的东西 | 理由 |
|---|---|---|
| 注释 | 图片内文字 | 外观信息会残留 |
| 不必要属性 | 固有名词 | 不会判断意义 |
| 元数据 | 语境 | 有些信息只有相关人员能懂 |
| 空元素 | 文件名 | 外侧信息会另行残留 |
需要匿名性的公开中,工具处理后还要再次打开文件确认。
删除注释后语境仍会残留
即使删除 XML 注释,语境上的线索也可能残留。
id 名、class 名、文件名、文件夹名、URL、图片内文字、正文经历,都在注释之外。
| 删除的东西 | 残留的东西 | 确认事项 |
|---|---|---|
| XML 注释 | id 和 class | 是否残留内部词语 |
| 作业备注 | 文件名 | 是否残留项目名和日期 |
| 草稿文 | 显示文字 | 是否在图片内可见 |
| 内部 URL | 引用目标 URL | 确认外部链接和环境名 |
删除注释很重要,但不能到此为止。
匿名性中,要确认哪些信息移动到了哪里并继续残留。
共同作业文件尤其要注意
多人制作的 SVG 和 HTML 中,更容易残留注释和隐藏文本。
因为负责人名、审阅评论、修正请求、内部用语、客户名可能在作业过程中进入文件。
| 共同作业中残留的信息 | 例子 | 注意点 |
|---|---|---|
| 负责人名 | reviewed by A | 个人名残留 |
| 修正备注 | 这里面向〇〇公司 | 客户或组织可见 |
| 内部缩写 | first-team-only | 内部人员能懂 |
| 旧方案 | 旧标题、旧标志 | 以为删除的信息残留 |
公开共同作业文件时,不只看自己写的部分,要确认整个文件。
重要的是不要想“不是我放进去的”,而是看“公开文件中是否残留”。
如果公开对象是 zip 或文件夹,要确认其中包含的所有文件。
即使单个 SVG 很干净,只要同捆的旧 HTML 或 README 中残留注释,也会从那里泄露信息。
总结
隐藏文本和 XML 注释,是画面上不可见但残留在文件内的信息。
SVG、HTML、XML 系文件中,可能残留作业备注、姓名、公司名、内部 URL、草稿、项目名。
公开前,不只看外观,也要作为文本确认内部内容。
即使用工具优化,也不要只凭这一点判断为安全。
匿名性中,同时确认显示出来的信息和文件内残留可读的信息很重要。
相关工具
ExifTool
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
URL : https://exiftool.org/
MAT2
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。