整理From ByteByteGo
https://www.youtube.com/watch?v=6WZ6S-qmtqY
Cloudflare對API的定義簡而易懂
應用程式開發介面 (API) 是一組規則,允許一個軟體程式將資料傳輸到另一個軟體程式。
加密傳輸避免竊聽或是中間人攻擊,保護敏感資訊(如Api key、Token、個資)
讓第三方應用程式(e.g. Google)驗證身分,User取得Token後對API進行調用。好處是因為user不用輸入帳密、後端也不用儲存帳密
也稱Web Authentication
WebAuthn是FIDO2標準的一部分,專注於網頁瀏覽器和網站如何實現安全的身份驗證。它允許網站使用公鑰加密技術來註冊和驗證用戶,用戶可以使用各種驗證器,如安全密鑰、指紋識別或人臉識別等生物特徵。
對所有服務都使用同一把API key可能導致風險,所以可針對permission、scope或是Read only/Write/Admin等設定不同的API key,並加上API key過期時間來降低風險
縱使User通過身分驗證,也要執行Role-base access control
e.g. Viewer、Editor => 最小化特權
避免惡意攻擊如暴力破解、DoS等,也可維持系統的Performance及可用性
透過API版控來更新功能且不影響現有的運作,並針對每一版做好變更管理
預先定義受信任實體來存取服務,e.g.
IP、User ID、API keys
參閱 https://owasp.org/API-Security/editions/2023/en/0x11-t10/
API Gateway提供了一個集中層(centralized layer)加強安全性,將security policy、Rate Limiting、Authorization整合於API Gateway中,此外也可提供額外功能如流量管理、快取、日誌紀錄、監控等
錯誤處理關係到使用者體驗與API安全
提供所需的資訊而不是曝露敏感資訊
盡可能不要回覆400 Bad Request or 500 Internal server error
對所有輸入資料進行驗證,包含Request parameter、Header、Payload等等使用者可以輸入的資訊,避免各種injection攻擊
除了在client端驗證輸入外,Server端 "也要" 使用專門的Validation libraries或框架