API安全淺析
Part 01、什么是API
關于API的定義,先來看看維基百科上對API的描述。
“An application programming interface(API)is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification. A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation.”
從這段描述中可以了解到,API是一個在應用程序開發過程中會被經常提及的東西,它的全稱是Application Programming Interface(應用程序接口)。API通過定義一組函數、協議、數據結構,明確應用程序中各個組件之間通信與數據交互方式。將Web應用、操作系統、數據庫以及計算機軟硬件的能力以接口的形式提供給外部使用,而無需訪問源碼,或理解內部工作機制的細節。
Part 02、常見API類型
在API的發展歷程中,根據其表現形式的不同,大致分為如下四種類型:
? 類庫型API
- 定義
類庫型API通常是一個類庫,它的使用依賴于特定的編程語言,開發者通過接口調用,訪問API的內置行為,從而處理所需要的信息。
- 舉例
應用程序調用微軟基礎類庫(MFC)
? 操作系統型API
-定義
操作系統型API通常是操作系統層對外部提供的接口,開發者通過接口調用,完成對操作系統行為的操作。
- 舉例
應用程序調用Windows API或Linux標準庫
? 遠程應用型API
- 定義
遠程應用型API是開發者通過標準協議的方式,將不同的技術結合在一起,不用關心所涉及的編程語言或平臺,來操縱遠程資源。
- 舉例
Java通過JDBC連接操作不同類型的數據庫
? Web應用型API
- 定義:
Web應用型API通常使用HTTP協議,在企業與企業、企業內部不同 的應用程序之間,通過Web開發過程中架構設計的方法,以一組服務的 形式對外提供調用接口,以滿足不同類型、不同服務消費者的需求。
- 舉例:
社交應用新浪微博的用戶登錄
在API技術的發展歷史中,業界習慣把前兩個階段的API稱為古典 API,后兩個階段的API稱為現代API。現代API是當前API技術的主要使用形式,以Web應用型API為主。基于現代API的服務對象不同、技術形式不同、使用者不同,可以對現代API做不同類型的劃分。
Part 03、API安全問題主要成因
近年來,越來越多的攻擊者開始將目標對準API,因為API被攻擊或者存在漏洞而出現的攻擊事件或數據泄露事件頻頻發生,例如:
- 2019年11月,Twitter出現過利用通訊錄匹配功能獲得百萬推特用戶賬號和手機號的數據泄露事件。
- 2020年3月,Facebook數據大規模泄露,包括用戶昵稱、郵箱、電話、家庭住宅等信息,涉及5億多用戶,
- 2020年4月,GitLab API問題導致私有項目的名稱空間泄露。
那么,導致API安全問題頻繁發生的原因是什么呢?
?? 企業API安全意識不足
人們通常假設程序會按照想象中的過程運行,從而導致API被攻擊的可能性以及影響被嚴重低估,因此不去采取充分的防護措施。此外,第三方合作伙伴系統的API,也容易被組織所忽視。
?? 技術革新導致API安全風險增加
隨著云計算技術的廣泛應用,越來越多的企業將應用和數據遷移至云端,并暴露核心業務能力和流程相關的API為外部合作伙伴提供服務,無形中使得API安全風險增大。且很多技術開發人員熱衷于采納新的、酷的技術,在技術路線上選擇新的特性,忽視API是否被攻擊,導致API安全風險更不可控。
?? API自身安全機制不足
API為企業提供便利的對外開放能力的同時,也為攻擊者提供了攻擊的通道。API自身的安全機制存在缺陷,比如缺少授權訪問控制或異常檢測手段、缺少對API資產的生命周期管理,這些在攻防對抗中容易成為突破口。
Part 04、OWASP API Top 10
隨著針對API的攻擊日益嚴重,OWASP組織推出了OWASP API Security TOP 10項目,對目前API最受關注的十大風險點進行了總結,以警示業界提高對API安全問題的關注。
Part 05、企業API安全建設
針對企業API安全建設,綜合了網上部分安全建議,以供大家參考:
- API資產管理
主動發現并構建API資產列表,清理僵尸/影子API。統計各個API的詳情,包括API的請求方法、參數特征、業務用途、發現時間、活躍時間等,多維度繪制API資產畫像,實現對API資產的統一管理。
- API攻擊防護
綜合利用智能規則匹配及智能攻擊檢測引擎,持續監控并分析流量行為,對安全攻擊進行實時防護。智能攻擊檢測引擎在用戶與應用程序交互的過程中收集數據,并利用統計模型來確定API請求/響應的異常。
- 敏感數據管控
識別API訪問中的敏感數據并分類分級管理,對傳輸中的敏感數據可以進行模糊化或者實時攔截,防止敏感數據泄露。
- 訪問行為管控
對API接口的訪問行為進行監控分析,通過多維度建立API訪問基線,及時發現批量注冊、撞庫、資源濫用等各類異常訪問行為,避免惡意訪問和接口濫用造成的業務損失。
Part 06、總結
如今API安全已經成為提供API服務的企業之間以及企業內部都需要關注的一個安全問題,一旦沒有很好的保護好提供服務的API,不僅會對用戶的使用體驗以及個人隱私帶來威脅和風險,而且可能會使企業面臨安全威脅和風險。隨著信息技術的快速發展,API安全防護也在持續演進過程中,企業要重點關注API安全的整個生命周期,加強系統化、自動化安全防護措施,向智能防護智能的方向演進。
?參考文獻
[1] API安全技術與實踐 錢君生 楊明 韋巍
[2] https://mp.weixin.qq.com/s/pZM1qUgct-Xi3Cagi8WzvA
[3] https://mp.weixin.qq.com/s/vJ4xJwOuSI9RXVD4TI6XZQ