你貼給 AI 的 API Key,可能已經變成公開資料
Hello大家好,我是凱文大叔。
這幾年我們已經很習慣把程式碼、錯誤訊息和設定檔貼給 AI,請它幫忙找問題。
但有一個動作,可能讓原本只存在於對話裡的秘密,突然變成任何人都能搜尋到的公開資料:
按下「分享」。
最近一篇資安報導指出,Claude 的部分分享對話曾被搜尋引擎索引。研究者透過搜尋語法,就能找到公開的對話內容,其中可能包含 API Key、存取權杖、公司內部專案、履歷與其他個人資料。
這件事真正值得注意的,不只是某一個 AI 平台出了問題,而是我們對「分享連結」的理解經常是錯的。
有連結才能看,不代表它是私密的
很多產品會產生一串看起來很長、很難猜的網址。使用者很容易以為:
我沒有把網址公開貼出去,應該就只有收到連結的人看得到。
但只要頁面沒有登入驗證或存取權限,任何拿到網址的人、爬蟲、瀏覽器擴充套件、分析服務或轉貼平台,都可能讀到內容。
noindex 可以要求搜尋引擎不要把頁面放進搜尋結果,robots.txt 也可以要求爬蟲不要抓取特定路徑;但它們都不是門鎖,更不是存取控制。
真正的私密內容,仍然需要登入驗證、權限檢查、到期機制,必要時還要能撤銷連結。
對開發者來說,最安全的判斷方式其實很簡單:
凡是貼進 AI 對話、Issue、聊天室、Email 或截圖的內容,都先假設未來可能被第三個人看到。
API Key 如何避免在開發過程中曝光?
API Key 一旦外洩,攻擊者可能盜用你的付費額度、讀取資料、冒用服務,甚至取得更高權限。下面是我在開發時會採取的幾道防線。
1. 不要把真實金鑰貼給 AI
請 AI 協助除錯時,把真實值替換成假的佔位文字:
OPENAI_API_KEY=sk-example-redacted
DATABASE_PASSWORD=
Authorization: Bearer
除了對話本文,也要檢查終端機輸出、錯誤堆疊、HTTP request、螢幕截圖與上傳的設定檔。很多外洩不是發生在程式碼,而是發生在「請幫我看這個錯誤」的畫面裡。
2. 本機用環境變數或 .env,但不要提交進 Git
開發環境可以把秘密放在環境變數或本機 .env:
OPENAI_API_KEY=你的金鑰
並確認 .gitignore 包含:
.env
.env.*
!.env.example
團隊可以提交只保留欄位名稱的 .env.example,讓其他人知道需要哪些設定,但裡面不能放真實值。
環境變數比寫死在程式碼裡安全,但仍可能被 debug 頁面、錯誤報告或程序資訊印出。正式環境最好改用部署平台的 Secret、雲端 Secret Manager 或 Vault,並限制誰能讀取。
3. 不要把秘密放進前端程式
瀏覽器會下載並執行前端 JavaScript,所以放在 React、Vue、純 JavaScript 或手機 App 裡的 Key,使用者幾乎都有辦法找出來。
即使變數名稱叫做 VITE_API_KEY、NEXT_PUBLIC_API_KEY 或經過壓縮、混淆,它仍然不是秘密。
需要保密的第三方 API 應由後端代為呼叫:
瀏覽器 → 你的後端 → 第三方 API
後端再加入驗證、速率限制、用量上限與輸入檢查,避免代理端點反而被濫用。
4. 每個環境、每個服務使用不同金鑰
開發、測試、正式環境不要共用同一把 Key;不同應用程式也不要共用。
這樣某個測試專案外洩時,不會直接危及正式資料,也比較容易從使用紀錄判斷是哪個服務出了問題。
5. 權限能少就不要多
只需要讀取資料,就不要給寫入或刪除權限;只會呼叫一個模型,就不要開放整個帳號的所有服務。
如果平台支援,還可以限制:
- 可使用的 API 或模型
- 每日額度與花費上限
- 來源 IP、網域或應用程式
- 有效期限
- 可存取的專案與資源
權限越小,外洩後的傷害範圍就越小。
6. 在提交前與 CI 主動掃描
不要只靠工程師記得檢查。可以啟用 GitHub Secret Scanning、Push Protection,或在 pre-commit 與 CI 加入秘密掃描工具。
它們可以在金鑰進入 Git 歷史前攔截常見憑證。因為秘密只要曾經 commit 過,即使之後把那一行刪掉,仍可能留在 Git 歷史、fork、快取或其他人的本機副本中。
7. 準備「外洩後怎麼辦」
如果 Key 曾出現在公開儲存庫、AI 分享頁、聊天室或寄出的 Email,請不要只把內容刪掉。
正確順序是:
- 立即撤銷或停用舊 Key
- 產生新 Key 並更新服務
- 檢查呼叫紀錄、費用與異常來源
- 縮小新 Key 的權限與額度
- 搜尋 Git 歷史、CI log、Issue、文件和對話中是否還有副本
- 記錄事件並補上自動掃描與輪替機制
刪除曝光內容,不代表秘密重新變安全。只要無法證明沒有人看過,就應該視為已洩漏並立刻換 Key。
今天就能完成的 5 分鐘檢查
- 搜尋專案內是否出現
API_KEY、SECRET、TOKEN、PASSWORD - 確認
.env與憑證檔都在.gitignore - 檢查前端 bundle 是否包含不該公開的 Key
- 回想最近是否把設定檔、log 或截圖貼進 AI 對話
- 打開曾建立的分享連結,取消不再需要的公開分享
資安通常不是少數高手才需要處理的大工程,而是每次複製、貼上、commit 和分享之前,多停一秒做判斷。
最後提醒:課程早鳥優惠今天截止
我的 Hahow 募資課程 《AI 賦能全端開發:從零打造企業級智慧應用》,早鳥優惠進入最後一天。
課程不只教你呼叫 AI API,而是會帶你用 Spring Boot、Spring AI、React、資料庫、權限、RAG 與 AI Agent,完成一套真正能執行的企業級 AI 應用。
如果你想學會如何讓 AI 協助開發,同時把架構、測試、部署與資安一起做好,今天是早鳥方案的最後機會。
結帳時輸入優惠碼:
優惠碼:HHAI83
即可在目前早鳥優惠上再享 83 折。
優惠今天截止,如果這門課符合你的學習目標,記得別錯過。
我們課程裡見。
—— 凱文大叔
延伸閱讀:
