全库脱敏:清除真实姓名、个人账号与私有域名,为开源做准备 #17

Closed
opened 2026-10-29 00:15:30 +00:00 by laoyang · 3 comments
Owner

现象(用户诉求)

「全面检查一下这个模板库,看看里面还有没有任何我的个人信息、真实个人信息。
如果有的话,生成一段假的,把我的真实信息替换一下。因为这是一个开源项目,
不要把我的真实信息放上去。记住,是所有的模板文件啊。」

排查结果

全库 160 个文件逐个扫描,真实个人信息集中在幻灯片/、科技报告/ 两个从旧独立仓库并入的目录
(其余 10 个模板此前已做过脱敏,只有虚构示例,无真名残留):

泄露内容 位置 性质
真名「杨永全」 幻灯片/ 6 个 .sty 文件头 %% 作者:杨永全 真实姓名
个人账号 dryangyq 幻灯片/slides.tex:66 脚注 github/gitee/gitlab 3 个 URL 个人 GitHub/Gitee/GitLab 账号
个人域名 yangyq.net slides.tex:66(git.yangyq.net)+ 幻灯片/README.md:33 + 科技报告/README.md:26(code.yangyq.net) 私有 Git 服务器 + 私有 Gitea 账号 laoyang

已确认无需处理(不是个人信息):

  • 简历「张远航」、各模板教师「张远航/陈立群」、课程「数字逻辑」2025 秋、论文/专利/项目/获奖 ——
    全部是带 10.9999/ZL209999/2024SR99999/example.net/(示例) 标记的虚构示例
  • 简历/photo.jpg —— 400×400 纯灰剪影占位图,非真人照
  • 图片/字体/PDF 二进制 —— grep 无真名/账号残留

处理方案

  1. 6 个 .sty 文件头的 作者:杨永全 → 中性署名 中国海洋大学 LaTeX 模板库(不暴露任何个人身份)
  2. slides.tex 里 4 个个人仓库 clone 地址 → 换成明显的占位地址,并注释「开源后替换为实际公开仓库地址」
  3. 两个 README 的 code.yangyq.net/laoyang/ouc_latex_template.git → 同样的占位地址 + 注释

验收标准

  • 全库(含 .tex/.sty/.cls/.md 及二进制资源)grep 杨永全 / dryangyq / yangyq 零命中
  • 幻灯片、科技报告两个模板改动后仍可编译(slides.tex 是 beamer,改的只是脚注文字不影响编译)
  • 占位地址明显可辨识,不误当真实地址使用

已知遗留(需用户另行决策,不在本单范围)

git 历史里 27 个 commit 的作者签名是 laoyang <i@yangyq.net>(个人域名邮箱)。
若真要推到公开平台,历史里的邮箱也会暴露个人域名,需用 git filter-repo 重写历史,
这是破坏性操作(改全部 SHA、需 force push),是否做、怎么做单独决策。

## 现象(用户诉求) > 「全面检查一下这个模板库,看看里面还有没有任何我的个人信息、真实个人信息。 > 如果有的话,生成一段假的,把我的真实信息替换一下。因为这是一个开源项目, > 不要把我的真实信息放上去。记住,是所有的模板文件啊。」 ## 排查结果 全库 160 个文件逐个扫描,真实个人信息集中在**幻灯片/、科技报告/** 两个从旧独立仓库并入的目录 (其余 10 个模板此前已做过脱敏,只有虚构示例,无真名残留): | 泄露内容 | 位置 | 性质 | |---|---|---| | 真名「杨永全」 | `幻灯片/` 6 个 `.sty` 文件头 `%% 作者:杨永全` | 真实姓名 | | 个人账号 `dryangyq` | `幻灯片/slides.tex:66` 脚注 github/gitee/gitlab 3 个 URL | 个人 GitHub/Gitee/GitLab 账号 | | 个人域名 `yangyq.net` | `slides.tex:66`(git.yangyq.net)+ `幻灯片/README.md:33` + `科技报告/README.md:26`(code.yangyq.net) | 私有 Git 服务器 + 私有 Gitea 账号 `laoyang` | 已确认**无需处理**(不是个人信息): - 简历「张远航」、各模板教师「张远航/陈立群」、课程「数字逻辑」2025 秋、论文/专利/项目/获奖 —— 全部是带 `10.9999`/`ZL209999`/`2024SR99999`/`example.net`/`(示例)` 标记的虚构示例 - `简历/photo.jpg` —— 400×400 纯灰剪影占位图,非真人照 - 图片/字体/PDF 二进制 —— grep 无真名/账号残留 ## 处理方案 1. 6 个 `.sty` 文件头的 `作者:杨永全` → 中性署名 `中国海洋大学 LaTeX 模板库`(不暴露任何个人身份) 2. `slides.tex` 里 4 个个人仓库 clone 地址 → 换成明显的占位地址,并注释「开源后替换为实际公开仓库地址」 3. 两个 README 的 `code.yangyq.net/laoyang/ouc_latex_template.git` → 同样的占位地址 + 注释 ## 验收标准 - [ ] 全库(含 `.tex`/`.sty`/`.cls`/`.md` 及二进制资源)grep `杨永全` / `dryangyq` / `yangyq` 零命中 - [ ] 幻灯片、科技报告两个模板改动后仍可编译(`slides.tex` 是 beamer,改的只是脚注文字不影响编译) - [ ] 占位地址明显可辨识,不误当真实地址使用 ## 已知遗留(需用户另行决策,不在本单范围) git 历史里 27 个 commit 的作者签名是 `laoyang <i@yangyq.net>`(个人域名邮箱)。 若真要推到公开平台,历史里的邮箱也会暴露个人域名,需用 `git filter-repo` 重写历史, 这是破坏性操作(改全部 SHA、需 force push),是否做、怎么做单独决策。
Author
Owner

