應用程式程式設計介面 (API) 的型別及其安全漏洞。
什麼是應用程式程式設計介面。
API 是 Application Programming Interface 的縮寫,API 是一組定義的規則,解釋了計算機或應用程式如何相互通訊。API 在應用程式和 Web 伺服器之間實現,充當中間層,處理系統之間的資料傳輸。
API 的型別
主要有四種類型的 API
開放 API− 開源應用程式程式設計介面,也稱為公共 API,由於它們是公開可用的,因此沒有訪問這些型別 API 的限制。
任何開發人員都可以訪問開放 API。
合作伙伴 API− 此 API 公開給特定人員。開發人員需要特定的許可權或許可證才能訪問此型別的 API,因為它們不是公開可用的。
只有授權的開發人員才能訪問合作伙伴 API。
內部 API− 也稱為私有 API,此型別的 API 將對外部使用者隱藏。內部 API 用於公司內部使用。許多組織在不同的內部團隊之間使用此型別的 API 來改進其產品和服務。
只有內部團隊才能訪問內部 API。
複合 API− 此型別的 API 用於組合不同的資料和服務 API。透過使用這些服務,開發人員可以在單個呼叫中訪問多個端點。其主要用途是加快執行過程並提高 Web 介面上終端使用者的效能。
複合 API 用於組合多個 API。
API 架構和協議的型別
我們有三種不同型別的 API。
REST(表述性狀態轉移)− REST 與其他 Web 服務不同,它不是協議,而是一套用於可擴充套件、輕量級和易於使用的 API 的指南。REST API 將遵循 REST 指南,並用於將資料從伺服器傳輸到請求使用者。
表述性狀態轉移是一組用於輕量級、可擴充套件 Web API 的指南。
SOAP(簡單物件訪問協議)− 它是一種用於跨網路傳輸資料的協議,可用於構建 API。SOAP 由全球資訊網聯盟 (W3C) 標準化,並使用 XML 編碼資料。
這使得 SOAP API 比 REST API 更安全,儘管這些指南使它們更依賴程式碼且更難以在休閒使用中實現。SOAP 用於需要高安全性的內部資料傳輸。
SOAP 是一種用於更安全 API 的更嚴格的協議。
RPC(遠端過程呼叫)− 用於兩臺計算機之間的通訊。如果在一臺機器上執行的服務請求另一臺機器的資料。這是一種 API,可幫助您呼叫任何遠端過程並獲取結果。
XML-RPC− 也稱為遠端過程呼叫中的可擴充套件標記語言。此協議使用特定的 XML 格式傳輸資料,並且比 SOAP 更舊更簡單。終端使用者透過向開發 XML-RPC 的伺服器傳送 HTTP 請求來執行 RPC,並接收 HTTP 作為響應。
JSON-RPC− 它與 XML-RPC 類似,因為它們的工作方式相同,只是此協議使用 JSON 格式而不是 XML 格式。
API 中的漏洞
漏洞− 漏洞是系統或裝置程式碼中的漏洞或錯誤。它被利用來損害儲存在系統中的資料的 CIA(機密性、完整性和可用性),透過未經授權的訪問導致拒絕服務或竊取資料。
OWASP 前 10 大 API 漏洞列表
物件級授權被破壞
物件級授權被破壞 (BOLA) 也稱為不安全的直接物件引用 (IDOR)。當伺服器沒有正確驗證當前授權使用者或未授權使用者是否正在訪問資料以讀取、更新或刪除他們沒有許可權的物件時,就會出現此問題。
使用者身份驗證被破壞
API 身份驗證的實現不當允許攻擊者預測其他使用者的身份。更籠統地說,使用者身份驗證被破壞發生在 API 具有身份驗證系統但不起作用,或者已實現的身份驗證系統在某些情況下失敗,從而允許攻擊者將自己偽裝成經過身份驗證的使用者。
過度的資料洩露
API 應僅限於向前端客戶端提供資料訪問許可權,但有時開發人員會犯錯誤或採取一些簡單的捷徑,並開發提供對客戶端所有資料的訪問許可權的 API。當這些 API 提供超出使用者需求的資料訪問許可權時,我們將其稱為過度資料洩露。
缺乏資源和速率限制
如果 API 未受到過量請求或有效負載大小的保護。攻擊者可能會利用此漏洞進行拒絕服務 (DoS) 和身份驗證缺陷,例如暴力破解攻擊。
功能級授權被破壞
如果 API 允許客戶端根據需要使用使用者級或管理員級 API。如果攻擊者找出“隱藏的”管理員 API 方法的管理員訪問許可權並直接訪問它們。
批次賦值
如果 API 從客戶端獲取資料並在沒有正確過濾白名單屬性或指南的情況下儲存它。攻擊者可能會嘗試預測物件屬性或在他們的請求中新增其他物件引數,以閱讀文件,或檢查 API 端點是否有線索,瞭解在哪裡查詢修改他們不應該影響後端儲存的資料物件的引數的開口。
安全配置錯誤
缺乏安全配置並向客戶端提供 API 伺服器的訪問許可權,這允許攻擊者利用漏洞獲取對伺服器的訪問許可權。
注入
攻擊者將能夠構建包含 SQL、NoSQL、LDAP、OS 或其他命令的 API 呼叫,API 請求及其背後的後端會盲目執行該 API 請求,從而導致注入。
資產管理不當
攻擊者發現 API 的未更新版本(例如,暫存、測試、測試版或早期版本)沒有像 API 的生產版本那樣得到很好的保護或保護,並且攻擊者利用這些版本發動攻擊。
日誌記錄和監控不足
缺乏對傳入伺服器的資料和網路流量以及日誌活動進行適當的監控,以及在未經授權的訪問或活動發生時發出警報,將為攻擊者開啟大門。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP