跳到主要內容
Cypher's Practical Coding
正在準備工作環境...

實務清單:接 API 前的安全 Checklist

情境:你準備要整合一個新的 API

電商平台要接一個新的金流 API。PM 說下週要上線。工程師問:「你確定安全沒問題嗎?」

你一時語塞。「沒問題吧?API 文件說支援 HTTPS,應該很安全。」

光靠 HTTPS 不夠。API 安全是一個系統性問題,需要在每個階段都做對應的檢查。

這一課給你一張可以印出來貼在牆上的 Checklist。


第一階段:整合前(Before Integration)

在開始寫任何程式碼之前,先確認這些事情:

☐ 1. 閱讀完整的 API 文件,特別是安全相關章節

文件通常會說明:

  • 認證方式(API Key / OAuth / JWT)
  • API Key 的使用限制(哪些 Header、哪些參數)
  • Webhook 簽章驗證方式
  • 特別留意「Security Considerations」或「Authentication」章節

☐ 2. 確認認證方式,了解 Token 的有效期

問題為什麼重要
Token 多久過期?需要自動刷新機制
有沒有 Refresh Token?過期後怎麼取得新 Token
Token 洩漏後能不能撤銷?事故發生時能不能緊急處理

☐ 3. 了解 Rate Limiting(頻率限制)

大多數 API 都有使用限制,例如:

  • 每分鐘最多 100 次請求
  • 每月最多 10,000 次呼叫

如果你的程式碼在流量高峰打爆限制,可能讓整個電商平台的結帳功能停擺。

☐ 4. 確認 API 的資料隱私政策

你傳給 API 的資料(客戶姓名、訂單、商品),第三方服務商怎麼處理?有沒有 GDPR / 個資法的合規問題?


第二階段:開發中(During Development)

☐ 5. 使用環境變數存放 API Key,不寫在程式碼裡

☐ 6. 把 .env 加入 .gitignore

執行 git status 確認 .env 沒有出現在待提交的檔案清單裡。

☐ 7. 驗證所有來自 API 的資料

不要假設 API 回傳的資料一定格式正確。驗證:

  • 必要欄位是否存在
  • 金額是否合理(不是負數、不是天文數字)
  • 狀態碼是否在預期範圍內

☐ 8. 處理所有錯誤情況,不要把原始錯誤訊息直接顯示給用戶

☐ 9. 使用 Dev/Test API Key 開發,不用 Production Key

大多數 API 提供 Sandbox 環境。開發和測試都用測試環境的 Key,Production Key 只在正式環境使用。


第三階段:上線前(Before Launch)

☐ 10. 確認全站使用 HTTPS

☐ 11. 移除所有測試用的 API Key 和除錯碼

上線前搜尋一遍:

  • 有沒有 console.log 印出了 API Key 或 Token
  • 有沒有測試用的 hardcoded credentials
  • 有沒有 TODO: 換成真實 Key 的提醒

☐ 12. 設定 API 使用量的警報

設定當 API 呼叫量異常增加時(如:正常的 10 倍),自動發警報給你。很多 API 平台都有內建這個功能。

☐ 13. 測試 Webhook 簽章驗證(如果有用到 Webhook)

如果 API 會主動推送事件(如:金流通知、訂單狀態更新),要驗證 Webhook 的簽章,確認是真的從 API 服務商發出的,不是攻擊者偽造的。


第四階段:上線後(Ongoing)

☐ 14. 定期 Rotate(更換)API Key

建議每 90 天更換一次 API Key。步驟:

  1. 在服務商後台產生新 Key
  2. 更新環境變數
  3. 確認服務正常運作
  4. 撤銷舊 Key

☐ 15. 定期審閱存取 Log

每月看一次 API 呼叫記錄:

  • 有沒有異常的時間呼叫(如凌晨 3 點大量請求)
  • 有沒有來自未知 IP 的呼叫
  • 有沒有大量的認證失敗

完整 Checklist(可複製列印)

整合前

  • 閱讀完整 API 文件,特別是安全章節
  • 確認認證方式與 Token 有效期
  • 了解 Rate Limiting 限制
  • 確認資料隱私政策

開發中

  • API Key 存在環境變數,不在程式碼裡
  • .env 加入 .gitignore
  • 驗證 API 回傳資料
  • 錯誤訊息不洩漏系統細節
  • 開發用 Sandbox/Test Key

上線前

  • 全站 HTTPS
  • 移除測試 Key 和除錯碼
  • 設定異常使用量警報
  • 測試 Webhook 簽章(如有)

持續維護

  • 每 90 天 Rotate API Key
  • 每月審閱存取 Log

練習題


AI 協作:學了這個,跟 AI 怎麼配合?

有了系統性的安全 Checklist,你可以請 AI 幫你做快速的安全審查,不需要每次都靠記憶。

你的人類優勢:

  • 你知道業務風險在哪裡(這個 API 洩漏了會影響什麼)
  • 你能做最終判斷:哪些 Checklist 項目在目前的時程和資源下必須做、哪些可以之後補

可以這樣跟 AI 說:

我準備要把這個金流 API 整合上線,請根據 API 安全 Checklist 幫我審查以下程式碼,特別注意:1) API Key 是否安全存放 2) 錯誤處理是否洩漏敏感資訊 3) 有沒有明顯的安全漏洞。程式碼如下:[貼上程式碼]

互動示範

DEMO 1可以修改程式碼試玩
DEMO 2可以修改程式碼試玩
DEMO 3可以修改程式碼試玩
DEMO 4可以修改程式碼試玩

挑戰任務

Task 1

你的同事說:「開發時先用 Production API Key 比較方便,上線前再換。」 這個做法違反了哪個 Checklist 項目?請輸入項目編號(數字)。

Task 2

你接了一個金流 API,程式碼寫完可以正常運作了。上線前,最重要的三個安全檢查是什麼? (請列出三項)

Task 3

API Key 應該多久 Rotate(更換)一次? A) 從來不需要,換了會很麻煩 B) 每 90 天 C) 只有 Key 洩漏時才換 請輸入答案字母。

BackTake the Exam →