客戶端和服務器之間的事務包括向特定端點發(fā)出的請求,該請求由基本 URL(服務器域名)、方法(URL 的路徑部分)和可選參數(shù)組成。請求指定要使用的方法(通常稱為動詞),并可能包含正文(通常為 JSON 或 XM L)。

服務器在驗證請求的身份和授權(quán)后,會處理請求并返回響應,其中包括指示請求狀態(tài)的 HTTP 響應代碼。響應可能以不同格式和編碼方案返回數(shù)據(jù)負載。

為什么 API 安全性如此重要?

全球 API 的數(shù)量正在迅速增長,Postman 報告稱,去年增長率為 39%。Gartner 預計,到 2022 年,90% 的 Web 應用程序在 API 中暴露的攻擊面將比在 UI 中暴露的攻擊面更多,API 濫用將成為最常見的攻擊媒介。API 對攻擊者有很大吸引力,因為它們通常通過記錄在案的終端節(jié)點暴露在外,攻擊工具可以輕松自動化攻擊。

API 的普遍性、相對容易攻擊的特性以及暴露的數(shù)據(jù)價值,使得 API 安全成為安全和風險專業(yè)人員的首要任務。幸運的是,開發(fā)人員可以通過一些成熟的模式和實踐來有效降低 API 漏洞的風險。

API 安全的基礎(chǔ)

保護 API 的第一步是深入了解 API 的基本元素,包括:

傳輸層安全性 (TLS)

傳輸層安全性 (TLS) 協(xié)議用于確保通過 TCP/IP 網(wǎng)絡的安全通信。它加密數(shù)據(jù)以防止在傳輸過程中被竊聽,并確??蛻舳四軌蝌炞C服務器的完整性(通過證書檢查)。盡管證書管理曾是一個挑戰(zhàn),但有了 Let’s Encrypt 等服務提供商,證書部署變得更加簡單。所有新的 API 開發(fā)都應將保護通信網(wǎng)絡作為首要任務。

速率限制

公共 API 作為企業(yè)的門戶,必須防止拒絕服務 (DoS) 攻擊。攻擊者可能會發(fā)起自動化攻擊,影響合法用戶的性能,甚至耗盡服務器資源。速率限制可以緩解這些問題,限制從特定 IP 地址到終端節(jié)點的重復訪問。這通常通過 API 網(wǎng)關(guān)或?qū)S梅雷o產(chǎn)品(如 WAF 或 API 防火墻)來實現(xiàn)。

訪問控制

訪問控制是 API 安全的核心,包含兩個方面:

無身份驗證
對于只讀的公共 API,可能不需要身份驗證,通常用于信息和狀態(tài)查看。

基本身份驗證
基本身份驗證是一種過時的方法,通過將用戶名和密碼編碼為 Base64 字符串進行傳輸,缺乏安全性,不建議用于新設(shè)計。

會話 Cookies
通過登錄頁面進行身份驗證后,客戶端存儲會話 Cookie 進行后續(xù)請求。這種方法存在泄露和生命周期管理問題,也不推薦使用。

承載者認證
通過使用用戶憑證的哈希值來改進基本身份驗證,但仍存在中間人攻擊的風險。

API 密鑰
API 密鑰是常用的身份驗證方法。服務器生成密鑰供客戶端使用,客戶端通過標頭提交密鑰進行驗證。雖然 API 密鑰適合服務 API,但在客戶端應用程序中的安全存儲和生命周期管理仍然是挑戰(zhàn)。

OAuth 2.0
OAuth 2.0 是廣泛使用的身份驗證和授權(quán)標準,允許客戶端通過授權(quán)服務器驗證身份并獲得訪問令牌。最常用的流包括授權(quán)碼流程和使用 PKCE 的授權(quán)代碼流程,后者增強了安全性,適用于無法存儲客戶端密鑰的應用。

OpenID Connect (OIDC)
OpenID Connect 是建立在 OAuth 之上的身份層,支持通過 JWT 令牌獲取用戶信息,如用戶名和電子郵件,并驗證信息的完整性。

授權(quán)

