主要的 API 安全風險以及如何緩解它們
已發表: 2022-09-07在微服務的大量興起和快速部署應用程序的不斷推動下,API 已成為每個企業家的首選名稱。
然而,隨著每個小功能都與其他軟件或產品鏈接以獲得無縫的用戶體驗,API 正日益成為安全黑客的中心。 以至於 Gartner 的《如何建立有效的 API 安全策略》報告預測,到 2022 年, API 安全風險將成為導致數據洩露的最常見攻擊之一。
但是,是什麼讓 API 安全策略成為現代企業家的必備品呢? 為什麼對這項技術給予特別關注? 將在本文中找到這些問題的答案以及如何降低 API 安全風險。
為什麼要關心如何提高 API 安全性?
API 幫助企業實現真正的數字化。 無論您的應用程序是什麼,應用程序編程接口 (API) 都會將其與其他軟件或功能連接起來,從而節省從頭開始構建它們的時間。
現在,API 之所以受到特別關注,是因為它們對企業成功的影響程度。
API 的商業利益
節省成本:由於 API 使企業能夠利用其他公司的功能和數據,因此無需在內部創建這些功能。 在很大程度上有助於節省軟件開發成本的活動。
更好的客戶服務:通過鏈接多個軟件,API 為企業提供了一個全面的客戶視圖和他們正在尋找的東西。 這些信息有助於公司更好地與消費者互動並做出明智的決定。
改善行業級協作:API 使企業能夠與跨行業的其他公司建立聯繫,這些公司可以幫助使在線服務和平台變得健壯。 這反過來又改善了合作夥伴關係,創造了新的商業機會,並提高了企業運營的效率。
為商業智能收集數據:企業可以利用 API 來收集客戶的偏好和行為。 然後對這些信息進行分析,以深入了解當前的市場趨勢和客戶需求。
創造新的收入模式:API 為企業提供了多個平台來推廣和銷售他們的服務、數字產品。 通過該模型,企業可以做任何事情,從向其他公司出售數據到基於現有 API 構建新軟件。
API 在業務中的好處是多方面的。 但 API 安全風險也是如此。 黑客喜歡測試公司的 API 安全設計有兩個主要原因。
為什麼黑客喜歡 API
- 訪問公司數據的一種簡單方法——API 讓黑客可以通過多個軟件程序直接訪問存儲的數據,包括敏感信息。
- 繞過安全措施的一種簡單模式——許多公司使用防火牆來保護他們的系統免受黑客攻擊。 但是,少考慮 API 安全策略可以使黑客很容易通過這個後門進入軟件。
因此,以下是導致 Web 應用程序 QA 團隊特別關注的 API 的優缺點。
現在,我相信您一定想知道為什麼 API 安全最佳實踐列表與傳統安全的列表不同。 在我們研究主要的 API 安全風險以及如何緩解它們之前,讓我們先回答這個問題。
區別於傳統安全的 API 安全設計的關鍵要素
傳統的 Web 應用程序安全性和 Web API 安全性最佳實踐存在巨大差異——這種差異源於它們的結構方式。
一座沒有護城河和多個開口的城堡——早期,傳統網絡只需在 443 (HTTPS) 和 80 (HTTP) 等常用端口中進行保護。 如今,Web 應用程序帶有多個使用不同協議的 API 端點,因此當 API 擴展其功能集時,管理其安全性變得困難。
頻繁更改傳入請求格式——API 在 DevOps 環境下不斷發展,大多數 WAF 無法適應這種程度的彈性。 因此,每當 API 發生變化時,都必須手動重新配置和調整傳統的安全措施——這種充滿錯誤的方法會佔用資源的時間。
客戶端可能不使用 Web 瀏覽器——大多數微服務 API 用於移動應用程序或軟件組件。 由於客戶端不使用瀏覽器,網絡安全工具無法使用瀏覽器驗證功能並檢測有害機器人。
API 結構的這種差異帶來了幾個 API 安全風險,認為對於 Web 應用程序開發人員和 QA 團隊來說,實時找到解決方案並提高 API 安全性至關重要。
主要的 API 安全風險以及如何緩解它們
在我們開始討論風險之前,讓我告訴你 API 安全檢查表是不確定的。 你認為你已經解決了所有的漏洞,新的漏洞就會出現。 解決這個問題的方法在於穿上黑客的鞋子,重新審視你的應用程序如何使用 API 以及被忽視的差距。
雖然這是一個長期、持續的解決方案,但一個好的起點是調查最常見的 API 安全風險。
1.不安全的分頁
大多數 API 提供對資源的訪問,這些資源是用戶或小部件等實體的列表。 對於在瀏覽器上使用該軟件的客戶端,API 通常會過濾掉此列表並對其進行分頁,以限制返回給客戶端的項目數量。
但是,如果實體帶有 PII 或其他一些信息,黑客將能夠抓取端點並獲取數據庫中所有實體的列表。 如果實體意外暴露敏感信息,這可能非常危險。 它還將導致黑客能夠查看您的網絡應用程序的使用統計信息並訪問電子郵件列表。
解決方案:為了防止分頁攻擊,應該能夠跟踪單個資源在特定時間段內可以由用戶或 API 密鑰訪問的項目數,而不是在請求級別。 通過測量單個用戶級別的 API 資源訪問,您將能夠在 API 密鑰或用戶達到“一小時內觸摸 10,000 個項目”之類的閾值後阻止他們。
2. 不安全的 API 密鑰生成
大多數 API 通常通過 JWT(JSON Web 令牌)或 API 密鑰進行保護。 這使您能夠保護您的 API,因為安全工具能夠識別異常行為,然後阻止對 API 密鑰的訪問。 但是,黑客仍然可以通過從用戶那裡獲取和利用大量 API 密鑰來超越這些方法,就像網絡黑客如何利用 IP 地址來阻礙 DDoS 保護一樣。
解決方案:保護這些攻擊的可靠方法是需要人工註冊服務,然後生成 API 密鑰。 另一方面,可以使用 2-Factor Authentication 和 Captcha 等元素保存機器人流量。
3.意外按鍵曝光
API 密鑰的使用方式使其容易遭受黑客攻擊和洩漏。
- API 被設計為無限期獲取,這增加了黑客獲取未過期 API 密鑰的機會。
- API 的用戶可以直接訪問 Web 應用程序的憑據,就像通過 CURL 或 Postman 調試它時一樣。 在此之後,開發人員在 Stack Overflow 或 GitHub Issues 等公共論壇中復制/粘貼帶有 API 密鑰的 CURL 命令只是一個意外。
- API 密鑰通常是不記名令牌,不需要任何識別信息。 API 無法利用 2 因素身份驗證或一次性使用令牌等元素。
解決方案:保護密鑰暴露的方法是使用兩個令牌代替一個。 在這裡,刷新令牌被存儲為環境變量,可用於生成短期訪問令牌。 與這些刷新令牌不同,開發人員可以使用可以訪問資源的短期令牌,但只能在有限的時間段內使用。
4. DDoS 攻擊
雖然 API 確實開啟了新的商業模式,客戶可以在其中以編程方式訪問 API 平台,但這使得 DDoS 保護具有挑戰性。 大多數 DDoS 保護都是為了在 DDoS 攻擊期間吸收和拒絕來自不良行為者的請求而設計的。 對於 API 產品,這變得更加困難,因為每個流量最終看起來都像機器人流量。
解決方案:此上下文中的 API 安全最佳實踐僅存在於 API 中。 對 Web 應用程序的每次訪問都需要 API 密鑰,因此當您遇到沒有 API 密鑰的請求時,您可以自動拒絕它。
5.錯誤的服務器安全
在維護良好的服務器衛生方面,API 與 Web 服務器沒有太大區別。 由於 SSL 證書配置錯誤或通過非 HTTPS 流量,數據很容易洩露。
對於現代 Web 應用程序,雖然沒有理由接受非 HTTPS 請求,但客戶可能會意外地從其 Web 應用程序或 CURL 發出非 HTTP 請求,從而暴露 API 密鑰。
解決方案: API 安全的最佳實踐表明您應該通過 SSL 測試工具測試 SSL 實現。 此外,您應該通過負載均衡器阻止非 HTTP。
6. 記錄不足
大多數全球洩露研究發現,識別數據洩露實例的時間段超過 200 天。 如果沒有針對 API 日誌記錄定義的 API 安全最佳實踐,黑客可以利用該漏洞製造更多漏洞。
解決方案:您應該確保您使用的 API 日誌記錄機制不僅可以跟踪 API 請求,還可以將其鏈接回用戶進行行為分析並存儲至少一年。 反過來,這些機制應該受到保護,以確保數據不會被刪除。
7、不辦理授權
雖然大多數 API 開發人員添加了全局身份驗證方法(如 OAuth 或 API 密鑰)來驗證用戶身份,但很難創建和保持授權與身份驗證不同。
由於授權特定於應用程序的邏輯,因此開發人員在測試 Web 應用程序時會忽略它。 現在,除非對象標識符有足夠的熵,否則黑客可以很容易地通過迭代測試不同的 id 並進入系統。
解決方案:確保您已通過身份驗證的用戶有權訪問生成 API 響應所需的資源。 這可能包括根據與圖片中的對象鏈接的訪問控制列表 (ACL) 檢查它。
以下是 Web 應用程序開發人員和企業家遇到的七種最常見的 API 安全風險及其解決方案。 但就像我們之前提到的,如果這個列表不明確,隨著您的 Web 應用程序變老和 API 功能的擴展,可能會出現更多漏洞。
在 Appinventiv,當我們構建 API 時,我們會在開發過程開始之前為 API 安全測試制定一個粗略的清單。 除此之外,我們使用最好的 API 管理工具來確保您的軟件具有長期的穩健性和安全性。
這是我們遵循的 API 安全清單。
Appinventiv API 安全最佳實踐清單
作為一家 Web 應用程序開發公司,我們的不同之處在於我們遵循安全第一的開發方法。 這意味著,每次我們在其中構建或合併 API 時,我們都在您的應用程序的安全性之上。 我們的 QA 專家團隊確保您的 Web 應用程序沒有任何漏洞並且是防黑客攻擊的。 他們確保這一點的一種方法是創建一個全面的 API 安全最佳實踐清單。
1. 發現漏洞
提高 API 安全性的主要方法是識別 API 生命週期中的不安全區域。 有必要通過將 API 視為具有自己的開發階段(如維護和功能到期)的軟件工件來跟踪它。
2. 使用 OAuth
API 安全風險的最大差距之一是訪問授權和身份驗證控制。 OAuth 是一種強大的控制方法。 在 Appinventiv,我們使用令牌驅動的授權框架來允許第三方服務可以在不顯示用戶憑據的情況下訪問哪些信息。
3.使用代幣
一般來說,使用令牌是最好的 API 安全最佳實踐之一。 開發人員可以利用分配給身份的令牌作為建立對受信任身份的受控訪問的有效方式。
4.數據加密
提高 API 安全性的可靠方法是使用傳輸層安全性 (TLS) 加密數據。 當我們在 API 上工作時,我們遵循一種做法,即我們的開發人員還需要簽名以確保僅通過授權用戶修改和解密數據。
5. 使用率節流和限制
隨著API 的流行度不斷提高,像 DDoS 攻擊這樣的黑客攻擊的可能性也在增加。 為了防止 DDoS 攻擊和 API 峰值(如影響安全性和性能的問題),我們的開發人員對 API 的調用方式和頻率設置了速率限制。 這種速率限制功能還可以限制連接,平衡數據訪問和數據可用性。
6.使用API網關
使用 API 網關是我們認為的關鍵 API 安全最佳實踐之一。 它充當 API 流量的執行點。 我們構建了一個網關,使企業能夠驗證流量、控制和監控 API 的使用方式。
7.使用服務網格
除了 API 網關,我們使用服務網格在 Web 應用程序中添加一層管理,因為服務網格將請求從一個服務路由到另一個服務。 它還優化了這些功能的協同工作方式,同時確保整合了適當的訪問控制、身份驗證和安全措施。
8. 零信任公式
在傳統的安全模型中,使用的公式是簡單的。 應該相信“內部”的東西,不應該相信“外部”的東西。 然而,網絡現在變得複雜,因此擁有零信任模型 (ZTM) 變得很重要,尤其是在遠程用戶使用該軟件的情況下。 通過 ZTM,安全重點從位置轉移到資源和用戶。
9. 驗證參數
驗證參數是我們 API 安全性的另一個最佳實踐。 它有助於確保傳入的數據不會造成任何傷害。 在該框架下,數據將根據報告允許輸入系統的嚴格模式進行驗證。
10. 建立威脅模型
我們減輕 API 安全風險的方法清單中的最後一個是威脅建模。 這是我們用於發現和評估風險的一種方法。 我們將其用作一種預防性方法,以受控方式評估、緩解和預防應用程序漏洞。
在這些 API 網關安全最佳實踐的背後,我們能夠構建一個強大、安全的系統,用戶可以完全放心地使用它。 結果? 我們擁有創建零黑客和安全漏洞實例的應用程序的記錄。
離別筆記
隨著企業繼續將其單體系統轉變為微服務,API 將繼續容易出現漏洞。 這使得必須遵循本機和雲 API 安全最佳實踐。
我們上面提到的列表雖然是一個很好的起點,但需要不斷升級。 對於企業家及其內部開發團隊來說,保持領先地位可能是一項挑戰,因為他們已經在多個截止日期之間進行了權衡。 這就是與一家擁有提供 100% 防黑客應用程序記錄的公司合作的地方。 像 Appinventiv 這樣的公司。
無論您的軟件多麼複雜,我們都可以通過我們廣泛的質量保證服務使其安全可靠。 立即與我們聯繫,開啟您產品安全的未來。