iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0
自我挑戰組

API 全攻略系列 第 11

Day 11: 常見 API 安全問題與解決方案

  • 分享至 

  • xImage
  •  

前言

在前幾天,我們學到 API 認證的方式(API Key、Token、OAuth 2.0、JWT)。不過光有認證機制還不夠,實務上 API 仍然會遇到許多 安全威脅。今天,我們就來整理常見的 API 安全問題,並給出對應的解決方案。


1.資料外洩(Data Exposure)

問題

  • API 回傳了過多不必要的資訊(例如:使用者的密碼雜湊、內部 ID)。
  • 攻擊者可以藉此收集敏感資訊。

解決方案

  • 最小化回應 :只回傳必要的欄位。
  • 欄位過濾 :在 API 層設定允許輸出的欄位。
  • 加密傳輸 :使用 HTTPS 保護傳輸中的資料。

2.認證與授權不當(Broken Authentication & Authorization)

問題

  • API 沒有驗證使用者身分,或沒有正確檢查權限。
  • 例如:一個普通使用者能透過 API 讀取到「管理員資料」。

解決方案

  • 強制驗證 :所有需要保護的 API 都必須驗證身分。
  • 角色/權限檢查 :在後端檢查使用者是否有存取權限。
  • JWT / OAuth :搭配 Token 驗證使用者身分與權限。

3.輸入驗證不足(Injection 攻擊)

問題

  • 攻擊者透過 API 傳入惡意輸入,例如 SQL Injection、XSS。

解決方案

  • 參數化查詢(Parameterized Query) :避免 SQL Injection。
  • 輸入過濾 :移除特殊字元。
  • 輸出編碼 :避免跨站腳本(XSS)

4.暴力攻擊與濫用(Rate Limiting 缺失)

問題

  • 攻擊者可能透過腳本,不斷嘗試 API(例如:暴力破解登入)。
  • 或是合法使用者誤用,造成系統過載。

解決方案

  • Rate Limiting(速率限制) :限制一段時間內的 API 請求數。
  • API Gateway / WAF :自動封鎖異常流量。
  • Captcha :針對登入類 API 增加驗證。

5.不安全的 API Key / Token 儲存

問題

  • API Key 被硬編碼在前端程式碼中(例如 GitHub 上看到 key)。
  • Token 過期機制不嚴謹,導致被長期濫用。

###解決方案

  • 環境變數管理 :API Key 應存在伺服器環境變數中。
  • 最小權限 :API Key 只開放必要的權限。
  • Token 過期機制 :設定合理的過期時間。

6.錯誤處理不當(Error Handling)

問題

  • API 回傳過於詳細的錯誤訊息(例如 SQL 錯誤、伺服器堆疊訊息)。
  • 攻擊者可能利用這些訊息推測系統架構。

解決方案

  • 對外訊息簡化 :只回傳必要的錯誤碼與簡短訊息。
  • 詳細錯誤寫入日誌 :內部記錄完整錯誤訊息供除錯。

7.缺乏 API 版本控管

問題

  • 舊版 API 沒有下線,導致安全漏洞依然存在。

解決方案

  • 版本管理 :採用 /v1/、/v2/ 明確標示版本。
  • 舊版下線機制 :公告並逐步淘汰不安全的 API。

小結

綜上所述,可以知道常見 API 安全問題包含:

  • 資料外洩
  • 認證與授權不當
  • 輸入驗證不足
  • 缺乏速率限制
  • API Key/Token 管理不當
  • 錯誤處理不當
  • 缺乏版本控管

而解決方案的核心概念包括: 最小化、驗證、加密、監控。


上一篇
Day 10: JWT(JSON Web Token)運作方式
下一篇
Day 12: CORS 與跨域請求
系列文
API 全攻略15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言