雖然身份驗證和授權保護了對 API 的存取,但 加密 保護了資料在網際網路上傳輸時的安全。如果沒有加密,任何攔截流量的人(在公共 WiFi 上、在 ISP 層級等)都可以以純文字讀取您的 API Keys、密碼和敏感的使用者資料。HTTP vs HTTPS#
HTTP (HyperText Transfer Protocol):文字以明文傳送。請求:POST /login { "pass": "secret123" }
駭客看到:POST /login { "pass": "secret123" }
HTTPS (HTTP Secure):文字使用 TLS (傳輸層安全性) 進行加密。請求:POST /login { "pass": "secret123" }
TLS (傳輸層安全性) 基礎知識#
握手 (簡化版)#
2.
Server Hello:「這是我的公開憑證(身分證明)。」
3.
驗證:用戶端向受信任的權威機構 (CA) 檢查憑證。「這真的是 api.example.com 嗎?」
4.
密鑰交換:用戶端和伺服器商定一個「會話密鑰」來加密對話的其餘部分。
API 最佳實踐#
1. 全面強制執行 HTTPS#
不支援 HTTP。將所有 HTTP 流量重新導向到 HTTPS,或者更好的是,使用 HSTS (HTTP Strict Transport Security) Header 告訴瀏覽器「永遠不要再嘗試透過 HTTP 與我交談」。2. 管理憑證#
自動更新(例如 Let's Encrypt + Certbot)以避免過期導致的中斷。
3. Mutual TLS (mTLS)#
對於高度敏感、內部或 B2B API(例如 Open Banking),標準 HTTPS 是不夠的。mTLS:用戶端驗證伺服器 且 伺服器驗證用戶端。
用戶端必須出示自己的憑證。這是目前最強的身份驗證形式之一。
靜態資料加密#
雖然 HTTPS 保護傳輸中的資料,別忘了靜態資料。資料庫:加密包含敏感資訊 (PII) 的磁碟卷或特定欄位。
關鍵要點#
下一步:這結束了我們的 API 安全性之旅。讓我們在 章節總結 中回顧所有內容。 Modified at 2025-12-29 09:35:19