交付完成

commit e70339f「全库脱敏:清除真实姓名、个人账号与私有域名 #17」已推送
(1abb3cf..e70339f),10 files changed / 9 insertions / 9 deletions。

实际查出来并清掉的三处真实信息

泄露内容 位置 处理
真名「杨永全」 幻灯片/ 6 个 .sty 文件头 %% 作者:杨永全 → 中国海洋大学 LaTeX 模板库
个人账号 dryangyq 幻灯片/slides.tex 脚注 github/gitee/gitlab 三个 URL → example.org 占位
个人域名 yangyq.net + 账号 laoyang slides.tex + 两个 README 的 clone 地址 → example.org 占位

一个容易漏的点:成品 PDF 也要查

幻灯片/slides.pdf 是编译产物,文本流是压缩的,按字节 grep 抓不到。
用 pymupdf 提取渲染文本才发现:源码改了但 PDF 没重编,脚注里
还印着 dryangyq 和 yangyq.net 的 URL。这是实打实的泄露,已重编
覆盖(30 页、0 error)。

结论:脱敏不止要改源码,所有入仓库的成品 PDF 都要逐字提取检查。
这次 科技报告/report.pdf、简历/简历.pdf 都干净,只有 slides.pdf 漏了。

验证(双通道)

  • 源码:全库 .tex/.sty/.cls/.md grep 杨永全 / dryangyq / yangyq / yongquan / 永全 全部零命中
  • 成品:全库 PDF 用 pymupdf 提取渲染文本,上述关键词零命中
  • 服务器:Gitea raw API 拉回 5 个改动文件重新 grep,零命中

确认无需处理的(不是个人信息)

  • 简历「张远航」、各模板教师「张远航/陈立群」、课程「数字逻辑」2025秋、
    论文/专利/项目/获奖 —— 全部带 10.9999/ZL209999/2024SR99999/
    example.net/(示例) 标记,是虚构示例
  • 简历/photo.jpg —— 400×400 纯灰剪影占位图,非真人照

遗留(需用户另行决策,本单没做)

git 历史 27 个 commit 的作者签名是 laoyang <i@yangyq.net>,含个人域名邮箱。
推到公开平台前需用 git filter-repo 重写历史(改全部 SHA + force push),
属破坏性操作。是否做、怎么做,等你确认再说。

## 交付完成 commit `e70339f`「全库脱敏:清除真实姓名、个人账号与私有域名 #17」已推送 (`1abb3cf..e70339f`),10 files changed / 9 insertions / 9 deletions。 ### 实际查出来并清掉的三处真实信息 | 泄露内容 | 位置 | 处理 | |---|---|---| | 真名「杨永全」 | `幻灯片/` 6 个 `.sty` 文件头 `%% 作者:杨永全` | → `中国海洋大学 LaTeX 模板库` | | 个人账号 `dryangyq` | `幻灯片/slides.tex` 脚注 github/gitee/gitlab 三个 URL | → `example.org` 占位 | | 个人域名 `yangyq.net` + 账号 `laoyang` | `slides.tex` + 两个 README 的 clone 地址 | → `example.org` 占位 | ### 一个容易漏的点:成品 PDF 也要查 `幻灯片/slides.pdf` 是编译产物,文本流是压缩的,按字节 grep 抓不到。 用 pymupdf 提取**渲染文本**才发现:源码改了但 PDF 没重编,脚注里 **还印着 dryangyq 和 yangyq.net 的 URL**。这是实打实的泄露,已重编 覆盖(30 页、0 error)。 结论:脱敏不止要改源码,**所有入仓库的成品 PDF 都要逐字提取检查**。 这次 `科技报告/report.pdf`、`简历/简历.pdf` 都干净,只有 slides.pdf 漏了。 ### 验证(双通道) - **源码**:全库 `.tex/.sty/.cls/.md` grep `杨永全 / dryangyq / yangyq / yongquan / 永全` 全部**零命中** - **成品**:全库 PDF 用 pymupdf 提取渲染文本,上述关键词零命中 - **服务器**:Gitea raw API 拉回 5 个改动文件重新 grep,零命中 ### 确认无需处理的(不是个人信息) - 简历「张远航」、各模板教师「张远航/陈立群」、课程「数字逻辑」2025秋、 论文/专利/项目/获奖 —— 全部带 `10.9999`/`ZL209999`/`2024SR99999`/ `example.net`/`(示例)` 标记,是虚构示例 - `简历/photo.jpg` —— 400×400 纯灰剪影占位图,非真人照 ### 遗留(需用户另行决策,本单没做) git 历史 27 个 commit 的作者签名是 `laoyang <i@yangyq.net>`,含个人域名邮箱。 推到公开平台前需用 `git filter-repo` 重写历史(改全部 SHA + force push), 属破坏性操作。是否做、怎么做,等你确认再说。
Author
Owner

