Hexo Debug 04:Hexo 避免機密資訊上傳 GitHub

先前在 繼續探索 NexT 我將存有 Firestore apiKey 的 _config.next.yml 檔案推到 GitHub 儲存庫中,結果沒過多久就收到陌生的警告 Email,提醒我有機密洩漏,霎那間令我知曉網路上的爬蟲有多兇猛,還好這次來的是正義的爬蟲 😰

既然知道可怕了,就趕快來解除危機吧!

收到的警告信 (正義的爬蟲叫做 GitGuardian):

罪魁禍首

當初照 Hexo 文檔 的方式部署 Blog 至 GitHub Pages,並沒有提醒要注意機密資訊,而 GitHub Pages 強迫儲存庫的能見度 (visibility) 設為 Public,導致只要有包含機密資訊就一定會洩漏。

期望

程式碼中的機密資訊依然可以使用 GitHub 保存,但又不要輕易外流。

想法

  • .gitignore 中加入 _config.next.yml
    這樣雖然可以避免洩漏資訊,但需要額外管理檔案,有違懶人的宗旨,只好否決。

  • 讓 GitHub Pages 變為 Private:
    這樣會直接讓 Blog 無法部屬,但可以嘗試換一種方式實現。

解決方法

就是很單純的在 GitHub 多開一個 Private 的儲存庫專門拿來放 Blog 專案。

GitHub Pages 儲存庫就讓它專門放 Hexo 生成的靜態網頁檔案,用兩個儲存庫來各司其職。

這兩件工作照 Hexo 文檔 的做法是分成兩個 Branch 來達成,main 用來存放 Blog 專案,gh-pages 用來存放靜態網頁檔案。

雖然使用了兩個儲存庫,但消耗的精力其實是相同的,因為部屬 Blog 網站時我們都是用 hexo deploy 指令呼叫套件完成工作,套件會自動幫我們把靜態網頁檔案推至 GitHub Pages 儲存庫,我們只需要創建儲存庫跟設定好部署資訊即可。

多開的 Private 儲存庫就會變成我們平常更新文章與 Hexo 設定的工作儲存庫。

我把實作方法更新至 使用 Hexo 迅速在 GitHub Pages 展開 Blog 旅程 跟著步驟實作就好,讓大家少走彎路。

結語

雖然說將敏感內容藏進 Private 的儲存庫,但很多敏感資訊其實在開啟 Blog 網站後按 F12 就能直接找到 😂