實務清單:接 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。步驟:
- 在服務商後台產生新 Key
- 更新環境變數
- 確認服務正常運作
- 撤銷舊 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) 有沒有明顯的安全漏洞。程式碼如下:[貼上程式碼]
互動示範
挑戰任務
你的同事說:「開發時先用 Production API Key 比較方便,上線前再換。」 這個做法違反了哪個 Checklist 項目?請輸入項目編號(數字)。
你接了一個金流 API,程式碼寫完可以正常運作了。上線前,最重要的三個安全檢查是什麼? (請列出三項)
API Key 應該多久 Rotate(更換)一次? A) 從來不需要,換了會很麻煩 B) 每 90 天 C) 只有 Key 洩漏時才換 請輸入答案字母。