一旦確定客戶端身份,服務器需要評估其訪問資源的權(quán)限。訪問控制通常在請求級別和對象級別進行。復雜的授權(quán)要求最好使用專用庫或框架(如 Open Policy Agent)來處理。

JSON Web 令牌 (JWT)

JWT 用于在客戶端和服務器之間安全傳輸信息。JWT 由標頭、聲明和簽名組成。標頭提供有關(guān)算法的信息,聲明部分包含服務器特定的數(shù)據(jù),簽名用于驗證消息的完整性。JWT 的廣泛使用要求在生產(chǎn)環(huán)境中小心處理,以避免常見的陷阱。

安全的 API 生命周期

有效的 API 安全性理想地建立在完善的 DevOps 流程的基礎(chǔ)上。以下是 API 生命周期中關(guān)鍵的安全階段和最佳實踐:

設(shè)計

強大的 API 安全性從設(shè)計階段開始,以確保充分考慮以下內(nèi)容:

建設(shè)

API 后端的構(gòu)建是確保 API 安全的關(guān)鍵因素:

測試

設(shè)計優(yōu)先方法的一個主要優(yōu)點是能夠利用工具自動化測試:

保護

某些 API 保護措施應在網(wǎng)關(guān)級別實施:

API 網(wǎng)關(guān)

許多優(yōu)秀的 API 網(wǎng)關(guān)可用于主要云平臺:

WAF 和 WAAP

Web 應用程序傳統(tǒng)上依賴 WAF 來抵御攻擊:

API 微防火墻

API 微防火墻通過積極的安全模型強制執(zhí)行 OAS 合同:

監(jiān)測

API 生命周期的最后一個要素是主動監(jiān)控:

治理

API 安全還包括從設(shè)計到運營的全過程治理:

常見的 API 攻擊方法(和防御措施)

了解常見的 API 攻擊方法可以幫助開發(fā)人員更好地保護 API。以下是主要的攻擊方法及其防御措施:

1. 機器人攻擊

描述:惡意爬蟲程序用于抓取大量數(shù)據(jù)或 PII。
防御措施

2. API Discovery 和 Endpoint Enumeration

描述:攻擊者試圖獲取有關(guān) API 及其終端節(jié)點的知識。
防御措施

3. 拒絕服務攻擊(DoS)

描述:通過使服務器過載來使 API 脫機。
防御措施

4. 憑證填充攻擊(Credential Stuffing)

描述:使用常見密碼字典攻擊 API。
防御措施

5. 賬戶接管攻擊(Account Takeover)

描述:利用密碼重置進程或其他手段接管賬戶。
防御措施

6. API 磨損和分頁攻擊

描述:惡意爬蟲抓取整個數(shù)據(jù)存儲,或利用分頁功能遍歷所有頁面。
防御措施

這些防御措施有助于減少常見的 API 攻擊風險,并增強 API 的安全性。

常見漏洞

OWASP 組織發(fā)布了專門的 OWASP API 安全 10 大漏洞,描述了前 10 個最常見的 API 漏洞類別。以下是主要的 API 漏洞及其防御措施:

1. 身份驗證漏洞(Authentication Vulnerabilities)

描述:身份驗證損壞或缺失是 API 漏洞的主要原因。常見問題包括未受保護的終端節(jié)點、令牌和密鑰泄漏、用戶憑據(jù)公開和密碼重置機制濫用。
防御措施

2. 對象級漏洞(Object-Level Vulnerabilities)

描述:這些漏洞允許用戶訪問不屬于他們的對象。攻擊者通過操縱對象標識符來探測不良的實現(xiàn)。
防御措施

3. 函數(shù)級漏洞(Function-Level Vulnerabilities)

描述:用戶能夠訪問未授權(quán)的 API 終端節(jié)點或功能。根本原因是缺乏適當?shù)氖跈?quán)檢查。
防御措施

4. 數(shù)據(jù)漏洞(Data Vulnerabilities)

描述

5. 配置漏洞(Configuration Vulnerabilities)

