避免博客洩露個人資訊
Categories:
常用的免費開源平台 GitHub Pages 比較受歡迎,許多博客使用 GitHub Pages 進行發布。
但其免費版要求公開倉庫才允許公開訪問。而倉庫公開後,一些標記為草稿的文章也可以從 Git 倉庫訪問到。
儘管公開的文章較少包含敏感資訊, 但開源博客的源庫可能會洩露個人資訊,以下是一些常見的資訊洩露關鍵詞,歡迎評論補充。
敏感詞
| 中文關鍵詞 | 英文關鍵詞 |
|---|---|
| 密碼 | password |
| 帳號 | account |
| 身份證 | id |
| 銀行卡 | card |
| 支付寶 | alipay |
| 微信 | |
| 手機號 | phone |
| 家庭住址 | address |
| 工作單位 | company |
| 社保卡 | card |
| 駕駛證 | driver |
| 護照 | passport |
| 信用卡 | credit |
| 密鑰 | key |
| 配置文件 | ini |
| 憑證 | credential |
| 用戶名 | username |
正則搜索:
(密碼|帳號|身份證|銀行卡|支付寶|微信|手機號|家庭住址|工作單位|社保卡|駕駛證|護照|信用卡|username|password|passwd|account|key\s*:|\.ini|credential|card|bank|alipay|wechat|passport|id\s*:|phone|address|company)
如果使用 VSCode 作為博客編輯器,可以使用正則搜索快速進行全站搜索,檢查可能洩露資訊的位置。

Git 歷史
Git 歷史可能包含資訊洩露,通過簡單的腳本即可掃描開源博客的歷史提交資訊。
如果是自己的倉庫,可以通過以下方式清除歷史。如果需要保留歷史資訊,則不要清除。
請務必確認理解命令含義,它會清理歷史, 請謹慎操作,操作前請備份重要數據。
git reset --soft ${first-commit}
git push --force
其它掃描倉庫方式
https://github.com/trufflesecurity/trufflehog
- Find, verify, and analyze leaked credentials
17.2kstars1.7kforks
其它發佈博客方式
- Github Pro 支援將私有倉庫發佈到 Pages, Pro 四美元每月
- 設置為私有倉庫, 發佈到 Cloudflare Pages
- 分庫, 一個私有庫存放正在編輯的文章, 一個公開庫存放可發佈的文章
如果你的博客使用giscus這樣依賴 github 的評論系統, 那就仍然需要一個公開倉庫.
良好的習慣 vs 良好的機制
在討論開源博客洩露個人資訊的問題時, 有許多人認為, 只要註意不將敏感資訊上傳到倉庫, 就不會有問題.
這是一句無用的廢話, 如同要求程式設計師不要寫 bug 一樣, 正確但是無用. 靠習慣來保護個人資訊, 是不可靠的. 別輕易相信一個人的習慣, 他可能隨時會忘記.

寫作有時會有一些臨時的語句, 特別是程式設計師的技術博客, 簡短的腳本可能隨手就寫了, 未必會時時記住使用環境變數, 因此留下敏感資訊的可能性一定存在.
相信多數人能明白良好的習慣是什麼, 因此這裡不討論良好的習慣, 主要分享如何通過機制來避免洩露個人資訊.
首先是分庫, 手稿庫和發佈庫分開, 所有發佈在 Github Pages 上的文章都是經過審核的, 且不會有 draft 狀態的文章洩露.
還可以通過 Github Action, 在每次提交時, 掃描敏感資訊, 如果有敏感資訊, 則不允許提交, 參閱trufflehog
本文分享的正則搜索, 只是一個簡單的示例, 未集成到任何流程中, 你可以根據自己的需求, 做更多的定制化工作, 將其集成到流程中.