首頁文章關於報價聯絡我們🌐 EN
返回首頁OWASP
OWASP API Security Top 10 完整指南:2023 版 API 安全漏洞與防護【2026 更新】

OWASP API Security Top 10 完整指南:2023 版 API 安全漏洞與防護【2026 更新】

📑 目錄

OWASP API Security Top 10 完整指南:2023 版 API 安全漏洞與防護OWASP API Security Top 10 完整指南:2023 版 API 安全漏洞與防護

TL;DR

💡 重點摘要:- OWASP API Security Top 10 是針對 API 的十大安全風險清單

版本說明:本文介紹的 OWASP API Security Top 10 2023 版是截至 2026 年 2 月的最新正式版本。OWASP Web Application Top 10 已於 2025 年發布新版,但 API Security Top 10 維持 2023 版。兩份清單針對不同場景,應搭配使用。



為什麼 API 安全很重要?

API 已經成為現代應用的基礎。手機 App、網站前端、IoT 裝置、第三方整合,都透過 API 溝通。

根據統計,超過 80% 的網路流量來自 API 呼叫。API 承載的資料量和重要性,早已超越傳統網頁。

API 攻擊事件案例

近年重大 API 安全事件持續增加。根據統計,2024 年有 37% 的組織遭遇 API 安全事件,相比 2023 年的 17% 成長超過一倍

2024-2025 年重大事件

2024 年 Dell 資料外洩(4,900 萬筆)

2024 年 Trello 資料外洩(1,500 萬筆)

2024 年 Twilio Authy 外洩(3,340 萬筆電話號碼)

2024 年 GitHub API 金鑰外洩(1,300 萬組)

2021-2023 年經典案例

2023 年 T-Mobile 事件

2022 年 Twitter 事件

2021 年 Peloton 事件

這些事件的共通點:問題都出在 API 層,而非傳統網頁漏洞。95% 的組織在過去一年中經歷過 API 安全事件,但只有 7.5% 的組織有專門的 API 安全測試計畫。

API 安全 vs 網頁安全:有何不同?

面向傳統網頁API
攻擊面有限的表單和連結大量端點和參數
認證方式Session CookieToken、API Key、OAuth
資料格式HTMLJSON、XML
使用者人類程式、機器
流量模式可預測高頻、自動化
主要風險XSS、CSRFBOLA、認證失效

API 安全需要不同的思維和工具。這就是為什麼 OWASP 專門制定了 API Security Top 10。

想了解 OWASP 組織和其他安全專案,可以參考 OWASP 完整指南



OWASP API Security Top 10(2023 版)

2023 版是目前最新的 API 安全風險清單。以下逐項解析。

API1:Broken Object Level Authorization(BOLA)

中文:物件層級授權失效

風險說明: 攻擊者可以存取不屬於自己的資料物件。這是 API 最常見、最危險的漏洞。

攻擊情境

正常請求:GET /api/users/123/orders
攻擊請求:GET /api/users/456/orders  ← 改別人的 ID

如果系統沒有驗證「使用者 123 能否存取使用者 456 的訂單」,就會發生 BOLA。

真實案例

防護措施

  1. 每個請求都驗證資源擁有權
  2. 使用 UUID 取代遞增 ID
  3. 實作集中式授權檢查機制
  4. 記錄所有存取行為
// 錯誤示範
app.get('/api/orders/:orderId', async (req, res) => {
  const order = await Order.findById(req.params.orderId);
  res.json(order); // 沒有檢查擁有權
});

// 正確做法
app.get('/api/orders/:orderId', async (req, res) => {
  const order = await Order.findById(req.params.orderId);
  if (order.userId !== req.user.id) {
    return res.status(403).json({ error: 'Forbidden' });
  }
  res.json(order);
});

API 授權設計很頭痛?讓我們幫你規劃安全架構

API2:Broken Authentication

中文:認證機制失效

風險說明: API 的認證機制有漏洞,讓攻擊者可以冒充其他使用者。

常見問題

防護措施

  1. 使用標準認證協定(OAuth 2.0、OpenID Connect)
  2. 實作 Token 過期和刷新機制
  3. 多因素認證(MFA)
  4. 登入失敗次數限制
  5. 安全儲存憑證(加鹽雜湊)

API3:Broken Object Property Level Authorization

中文:物件屬性層級授權失效

