SVGO 和 XML 的手动确认
发布 SVG 前,有时会使用 SVGO 这样的优化工具。
这是为了减少不必要的属性、注释、元数据,缩小文件大小。
这是一项有效工作。
但是,在匿名性确认中,不能说“经过 SVGO 所以安全”。工具删除的信息和人必须查看的信息并不相同。
本文整理使用 SVGO 的意义,以及之后为什么要作为 XML 手动确认。
什么是 SVGO
SVGO 是用于优化 SVG 文件的工具。
它用于删除不必要属性和元数据,让 SVG 变轻。官方仓库可以确认使用方法、插件和设置项。
URL: https://github.com/svg/svgo
这里处理的是确认官方信息后,在本地环境运行的用法。如果把 SVG 上传到在线优化服务,XML 内的信息和文件名可能会交给外部。
SVGO 很方便,但不是匿名化专用工具。
它的目的主要是优化。它不会判断并删除所有关系匿名性的信息。
工具可以减少的东西
根据 SVGO 设置,有时可以减少注释、元数据、不必要属性、空元素等。
| 可能减少的东西 | 说明 | 注意点 |
|---|---|---|
| 注释 | 删除 XML 注释 | 依赖设置 |
| 元数据 | metadata 元素等 | 不一定是所有信息 |
| 不必要属性 | 显示不需要的属性 | id 和 class 可能残留 |
| 空元素 | 未使用元素 | 不会判断全部非显示信息 |
| 文件大小 | 减少多余记述 | 不是匿名性本身 |
优化是发布前的重要步骤。
但是,优化和匿名化不是一回事。
需要手动确认的理由
工具无法完全判断字符串的含义。
例如,project-alpha 这个 ID 是内部项目名,还是单纯的图形 ID,不知道语境就无法判断。school-map 这个图层名是否关系匿名性,也会因发帖内容而变。
| 可能残留的信息 | 为什么需要人看 |
|---|---|
| id 和 class 名称 | 需要判断是否是内部语或案件名 |
| text 元素 | 确认是显示文字还是隐藏文字 |
| 文件名 | 工具处理范围外 |
| 图片内含义 | 背景和标志不会被优化删除 |
| 语境上的信息 | 有时只有相关人员看得懂 |
在匿名性中,不只看文件结构,也看含义。
这种含义确认最终要由人来做。
手动确认流程
用 SVGO 等优化后,用文本编辑器打开 SVG。
按以下顺序确认。
| 顺序 | 确认内容 | 理由 |
|---|---|---|
| 1 | 文件名 | 出现本名、案件名、日期 |
| 2 | metadata 元素 | 残留作者或工具信息 |
| 3 | 注释 | 残留工作笔记或内部信息 |
| 4 | text 元素 | 残留非显示文字或删除前文字 |
| 5 | id 和 class | 残留图层名或内部语 |
| 6 | URL | 看见外部链接或内部环境 |
搜索字符串不能只搜自己的名字。
公司名、学校名、部门名、项目名、邮箱、地名、旧网名、内部缩写也要确认。
也需要外观确认
即使 XML 很干净,作为图片可见的信息也可能残留。
标志、招牌、地图、校徽、名牌、用户名、画面通知、独特图表设计,都不会通过优化消失。
| 外观信息 | 残留风险 | 确认内容 |
|---|---|---|
| 标志 | 组织和服务可见 | 必要时替换 |
| 地图 | 日常活动范围和地点可见 | 降低粒度 |
| 画面 UI | 账号和通知可见 | 确认到边缘 |
| 独特图表 | 与过去资料连接 | 注意模板重复使用 |
SVG 要同时确认作为 XML 的内部和作为图片的外观。
只看一边是不够的。
与 PNG 化的取舍
需要匿名性时,也可以选择不公开 SVG,而是转换成 PNG 等格式。
PNG 化后,XML 注释和 id 之类信息基本不会暴露在表面。
不过,PNG 化后作为图片可见的信息仍然残留。进一步说,转换后的图片也可能附带元数据。
| 方式 | 优点 | 注意点 |
|---|---|---|
| 原样公开 SVG | 放大也清晰,易于编辑 | 确认 XML 内信息 |
| SVGO 后公开 | 能减少多余记述 | 需要手动确认 |
| PNG 化后公开 | 能减少 XML 信息 | 查看图片内信息和元数据 |
哪种格式更好,会因目的和风险而变。
如果不需要作为可编辑图公开,PNG 化也可以成为选项。
也要管理设置文件和原文件
使用 SVGO 时,不只要考虑处理后的 SVG,也要考虑设置文件和原文件的处理。
如果把原文件放在同一文件夹中共享,优化前的信息可能一起交出去。设置文件中也可能包含项目名或内部注释。
| 对象 | 确认内容 | 理由 |
|---|---|---|
| 原 SVG | 是否残留未处理信息 | 可能误共享 |
| 输出 SVG | 优化后残留什么 | 因为是最终公开物 |
| 设置文件 | 内部注释或路径 | 可能包含在共享对象中 |
| 文件夹名 | 案件名或组织名 | zip 共享时可见 |
| README | 工作笔记和负责人 | 发布时可能一同包含 |
在匿名性中,不一定只看处理后文件就够了。
要确认上传的文件夹或 zip 整体中,是否混入原文件或笔记。
即使自动化,最后也要用眼睛看
如果每次都用同一流程使用 SVGO,自动化很有用。
但是,自动化不是取消确认。相反,它是为了让人最后确认而做的预处理。
自动处理后,要用文本编辑器打开内部,用浏览器显示,并确认文件名和随附文件。
高风险文件中,也可以考虑请他人审阅。不过,这也意味着要把文件交给对方,所以咨询对象要谨慎选择。
如果公开对象不是单个文件,而是 zip 或文件夹,不只要确认输出 SVG,也要确认随附内容。
旧 SVG、原始数据、工作笔记、设置文件混入时,信息会从优化后文件以外的地方泄露。
总结
SVGO 是用于优化 SVG 的方便工具。
它有时可以减少注释、元数据、不必要属性等。
但是,SVGO 不是匿名化专用工具。内部语、id、class、text 元素、文件名、作为图片可见的信息,都需要人根据语境确认。
发布前,在经过 SVGO 等工具处理后,要作为 XML 打开内部确认。
在匿名性中,重要的不是“用工具处理过”,而是最终残留了什么。
相关工具
ExifTool
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
URL : https://exiftool.org/
MAT2
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。