Try   HackMD

Top 12 Tips For API Security

整理From ByteByteGo
https://www.youtube.com/watch?v=6WZ6S-qmtqY

API定義

Cloudflare對API的定義簡而易懂
應用程式開發介面 (API) 是一組規則,允許一個軟體程式將資料傳輸到另一個軟體程式。

12 Tips for API security

1.Use HTTPS

加密傳輸避免竊聽或是中間人攻擊,保護敏感資訊(如Api key、Token、個資)

2.Use OAuth2

讓第三方應用程式(e.g. Google)驗證身分,User取得Token後對API進行調用。好處是因為user不用輸入帳密、後端也不用儲存帳密

3.Use WebAuthn

也稱Web Authentication
WebAuthn是FIDO2標準的一部分,專注於網頁瀏覽器和網站如何實現安全的身份驗證。它允許網站使用公鑰加密技術來註冊和驗證用戶,用戶可以使用各種驗證器,如安全密鑰、指紋識別或人臉識別等生物特徵。

4.Use Leveled API keys

對所有服務都使用同一把API key可能導致風險,所以可針對permission、scope或是Read only/Write/Admin等設定不同的API key,並加上API key過期時間來降低風險

5.Implement Authorization

縱使User通過身分驗證,也要執行Role-base access control
e.g. Viewer、Editor => 最小化特權

6.Rate Limiting

避免惡意攻擊如暴力破解、DoS等,也可維持系統的Performance及可用性

7.API Versioning

透過API版控來更新功能且不影響現有的運作,並針對每一版做好變更管理

8.Allowlisting

預先定義受信任實體來存取服務,e.g.
IP、User ID、API keys

9.Check OWASP API Security Risks

參閱 https://owasp.org/API-Security/editions/2023/en/0x11-t10/

10.Use API Gateway

API Gateway提供了一個集中層(centralized layer)加強安全性,將security policy、Rate Limiting、Authorization整合於API Gateway中,此外也可提供額外功能如流量管理、快取、日誌紀錄、監控等

11.Error Handling

錯誤處理關係到使用者體驗與API安全

  • Internal server error => X
  • Failed to retrieve user data.Please check that you are authenticated and have sufficient permissions => O

提供所需的資訊而不是曝露敏感資訊

  • SQL query failed due to => X
  • Invalid input provided.Please review and try again =>O

盡可能不要回覆400 Bad Request or 500 Internal server error

12 Input Validation

對所有輸入資料進行驗證,包含Request parameter、Header、Payload等等使用者可以輸入的資訊,避免各種injection攻擊

除了在client端驗證輸入外,Server端 "也要" 使用專門的Validation libraries或框架