風險說明: 使用者可以讀取或修改不該存取的物件屬性。

攻擊情境

// 使用者更新個人資料
PUT /api/users/123
{
  "name": "John",
  "email": "[email protected]",
  "role": "admin"  ← 偷偷加入這個欄位
}

如果後端沒有過濾,使用者就能把自己改成管理員。

兩種子類型

防護措施

  1. 明確定義可讀取/可修改的欄位
  2. 使用 DTO(Data Transfer Object)模式
  3. 回應只包含必要欄位
  4. 伺服器端過濾敏感屬性

API4:Unrestricted Resource Consumption

中文:無限制的資源消耗

風險說明: API 沒有限制請求數量或資源使用,可能導致服務癱瘓或成本暴增。

攻擊方式

防護措施

  1. 實作 Rate Limiting
  2. 限制 Payload 大小
  3. 分頁和結果數量上限
  4. 查詢複雜度限制
  5. 資源配額管理
// Rate Limiting 範例
const rateLimit = require('express-rate-limit');

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 分鐘
  max: 100, // 最多 100 次請求
  message: 'Too many requests'
});

app.use('/api/', limiter);

API5:Broken Function Level Authorization

中文:功能層級授權失效

風險說明: 一般使用者可以存取管理員功能或其他角色的 API。

攻擊情境

一般使用者 API:GET /api/users/me
管理員 API:GET /api/admin/users  ← 直接呼叫

如果沒有驗證角色,任何人都能使用管理功能。

防護措施

  1. 預設拒絕所有存取
  2. 明確的角色權限對應
  3. 集中式權限管理
  4. 定期審查 API 權限設定

API6:Unrestricted Access to Sensitive Business Flows

中文:敏感商業流程的無限制存取

風險說明: 攻擊者自動化執行敏感業務操作,造成商業損害。

攻擊情境

防護措施

  1. 識別敏感業務流程
  2. 加入人機驗證(CAPTCHA)
  3. 裝置指紋識別
  4. 行為分析偵測異常
  5. 業務邏輯的頻率限制

API7:Server Side Request Forgery(SSRF)

中文:伺服器端請求偽造

風險說明: 攻擊者讓伺服器發送請求到非預期的目標。

攻擊情境

POST /api/fetch-url
{
  "url": "http://169.254.169.254/latest/meta-data/"
}

如果 API 會去取得使用者提供的 URL,攻擊者可能存取內部服務或雲端 Metadata。

這個漏洞也出現在 OWASP Top 10 的 A10 項目。

防護措施

  1. URL 白名單驗證
  2. 禁止存取內部 IP 範圍
  3. 禁止非必要的 Protocol
  4. 使用專用的網路區段

API8:Security Misconfiguration

中文:安全設定錯誤

風險說明: API 的安全設定不當,暴露不必要的攻擊面。

常見問題

防護措施

  1. 標準化部署流程
  2. 定期安全組態審查
  3. 自動化安全檢測
  4. 最小權限原則

API9:Improper Inventory Management

中文:不當的資產管理

風險說明: 組織不清楚自己有哪些 API,或存在被遺忘的舊版 API。

常見問題

防護措施

  1. 維護 API 清單
  2. 版本管理策略
  3. 定期盤點和清理
  4. 統一的 API Gateway

API10:Unsafe Consumption of APIs

中文:不安全的 API 使用

風險說明: 你的應用程式信任並使用第三方 API,但沒有做好防護。

風險情境

防護措施

  1. 驗證所有外部輸入
  2. 使用 HTTPS
  3. 設定合理的 Timeout
  4. 限制重導向次數
  5. 監控第三方 API 狀態


API 安全測試方法

知道風險後,下一步是測試。

自動化掃描工具

常用的 API 安全掃描工具:

工具類型特點
OWASP ZAP免費開源支援 OpenAPI 匯入
Burp Suite商業功能強大、學習曲線高
Postman免費/商業易用、支援安全測試
42Crunch商業API 專門、CI/CD 整合好
Wallarm商業即時防護 + 掃描

使用 ZAP 進行 API 掃描的詳細教學,可以參考 OWASP ZAP 教學

手動測試技巧

自動化工具無法取代手動測試。以下是重點測試項目:

BOLA 測試

  1. 登入帳號 A
  2. 記錄帳號 A 的資源 ID
  3. 登入帳號 B
  4. 嘗試用帳號 B 存取帳號 A 的資源

