開發筆記2026年 03月 07日閱讀時間 4 分鐘

【初級】別被 AI 出賣:.env 與 .gitignore 的資安生存法則

【初級】別被 AI 出賣:.env 與 .gitignore 的資安生存法則

本文解析如何透過 .env 與 .gitignore 建立防護邊界,避免 AI 在協作時不小心洩漏敏感資訊。

error慘痛警告

進行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 設立好安全邊界就可以預防意外發生。

以上。

Mike Chen

專注於科技與人文的交匯點。

mail訂閱電子報

不定期發送最新思考與發現。

無廣告,隨時取消