补充:clone 地址改回真实 code 地址

用户反馈:「github/gitee/gitlab 那几个占位地址,把我们项目真实的 code 地址放回去,这个没事。」

上一轮脱敏时,我把 clone 地址连同真名一起换成了 example.org 占位。用户指出:
code.yangyq.net/laoyang/ouc_latex_template.git 是当前项目的真实地址,属于
「用户从哪 clone」的功能性信息,不是隐私,应当保留。

改动

位置 原(上一轮) 现
幻灯片/slides.tex 脚注 example.org 占位 code.yangyq.net/laoyang/ouc_latex_template.git
幻灯片/README.md example.org 占位 code.yangyq.net/laoyang/ouc_latex_template.git
科技报告/README.md example.org 占位 code.yangyq.net/laoyang/ouc_latex_template.git

真名「杨永全」与个人账号「dryangyq」的清除不回退——那两处才是真隐私。

踩到一个新坑:URL 里的下划线

slides.tex 脚注直接写 ouc_latex_template 会报 Missing $ inserted(2 处)——
URL 里的 _ 在 LaTeX 文本模式下触发数学模式。.tex 里写成
ouc\_latex\_template 转义后 0 error。README 是 markdown,不需要转义。

验证

  • slides.tex 重编:0 error / 30 页
  • 提取 PDF 渲染文本:脚注已是真实 code 地址,example.org 零残留
## 补充:clone 地址改回真实 code 地址 用户反馈:「github/gitee/gitlab 那几个占位地址,把我们项目真实的 code 地址放回去,这个没事。」 上一轮脱敏时,我把 clone 地址连同真名一起换成了 `example.org` 占位。用户指出: `code.yangyq.net/laoyang/ouc_latex_template.git` 是**当前项目的真实地址**,属于 「用户从哪 clone」的功能性信息,不是隐私,应当保留。 ### 改动 | 位置 | 原(上一轮) | 现 | |---|---|---| | `幻灯片/slides.tex` 脚注 | `example.org` 占位 | `code.yangyq.net/laoyang/ouc_latex_template.git` | | `幻灯片/README.md` | `example.org` 占位 | `code.yangyq.net/laoyang/ouc_latex_template.git` | | `科技报告/README.md` | `example.org` 占位 | `code.yangyq.net/laoyang/ouc_latex_template.git` | 真名「杨永全」与个人账号「dryangyq」的清除**不回退**——那两处才是真隐私。 ### 踩到一个新坑:URL 里的下划线 `slides.tex` 脚注直接写 `ouc_latex_template` 会报 `Missing $ inserted`(2 处)—— URL 里的 `_` 在 LaTeX 文本模式下触发数学模式。`.tex` 里写成 `ouc\_latex\_template` 转义后 0 error。README 是 markdown,不需要转义。 ### 验证 - slides.tex 重编:0 error / 30 页 - 提取 PDF 渲染文本:脚注已是真实 code 地址,`example.org` 零残留
laoyang reopened this issue 2026-10-29 00:35:19 +00:00
Author
Owner

补充完成

commit 7cd542a「克隆地址改回真实 code 地址 #17」已推送(e70339f..7cd542a)。

clone 地址已从 example.org 占位改回 code.yangyq.net/laoyang/ouc_latex_template.git,
三处(幻灯片/slides.tex 脚注 + 幻灯片/README.md + 科技报告/README.md)。

  • 真名「杨永全」与个人账号「dryangyq」的清除不回退,那才是真隐私
  • slides.tex 里下划线需转义 ouc\_latex\_template,README 不需
  • 幻灯片重编 0 error / 30 页,PDF 脚注为真实地址、example.org 零残留
  • 服务器验证:三个文件均已指向真实地址
## 补充完成 commit `7cd542a`「克隆地址改回真实 code 地址 #17」已推送(`e70339f..7cd542a`)。 clone 地址已从 `example.org` 占位改回 `code.yangyq.net/laoyang/ouc_latex_template.git`, 三处(`幻灯片/slides.tex` 脚注 + `幻灯片/README.md` + `科技报告/README.md`)。 - 真名「杨永全」与个人账号「dryangyq」的清除**不回退**,那才是真隐私 - `slides.tex` 里下划线需转义 `ouc\_latex\_template`,README 不需 - 幻灯片重编 0 error / 30 页,PDF 脚注为真实地址、`example.org` 零残留 - 服务器验证:三个文件均已指向真实地址
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: laoyang/ouc_latex_template#17