認證測試

  1. 使用過期 Token
  2. 使用錯誤格式 Token
  3. 不帶 Token 存取需認證 API
  4. 暴力破解測試

授權測試

  1. 一般使用者呼叫管理員 API
  2. 修改請求中的角色欄位
  3. 嘗試水平和垂直權限提升

Postman 安全測試

Postman 是 API 開發者常用的工具,也可以做安全測試。

設定測試腳本

// 檢查回應不包含敏感資訊
pm.test("No sensitive data in response", function () {
    pm.expect(pm.response.text()).to.not.include("password");
    pm.expect(pm.response.text()).to.not.include("secret");
});

// 檢查必要的安全 Header
pm.test("Security headers present", function () {
    pm.response.to.have.header("X-Content-Type-Options");
    pm.response.to.have.header("X-Frame-Options");
});

// 檢查回應時間
pm.test("Response time acceptable", function () {
    pm.expect(pm.response.responseTime).to.be.below(2000);
});


API 安全最佳實務

認證與授權設計

使用 OAuth 2.0 + OpenID Connect

Token 最佳實務

Rate Limiting 實作

不同層級的限制:

全域限制:每 IP 每分鐘 1000 次
API 限制:每用戶每分鐘 100 次
端點限制:登入 API 每 IP 每分鐘 5 次

回應 Header 標示

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1640000000

Input Validation

驗證所有輸入

const Joi = require('joi');

const userSchema = Joi.object({
  name: Joi.string().min(2).max(50).required(),
  email: Joi.string().email().required(),
  age: Joi.number().integer().min(0).max(150),
  role: Joi.string().valid('user', 'moderator')  // 不允許 admin
});


API Gateway 安全設定

API Gateway 是 API 安全的第一道防線。

AWS API Gateway

安全功能

設定建議

# 啟用 CloudWatch 日誌
x-amazon-apigateway-policy:
  Version: "2012-10-17"
  Statement:
    - Effect: Allow
      Action: execute-api:Invoke
      Resource: "arn:aws:execute-api:*:*:*"
      Condition:
        IpAddress:
          aws:SourceIp: "203.0.113.0/24"

GCP Cloud Endpoints

安全功能

Azure API Management

安全功能

三大雲比較

功能AWSGCPAzure
原生認證IAMCloud IAMAzure AD
WAF 整合AWS WAFCloud ArmorAzure WAF
價格模式按請求按請求按單位
學習曲線中等中等偏高

雲端 API Gateway 怎麼選?預約免費架構諮詢



常見問題 FAQ

Q1:REST API 和 GraphQL API 的安全差異?

REST API

GraphQL API

GraphQL 需要特別注意:

Q2:API Key 夠安全嗎?

API Key 的問題

適用場景

不適用場景

建議使用 OAuth 2.0 搭配 JWT,而非單純 API Key。

Q3:如何保護內部 API?

內部 API 常被忽略,但同樣重要。

保護措施

  1. 網路層:使用 VPC、Private Subnet
  2. 認證:Service-to-Service 認證(mTLS、Service Account)
  3. 授權:Zero Trust 架構,不信任內部流量
  4. 監控:記錄所有內部 API 呼叫
  5. 文件:維護內部 API 清單

「內部就是安全」的假設是危險的。資安事件中,橫向移動攻擊常常利用內部 API 缺乏防護的弱點。



結論

API 安全不是選配,是必備。

OWASP API Security Top 10 提供了清楚的風險清單和防護方向。重點回顧:

  1. BOLA 是頭號風險:每個 API 都要檢查物件擁有權
  2. 認證授權要分開:驗證身份和檢查權限是兩件事
  3. 輸入永遠不可信:驗證、過濾、限制
  4. 善用 API Gateway:集中處理安全邏輯
  5. 持續測試監控:安全不是一次性工作

下一步建議:

想了解 AI 時代的新興 API 安全議題,可以參考 OWASP LLM Top 10。如果你的 API 服務行動裝置,也別忘了參考 OWASP Mobile 與 IoT 安全

預約架構設計諮詢,打造安全的 API 架構

OWASPAWS
上一篇
OWASP Mobile & IoT Top 10 完整指南:2024 行動與物聯網安全漏洞解析【2026 更新】
下一篇
LLM 模型排名與比較:2026 年主流大型語言模型實測評比