本文解析如何透過 .env 與 .gitignore 建立防護邊界,避免 AI 在協作時不小心洩漏敏感資訊。
list文章目錄expand_more
list文章目錄
進行git push 之前,請確保你沒有把價值數百美金的 OpenAI API Key 或資料庫密碼直接寫在程式碼裡。這不是恐嚇,這是每天都在 GitHub 上發生的真實悲劇。
AI 很強大,它可以寫出複雜的功能,但它不會主動提醒你:「你把家裡的保險箱密碼寫在公布欄上了!」
今天我們要聊的是開發者必備的兩道「隱形斗篷」: .env 與 .gitignore 。
為什麼這兩個檔案重要?#
想像一下,在程式開發中,為了接 API 使用功能強大的 AI model,你直接在程式碼裡寫入 API Key:
# 這是錯誤範例!請勿模仿
client = OpenAI(api_key="sk-abc1234567890...") 即使程式運行無阻,但推上 GitHub 後,這串 API KEY 就變成了公共財。
駭客的自動化獵場#
駭客有專門的機器人,24 小時不間斷地在 GitHub 上掃描特定的字串格式。一旦 API Key 流出,幾分鐘內,帳單可能就會出現數千美金的扣款,甚至資料庫會被洗劫一空。
部署環境的靈活性#
除了資安,這也關乎部署環境的靈活性。你的電腦(開發環境)跟雲端伺服器(正式環境)通常會使用不同的資料庫或 API 額度。如果寫死在程式碼裡,每次部署都要改一次 code,這未免太臃腫遲緩。
.env:專案的祕密筆記本#
.env 檔案的本質,就是一個簡單的純文字檔,用來存放不方便公開的敏感資訊。
實務做法:隔離敏感資料#
我們不再把API KEY 和密碼這種敏感資訊直接寫在 main.py 裡,而是把它抽離出來,放在 .env 檔案中:
# .env 檔案內容
OPENAI_API_KEY=sk-your-real-secret-key
DATABASE_PASSWORD=admin1234在程式碼中,透過環境變數來讀取它:
import os
from dotenv import load_dotenv
load_dotenv() # 讀取 .env 檔案
api_key = os.getenv("OPENAI_API_KEY") # 從環境變數中取得這樣的好處是: 程式碼本身變成了 乾淨的邏輯 ,而 敏感的資料 被隔離在外部。
.gitignore:自動過濾網#
有了 .env 之後,最怕的就是一個 git add . 加上 git commit,你的 API KEY 和密碼就跟著程式碼一起飛上 GitHub 了。
因此必須建立.gitignore 作為自動過濾網。
.gitignore 運作原理解析#
這是一個告訴 Git「這些檔案請當作沒看到」的清單。 只要檔案名稱出現在這裡,Git 在追蹤修改時就會自動跳過它 。
一個標準的 Python 專案 .gitignore 應該至少要長這樣:
# 忽略祕密設定檔
.env
# 忽略虛擬環境
.venv/
__pycache__/
# 忽略作業系統產生的廢檔
.DS_Store實務上跟 AI 協作時的運用方式#
與 AI 協作時,透過 Agent 來建立資安邊界:
設立 Prompt 資安邊界#
開發專案時,應該這樣對 AI 說:
「請幫我寫一個調用 OpenAI API 的函式。請注意,不要將 API Key 寫死在程式碼中,請預設從 .env 檔案讀取名為 OPENAI_API_KEY 的環境變數,並提醒我建立該檔案。」
這樣 AI 會幫你寫出正確的 os.getenv("OPENAI_API_KEY") 結構,而不是直接塞 sk-...。
利用 AI 生成安全的 .env.example#
既然 .env 不能上傳,那協作夥伴怎麼知道要設定哪些變數? 你可以對 AI 說:
「根據我目前的專案內容,幫我產生一個 .env.example 檔案,列出所有需要的環境變數名稱,但值留空。」
這樣你就可以安全地將 .env.example 推上 GitHub,讓別人知道怎麼跑你的程式。
透過 .agent 鎖死專案安全規範#
如果你看過我寫的 【中級】還在手動糾正 AI 嗎?用 .agent 資料夾打造專屬架構師,你可以把資安規範直接寫進去。
在 .agent/rules/security.md 中寫下:
禁止硬編碼 :嚴禁在任何檔案中寫入真實的 API Keys 或 Tokens。
自動檢查 :在提交代碼前,務必確認 .env 是否已列入 .gitignore。
這樣當 AI 試圖走捷徑時,它會被自己的規則擋下來。
萬一 AI 偷懶把 Key 寫進去了怎麼辦?#
AI 有時候會為了方便測試,直接在程式碼裡寫入 Key。
Vibe Coding 防呆流程#
- 檢查 git diff :在 push 之前,養成看一眼改動內容的習慣。
- 使用 pre-commit hook :寫一個小腳本,在 commit 前自動掃描檔案內容,如果發現 sk- 開頭的字串,直接禁止 commit。
- 雲端 Secret Manager :進階開發者可以考慮使用 Infisical 或 1Password CLI,連 .env 都不落地。
結語:資安是一種習慣,而非一種技術#
.env 負責隔離祕密,.gitignore 負責守住邊界。
這兩件小事不需要高深技術,只需要養成習慣請 AI 設立好安全邊界就可以預防意外發生。
以上。


