快速摘要
串接 OpenAI、Anthropic 或 Google 的 AI API 時,最常見的安全問題是 API Key 寫死在前端程式碼裡。這篇教你正確的 API Key 管理、速率限制、錯誤處理和成本控管。

飛飛安全評級

評估維度風險等級
資料敏感度
本機檔案權限
命令執行能力
第三方連線
新手誤用風險
企業使用門檻

API 串接的基本架構

串接 AI API 的基本架構應該是:

使用者 → 你的前端 → 你的後端(API proxy)→ AI API

注意:使用者永遠不應該直接呼叫 AI API。中間一定要有你自己的後端作為 proxy。原因有三:

  1. 保護 API Key:Key 只存在後端,前端看不到
  2. 控制用量:你可以在後端加上速率限制和成本上限
  3. 輸入過濾:你可以在後端檢查使用者輸入,防止 Prompt Injection

API Key 安全管理

API Key 的管理是最重要的安全環節。以下是正確做法:

不要做的事

  • 不要把 API Key 寫死在程式碼裡
  • 不要把 .env 檔案 commit 到 Git
  • 不要在前端 JavaScript 中使用 API Key
  • 不要用同一個 Key 做開發和生產
  • 不要把 Key 貼在 Slack、Email 或任何通訊軟體

正確做法

  1. 使用環境變數:把 Key 放在 .env 檔案或環境變數中
  2. 加入 .gitignore:確保 .env 不會被 commit
  3. 分離環境:開發用一個 Key,生產用另一個 Key
  4. 定期輪換:每 90 天更換一次 API Key
  5. 最小權限:如果平台支援,只給 Key 需要的最小權限
真實案例:2024 年有多起因為 API Key 被推上 GitHub 公開 repo 而產生鉅額帳單的事件。有人在幾小時內被盜刷了超過 $10,000 的 API 費用。

速率限制與成本控管

沒有速率限制的 AI API 應用就像沒有煞車的車——遲早出事。

實作速率限制

層級建議限制目的
每個使用者10-30 次/分鐘防止單一使用者濫用
全域100-500 次/分鐘保護你的帳單
每日上限依預算設定防止意外爆量

成本監控

  • 在 OpenAI 和 Anthropic 的 dashboard 設定 budget alert
  • 記錄每次 API 呼叫的 token 使用量
  • 設定每月硬上限,超過就暫停服務
  • 監控異常使用模式(例如深夜突然大量呼叫)

輸入驗證與 Prompt Injection 防護

使用者的輸入在送到 AI API 之前,必須經過驗證和清理:

  1. 長度限制:限制輸入的最大字數(例如 2000 字)
  2. 格式驗證:如果預期是特定格式,先驗證
  3. 內容過濾:檢查是否包含已知的 Prompt Injection 模式
  4. System Prompt 隔離:用 API 的 system message 參數,不要把 system prompt 和使用者輸入混在一起
Prompt Injection 風險:如果你的應用會把 AI 的回應直接顯示在網頁上,務必對輸出做 HTML escape,防止 XSS 攻擊。AI 可能被引導生成包含 <script> 標籤的回應。

錯誤處理

AI API 可能因為各種原因失敗,你的應用必須優雅地處理這些情況:

錯誤碼原因處理方式
401API Key 無效檢查 Key 設定,不要向使用者暴露錯誤細節
429超過速率限制實作 exponential backoff 重試
500API 服務異常顯示友善錯誤訊息,記錄 log
timeout回應超時設定合理的 timeout(30-60 秒)

三大平台 API 比較

特性OpenAIAnthropicGoogle (Gemini)
最新模型GPT-4oClaude Opus/SonnetGemini 2.0
串流支援
Tool UseFunction CallingTool UseFunction Calling
資料訓練可選退出預設不使用可選退出
計費單位TokenTokenToken
免費額度有限有限較多
SDK 語言Python, Node.js, 更多Python, TypeScriptPython, Node.js, 更多

最佳實踐清單

  1. API Key 絕對不進前端程式碼
  2. 所有 API 呼叫都透過你的後端 proxy
  3. 實作速率限制和成本上限
  4. 驗證和清理所有使用者輸入
  5. 對 AI 輸出做 HTML escape 後再顯示
  6. 使用 streaming 改善使用者體驗
  7. 記錄所有 API 呼叫的 log(但不要記錄敏感內容)
  8. 設定監控和告警
  9. 定期輪換 API Key
  10. 測試錯誤處理路徑

常見問題

API Key 可以放在前端嗎?

絕對不行。API Key 放在前端 JavaScript 中,任何人打開開發者工具就能看到。必須透過後端 proxy 呼叫 API。

串接 AI API 一個月大概花多少錢?

依用量而定。個人專案約 $5-20/月,中小企業應用 $50-500/月。設定好 budget alert 和 rate limiting 可以有效控制成本。

OpenAI 和 Anthropic 的 API 哪個比較好?

各有優勢。OpenAI 生態系最大、文件最完整;Anthropic 的 Claude 在長文和程式碼方面表現更好,且有更嚴格的安全設計。建議兩個都試。

API 回應太慢怎麼辦?

使用 streaming(串流)模式可以讓使用者更早看到回應。另外也可以用快取機制避免重複呼叫相同的 prompt。