🌐 ZH-TW

🔑 API 金鑰產生器

產生安全的隨機 API 金鑰。可用於 REST API、驗證權杖與金鑰的產生。

API 金鑰格式
指南

瞭解更多

01

1. API 金鑰安全的重要性

API 金鑰是應用程式之間驗證的核心安全要素。脆弱的金鑰容易遭受暴力破解攻擊,一旦外洩就會導致未經授權的 API 存取。強固的 API 金鑰應至少為 32 個字元以上的隨機字串,並使用加密安全的偽隨機數產生器(CSPRNG)。UUID v4、Base64、Hex 格式被廣泛使用,每組 API 金鑰都必須唯一且無法預測。金鑰一旦外洩應立即廢棄並更換為新金鑰,切勿將其提交到 GitHub 等公開程式碼儲存庫。

02

2. 金鑰產生方式比較

API 金鑰的產生方式有多種。UUID v4 採用 122 位元隨機值,衝突機率極低,被廣泛使用。Base64 將二進位資料編碼為文字,32 個字元可提供約 192 位元的熵。Hex 以十六進位表示,可讀性高,64 個字元可提供 256 位元的安全強度。英數字方式僅使用大小寫字母與數字,因此對 URL 安全,加上前綴(sk_、api_)可以更容易識別金鑰類型。Stripe、AWS、OpenAI 等各自使用獨特的金鑰格式,以區分不同服務的金鑰。

03

3. UUID 與隨機字串

UUID v4 是標準化的 128 位元識別碼,能保證全球唯一性。採用 8-4-4-4-12 格式(例如:550e8400-e29b-41d4-a716-446655440000),結構清晰,遵循 RFC 4122 標準。而自訂隨機字串則可以自由設定長度與格式,更具彈性。UUID 適合作為資料庫主鍵,但對 API 金鑰而言,隨機字串更簡潔好用。兩者的安全強度相近,但隨機字串可以加上前綴與檢查碼,更容易實作驗證邏輯。

04

4. 金鑰儲存建議

API 金鑰絕不能以明文形式儲存。應將其保存在環境變數(.env)中,並加入 .gitignore 以排除在版本控制之外。在正式環境中,請使用 AWS Secrets Manager、HashiCorp Vault、Azure Key Vault 等專用的機密管理系統。存入資料庫時應轉換為雜湊值(SHA-256),必要時再結合加密(AES-256)。請勿將金鑰寫死在程式碼中,應改用 Docker secrets 或 Kubernetes Secrets。對日誌中的金鑰進行遮罩處理以防止外洩,並監控金鑰的使用紀錄。

05

5. 金鑰輪替原則

API 金鑰應定期輪替。每 90 天更換一次金鑰是常見做法,若懷疑外洩應立即廢棄。為達成無中斷更換,可同時啟用兩組金鑰,切換至新金鑰後再停用舊金鑰。AWS IAM 與 Google Cloud API 金鑰皆提供自動輪替功能。為每組金鑰設定有效期限,使舊金鑰自動失效,並將輪替紀錄寫入稽核日誌。改用 OAuth 2.0、JWT 等以權杖為基礎的驗證方式取代 API 金鑰,能更安全並支援自動過期。

06

6. 速率限制與使用限制

務必對 API 金鑰套用速率限制以防止濫用。設定諸如每個 IP 每分鐘 100 次、每組金鑰每小時 1,000 次之類的限制。設定配額以限制每日最大呼叫次數,超出時回傳 429 Too Many Requests。設定 IP 白名單,只允許特定 IP 使用金鑰,並偵測異常模式(短時間內大量請求)以自動封鎖。使用 Cloudflare、Kong、AWS API Gateway 等 API 閘道可以輕鬆實作速率限制。為每組金鑰設定權限(作用域),將存取限制為唯讀、唯寫等。

常見問題

產生的金鑰會傳送到伺服器嗎?
不會。所有金鑰僅在瀏覽器中產生,不會傳送到伺服器,因此可以安全使用。
我應該選擇哪一種格式?
一般情況下 UUID v4 衝突機率低,被廣泛使用。如需 URL 安全請選擇英數字,如需可讀性請選擇 Hex。