描述:包括錯誤的操作或運行時配置,如缺少傳輸加密、接受未使用的 HTTP 方法、冗長的錯誤消息和不必要的 HTTP 標頭。
防御措施

6. 實現(xiàn)漏洞(Implementation Vulnerabilities)

描述:包括輸入注入(SQL、命令、LDAP 等)、缺乏數(shù)據(jù)清理、使用易受攻擊的庫或組件、框架配置錯誤等問題。
防御措施

這些漏洞和防御措施有助于確保 API 在開發(fā)和部署過程中的安全性。通過實施這些防御策略,開發(fā)人員可以顯著減少 API 面臨的安全風險。

保護 API 的最佳實踐

要提高 API 的安全性,可以采取以下幾種最佳實踐:

1. 始終使用 TLS

描述:傳輸層安全性(TLS)應作為所有 API 端點的標準配置。確保正確配置安全標頭,并處理證書的輪換過程。
措施

2. 使用 OAuth2 進行單點登錄(SSO)

描述:OAuth2 標準提供了成熟的身份驗證和授權(quán)機制,避免自己設(shè)計和實現(xiàn)復雜的身份驗證工作流。
措施

3. 練習良好的 API 密鑰和令牌管理

描述:確保 API 密鑰和令牌的安全性,避免明文存儲或提交到版本控制系統(tǒng)中。
措施

4. 使用策略代理進行細粒度授權(quán)管理

描述:在 API 的每個函數(shù)端點實施訪問控制時,使用中央授權(quán)終端節(jié)點或授權(quán)框架來避免實現(xiàn)錯誤。
措施

5. 消除未使用的端點方法

描述:刪除未使用的 HTTP 方法(如 DELETE、OPTIONS、PATCH)以減少攻擊面。
措施

6. 應用配額和速率限制

描述:通過設(shè)置配額和速率限制來防止拒絕服務攻擊和大規(guī)模數(shù)據(jù)泄露。
措施

7. 使用 API 防火墻和網(wǎng)關(guān)

描述:利用云平臺提供的 API 網(wǎng)關(guān)服務和定制的 API 微防火墻來加強 API 安全。
措施

8. 管理 API 清單

描述:積極管理和審查 API 清單,識別和處理過時或棄用的 API。
措施

9. 使用經(jīng)過驗證的標準庫

描述:依賴成熟的標準庫來處理常見模式和工作流程,避免自行實現(xiàn)可能存在安全漏洞的功能。
措施

這些措施有助于保護 API 免受各種安全威脅,并確保其安全性和可靠性。

結(jié)論

開發(fā)人員在確保 API 的功能性和安全性方面面臨著顯著挑戰(zhàn)。為了保護 API 不被攻擊者利用或破壞,安全性應貫穿 API 開發(fā)的整個生命周期。以下是關(guān)鍵點:

  1. 深入理解關(guān)鍵概念:開發(fā)人員必須清楚授權(quán)和身份驗證等關(guān)鍵安全概念,以便正確實施和維護 API 安全。
  2. 采用最佳實踐:使用已驗證的安全措施和最佳實踐,如始終使用 TLS、實施 OAuth2 認證、管理好 API 密鑰和令牌、以及使用 API 防火墻和網(wǎng)關(guān)來增強 API 的保護層。
  3. 預見攻擊手法:開發(fā)人員應像對手一樣思考,了解潛在的攻擊方法和漏洞,從而更好地保護 API。例如,防止爬蟲程序濫用、應對拒絕服務攻擊、處理憑證填充攻擊等。
  4. 利用技術(shù)工具:開發(fā)人員和安全團隊應利用現(xiàn)代技術(shù)工具,如 API 微防火墻和 API 網(wǎng)關(guān),來添加額外的保護層并增強 API 的安全性。

通過結(jié)合這些方法和工具,開發(fā)人員可以顯著提高 API 的安全性,確保 API 在抵御各種安全威脅方面表現(xiàn)良好。

原文鏈接:REST API Security Essentials

上一篇:

API 安全:如何準備和應對攻擊漏洞

下一篇:

反應過度數(shù)據(jù)暴露:示例和預防
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費