如何設(shè)計安全可靠的 API ?
如何設(shè)計安全可靠的 API ?下圖列出了 12 條原則。
圖片
01 使用 HTTPS
- 數(shù)據(jù)加密:HTTPS 對客戶端和服務(wù)器之間傳輸?shù)臄?shù)據(jù)進(jìn)行加密。它使用 TLS 或其前身 SSL 對通信進(jìn)行加密。這種加密可確保用戶數(shù)據(jù)、身份驗證等敏感信息在傳輸過程中保持安全。如果沒有 HTTPS,這些信息可能會被數(shù)據(jù)包嗅探等技術(shù)截獲。
- 合規(guī)要求:許多監(jiān)管標(biāo)準(zhǔn),如 GDPR 和 PCI DSS,都要求使用 HTTPS 來保護(hù)用戶的敏感信息。
- SEO 要求:谷歌等搜索引擎會優(yōu)先考慮支持 HTTPS 的網(wǎng)站和應(yīng)用程序接口,認(rèn)為它們更安全。
02 使用 OAuth 2.0
OAuth 2.0 對設(shè)計安全可靠的 API 至關(guān)重要,因為它能夠在不共享用戶憑證的情況下使用代理來訪問資源。它還支持跨多個應(yīng)用程序和服務(wù)的集成,促進(jìn)了單點登錄(SSO),允許用戶進(jìn)行一次身份驗證來無縫訪問多個服務(wù)或應(yīng)用程序。
03 使用 WebAuthn
WebAuthn 不依賴于集中式服務(wù)器或密碼數(shù)據(jù)庫。它允許用戶注冊和使用自己的設(shè)備(如安全密鑰或生物特征識別設(shè)備)進(jìn)行身份驗證,消除僅依賴密碼的弱點。通過實現(xiàn) WebAuthn,API 可以符合 FIDO 等安全標(biāo)準(zhǔn),滿足合規(guī)要求。
04 使用分級 API Key
我們通常要針對系統(tǒng)開放的服務(wù)接口設(shè)計不同的訪問權(quán)限。分級的 API Key 可以提供細(xì)粒度的訪問控制。比如,在使用 Stripe 時,我們可以給“訪問賬戶”指定一個只讀 API Key,給“操作賬戶”指定另一個 API Key。
05 授權(quán)
這一條和上一條相關(guān)。我們需要給系統(tǒng)內(nèi)部的各種 API 接口設(shè)計訪問授權(quán),遵循“最小權(quán)限”原則。
06 限流
在設(shè)計 API 時,需要估計大致容量,并針對容量來限流,從而保護(hù)系統(tǒng)。限流的好處有很多,比如防止 DDos 攻擊,防止系統(tǒng)過載,合理分配系統(tǒng)資源等。
07 版本控制
API 版本控制提供了一種結(jié)構(gòu)化的 API 生命周期管理方法,將 API 的管理提升到代碼一個級別,同時確保向后兼容性。它使開發(fā)人員能夠引入新功能而不會破壞用戶對于舊版本的依賴。
08 白名單
白名單指定并僅允許預(yù)先批準(zhǔn)的 IP 地址或用戶訪問 API。這有助于防止常見的安全威脅,如未經(jīng)授權(quán)的訪問、數(shù)據(jù)泄露、注入攻擊等。它提高了潛在攻擊者的門檻。
09 定期檢查 OWASP API 安全風(fēng)險清單
The OWASP API Security Top 10 是由 OWASP(Open Web Application Security Project)編制的清單,該組織致力于提高軟件安全性。該清單特別突出了與 API 相關(guān)的最關(guān)鍵安全風(fēng)險,旨在提高開發(fā)人員、安全專業(yè)人員和組織對 API 相關(guān)漏洞和威脅的意識,并提供指導(dǎo),以有效解決這些問題。
10 使用 API 網(wǎng)關(guān)
API 網(wǎng)關(guān)作為入站 API 請求的集中入口點。它們能夠?qū)嵤┲T如身份驗證、授權(quán)、加密和威脅防護(hù)等安全措施。這種集中化能夠在所有 API 中應(yīng)用一致的安全策略。
11 錯誤處理
有效的錯誤處理機(jī)制使 API 能夠優(yōu)雅地處理意外情況或故障,確保錯誤得到適當(dāng)?shù)貍鬟_(dá)給客戶端,提供更好的用戶體驗。確保返回給客戶端的錯誤消息不會暴露 API 內(nèi)部運(yùn)作或基礎(chǔ)架構(gòu)的敏感信息。
12 輸入驗證
無效或格式不正確的輸入數(shù)據(jù)可能導(dǎo)致數(shù)據(jù)丟失、損壞或系統(tǒng)崩潰。輸入驗證在設(shè)計安全可靠的 API 中至關(guān)重要,有助于防止常見的攻擊,如 SQL 注入、NoSQL 注入和其他基于注入的漏洞。






















