0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是API?API接口表現形式分類理論

jf_vLt34KHi ? 來源:Tide安全團隊 ? 2023-05-10 15:25 ? 次閱讀

1.什么是API

API(Application Programming Interface,應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發(fā)人員基于某軟件或硬件的以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節(jié)。通過API,就算不知道如何操作,也能將產品或服務與其他產品或服務進行互通。這樣就可以簡化應用開發(fā),節(jié)省時間和成本。

API除了有應用“應用程序接口”的意思外,還特指 API的說明文檔,也稱為幫助文檔。 API作為應用編程接口,由應用程序來調用,提供API的稱為提供者,使用API的稱為消費者。API本質上是一個程序(程序1)中,專門用于與其他應用程序(程序2)進行交互的部分,也就是程序1的外部對接部門。程序員所編寫的程序2可以通過API程序的函數聲明來和程序1進行交互。API 由一個或多個方法組成,每個方法可以實現一個功能,比如發(fā)送消息,上傳文件,檢索消息等。 定義和作用看起來有些晦澀難懂,我們可以類比一個常見且熟悉的接口User Interface(縮寫為 UI)即用戶接口。UI本質上是一個系統中專門用于與人類使用者進行交互的部分。

UI可以是一個實物上的面板,也可以是由程序所驅動的顯示在屏幕上的界面。我們使用的應用一般有是圖形化界面的,都可以看作是一種用戶接口,比如按鈕,窗口,圖標等可視化組件。UI 定義了人與應用程序進行交互的方式。UI 由多個可視化組件構成,每個組件提供不同的交互方式,比如,在文本框中可以輸入一些消息,點擊按鈕可以發(fā)送消息等。 總之,API定義了應用程序與應用程序之間的交互,UI定義了人與應用程序之間的交互,并且兩種交互方式又相互關聯,用戶操作 UI 表達要實現的功能,而 UI 使用 API 來實際完成該功能。

e7220a1e-eda0-11ed-90ce-dac502259ad0.jpg

2.API的分類

(1)根據API提供者和消費者所在的位置,可將API分為兩類:本地API:當API的提供者和消費者位于同一臺計算機上時,稱為本地API。遠程API:當API的提供者和消費者位于不同的計算機上時,稱為遠程API。 (2)根據API接口表現形式分類:

接口 協議 說明
HTTP接口 HTTP 當發(fā)起Http請求時,Http會通過TCP建立起一個到服務器的連接通道,在請求需要的數據完畢后,Http會立即將TCP連接斷開,Http連接是一種短連接、無狀態(tài)的連接。
RPC接口 HTTP、TCP、UDP、自定義協議 RPC遠程過程調用協議,它本質上是一種Client/Server模式,就相當于調用本地接口一樣調用遠程服務的接口,支持多種數據傳輸方式,如Json、XML、Binary等。
WebService接口 SOAP協議通過XML封裝數據,Http協議傳輸數據 WebService是一個應用程序向外界暴露出一個能通過Web進行調用的API,也就是系統對外的接口,使用XML來封裝數據,不依賴于語言,不依賴于平臺。
RESTFUL HTTP RESTFUL一種設計準則,而不是一種規(guī)范,用不同的HTTP動詞(如:GET、POST、DELETE、PUT)來表達不同的請求,降低開發(fā)的復雜性,提高系統的可伸縮性。
WebSocket TCP、UDP WebSocket是一個持久化的雙向通信協議,可實現客戶端和服務器端之間即時通訊。在WebSocket中,客戶端和服務器只需要完成一次握手,就可以創(chuàng)建持久性的連接,并進行雙向數據傳輸。
FTP TCP/IP協議組中的協議之一 FTP是文件傳輸協議,FTP協議包括兩個組成部分,其一為FTP服務器(存儲文件),其二為FTP客戶端。

(3)根據API接口訪問形式分類:

訪問形式 說明 應用
使用用戶令牌,通過Web API接口進行數據訪問 可以有效識別用戶的身份,為用戶接口返回用戶相關的數據。 用戶信息維護、密碼修改、用戶管理等與用戶信息相關的數據
使用安全簽名進行數據提交 這種方式提交的數據,URL連接的簽名參數是經過安全一定規(guī)則的加密的,服務器收到數據后也經過同樣規(guī)則的安全加密,確認數據沒有被中途篡改后,再進行數據修改處理??梢詾椴煌尤敕绞?Web/APP/Winfrom等),指定不同的加密秘鑰,秘鑰是雙方約定的,并不在網絡連接上傳輸,連接傳輸的一般是這個接入的AppID,服務器通過這個AppID來進行簽名參數的加密對比,微信后臺的回調處理機制就類似于這種處理方式。 獲取令牌、用戶注冊、處理業(yè)務數據等
提供公開的接口調用,不需要傳入用戶令牌、或者對參數進行加密簽名 這種接口一般較少,只是提供一些很常規(guī)的數據顯示而已。 查詢系統版本、時間、天氣等數據

3.API安全

API安全基于多種安全規(guī)則的交叉,如下圖所示。

e73a80bc-eda0-11ed-90ce-dac502259ad0.jpg

API安全的目標(CIA):

安全目標用于定義安全對于保護資產的實際意義。安全沒有統一的定義,有些場景中的定義可能是沖突的。從系統正確運行時希望達到或保持的安全目標出發(fā),可以拆分安全目標。一些標準的安全目標幾乎適用于所有的系統,其中最著名的是“CIA三元組”: 機密性(Confientiality):確保信息只被預期的讀者訪問; 完整性(Integrity):防止未授權的創(chuàng)建,修改和刪除; 可用性(Availability):當用戶需要訪問API時,API總是可用的。 這三條原則始終很重要,在其他情景中,有一些原則和以上三條一樣重要。比如accountability/可追責(誰做了什么)或者non-repudiation/抗抵賴(不能否認做過的行為)等。

常見的API風險(STRIDE):

欺騙(Spoofing):偽裝成某人; 干預(Tampering):將不希望被修改的數據、消息或設置改掉; 否認(Repudiation):拒絕承認做過的事; 信息泄露(Information disclosure):將你希望保密的信息披露出來; 拒絕服務(Denial of service):阻止用戶訪問信息和服務; 越權(Elevation ofprivilege):做了你不希望他能做的事。

風險與安全機制的對應關系:

認證=>欺騙:確保你的用戶或客戶端真的是他(它)們自己 ; 授權=>信息泄漏/干預/越權:確保每個針對API的訪問都是經過授權的; 審計=>否認:確保所有的操作都被記錄,以便追溯和監(jiān)控; 流控=>拒絕服務:防止用戶請求淹沒你的API; 加密=>信息泄漏:確保出入API的數據是私密的。

4.API安全威脅

OWASP API 安全性十大威脅: 對象級別授權中斷:對于未使用適當級別的授權保護的 API 對象,可能會因為較弱的對象訪問標識符而容易發(fā)生數據泄漏和未經授權的數據操作。例如,攻擊者可以利用一個可迭代的整數對象標識符。

用戶身份驗證中斷:身份驗證機制的實現通常不正確或缺失,使得攻擊者可以利用實現缺陷來訪問數據。

過多的數據暴露:惡意行動者會試圖直接訪問 API(可能通過重播有效請求),或者嗅探服務器和 API 之間的流量。對 API 操作和可用數據的分析可能會為攻擊者生成敏感數據,而這些敏感數據并沒有展示在前端應用程序中,也沒有被前端應用程序使用。

缺少資源和速率限制:缺少速率限制可能會導致數據外泄或對后端服務的成功 DDoS 攻擊,進而導致所有使用者的服務中斷。

功能級別授權中斷:具有不同層次結構、組和角色的復雜訪問控制策略,以及管理功能和常規(guī)功能之間不明確的分離,都會導致授權缺陷。通過利用這些問題,攻擊者可以訪問其他用戶的資源或管理功能。

大量分配:如果一個 API 提供的字段超過了客戶端對給定操作的需求,攻擊者可能會注入過多的屬性來對數據執(zhí)行未經授權的操作。攻擊者可以通過檢查請求和響應或其他 API 的格式來發(fā)現未記錄的屬性,或進行猜測。如果你不使用強類型的編程語言,則此漏洞尤其適用。

安全配置錯誤:攻擊者可能會試圖利用安全配置錯誤漏洞,例如:缺少安全強化措施、啟用了不必要的功能、不必要地向 Internet 開放了網絡連接、使用了弱協議或密碼、可能允許未經授權地訪問系統的其他設置或終結點。

注入:接受用戶數據的任何終結點都可能會受到注入攻擊。示例包括但不限于:命令注入,其中惡意行動者試圖更改 API 請求以在托管 API 的操作系統上執(zhí)行命令;SQL 注入,其中惡意行動者試圖更改 API 請求以針對 API 依賴的數據庫執(zhí)行命令和查詢。

資產管理不當:與不當的資產管理相關的漏洞包括:缺少適當的 API 文檔或所有權信息、舊版 API 過多,可能缺少安全修補程序。

日志記錄和監(jiān)視不足:如果日志記錄和監(jiān)視不足,加上與事件響應的整合缺失或無效,攻擊者就能夠進一步攻擊系統、保持持久性、轉向更多系統進行篡改,以及提取或銷毀數據。大多數違反行為研究表明,檢測到違反行為的時間超過 200 天,通常是由外部方而不是通過內部流程或監(jiān)視方式檢測到的。

e76de0f6-eda0-11ed-90ce-dac502259ad0.png

5.API協議

SOAP:簡單對象訪問協議(Simple Object Access Protocol,SOAP),它是廣泛使用的最古老的以 Web 為中心的 API 協議。SOAP 于 1990 年代后期推出,是最早設計用于允許不同應用程序或服務使用網絡連接以系統方式共享資源的協議之一。SOAP 代表簡單對象訪問協議,是一種基于 XML 的消息傳遞與通信協議。必須創(chuàng)建 XML 文檔才能進行調用,而 SOAP 所需的 XML 格式并不完全直觀。這就會使得調用和調試變得困難,因為調試需要解析長字符串的復雜數據。另一方面,SOAP 依賴于標準協議,尤其是 HTTP 和 SMTP,并為 Web 服務提供數據傳輸。SOAP 的整個消息都是被寫在 XML 中的,因此它能夠獨立于各種語言在所有操作系統上都可用。

REST:表述性狀態(tài)傳遞(Representational State Transfer),由Roy Fielding在2000年的一篇論文中引入,其目標是解決SOAP的一些缺點。REST是基于 HTTP 協議的 Web 標準架構,REST相比于SOAP更靈活,因為它支持多種數據格式,而不需要 XML。遵循REST架構約束的Web API 被稱為RESTful API。對于開發(fā)人員來說,RESTful 架構是理解 API 功能和行為的最簡單工具之一。它不但能夠使得 API 架構易于維護和擴展,而且方便了內、外部開發(fā)人員去訪問 API。REST與SOAP又有著根本的區(qū)別,SOAP是一種協議,而REST是一種架構模式。這意味著RESTful Web API沒有官方標準。只要API 符合RESTful系統的6個導向性約束,就算作RESTful API:客戶端/服務器架構、無狀態(tài)、可緩存性、分層系統、統一接口、按需代碼(可選)。

JSON-RPC:JSON-RPC,是一個無狀態(tài)且輕量級的遠程過程調用(RPC)傳送協議,其傳遞內容透過 JSON 為主。相較于一般的 REST 透過網址(如 GET /user)調用遠程服務器,JSON-RPC 直接在內容中定義了欲調用的函數名稱(如 {"method": "getUser"}),這也令開發(fā)者不會陷于該使用 PUT 或者 PATCH 的問題之中。

gRPC:gRPC 是一個開源 API,也屬于 RPC 的范疇,是一個高性能,開源和通用的RPC框架,基于Protobuf序列化協議開發(fā),且支持眾多開發(fā)語言。面向服務端和協議端,基于http/2設計,帶來諸如雙向流,流控,頭部壓縮,單TCP連接上的多路復用請求等特性。這些特性使得其在移動設備上表現的更好,更省電和節(jié)省空間。在gPRC里客戶端可以向調用本地對象一樣直接調用另一臺不同機器上服務端應用的方法,使得您能夠更容易地創(chuàng)建分布式應用和服務。

編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1461

    瀏覽量

    61493
  • 編程接口
    +關注

    關注

    1

    文章

    36

    瀏覽量

    7971

原文標題:API安全基礎理論

文章出處:【微信號:Tide安全團隊,微信公眾號:Tide安全團隊】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    數據的表現形式與運算

    在定義變量時需要指定變量的類型。常量也是區(qū)分類型的。因為數據都是存放在內存中的單元中的,它 是具體存在的,而存儲單元是有限制大小字節(jié)的,每一個存儲單元存放數據的范圍是有限的。
    的頭像 發(fā)表于 10-12 11:45 ?1097次閱讀

    編程是一種思維方式,而代碼是一種表現形式,硬件只不過是對思維方式的物理體現

    編程是一種思維方式,而代碼是一種表現形式,硬件只不過是對思維方式的物理體現關于這句話,你怎么看?
    發(fā)表于 08-25 13:18

    電梯的干擾表現形式有哪幾種?

    電梯干擾產生的原理是什么?電梯的干擾表現形式有哪幾種?網線綁扎時注意事項有哪些?雙絞線布線施工注意事項有哪些?
    發(fā)表于 06-02 06:19

    can線問題具體表現形式

    目錄前言can線問題具體表現形式:軟件問題:1.速率2.管腳3.中斷回調總結前言經過一段時間的stm32的學習,個人總結了一些常見問題,這篇文章就主要寫一下在can線上遇到的問題。can線
    發(fā)表于 08-06 09:37

    安川變頻器在出現故障代碼時有哪幾種表現形式

    一、安川變頻器故障代碼表現形式安川變頻器在出現故障代碼時,一共有三種表現形式:1、故障檢出故障時,會出現以下狀況。LED 操作器上出現表示故障內容的文字,ALM 指示燈點亮。變頻器輸出被切斷,電機
    發(fā)表于 09-03 08:45

    什么是API/DS3D

    什么是API/DS3D API是編程接口的含義,其中包含著許多關于聲音定位與處理的指令與規(guī)范。它的性能將直接影響三維音效的表現
    發(fā)表于 02-05 09:48 ?547次閱讀

    API-Shop-OCR-營業(yè)執(zhí)照識別API接口Python調用示例代碼說明

    本文檔的主要內容詳細介紹的是API-Shop-OCR-營業(yè)執(zhí)照識別API接口Python調用示例代碼說明
    發(fā)表于 01-10 11:48 ?6次下載
    <b class='flag-5'>API</b>-Shop-OCR-營業(yè)執(zhí)照識別<b class='flag-5'>API</b><b class='flag-5'>接口</b>Python調用示例代碼說明

    短信API接口的應用

    短信API接口被廣泛應用于物流行業(yè),物流行業(yè)使用短信API接口一般都是在收單短信確認、到貨短信確認以及其他新信息,以便能夠讓賣家實時了解到物品的動態(tài)情況。
    發(fā)表于 05-12 17:22 ?1171次閱讀

    中國聯通張涌:5G將為電競帶來新的表現形式和產業(yè)空間

    8月24日,中國聯通中訊郵電咨詢設計院有限公司執(zhí)行董事、總經理張涌分享了對5G技術與電競結合的全新思考,他認為5G“大帶寬、低時延、多連接”的特點將對大眾的生活產生極大的影響,也將更大幅度地改變與通信技術相伴相生的電子競技產業(yè)。張涌相信,5G的到來將為電競帶來令人驚嘆的表現形式和產業(yè)空間。
    的頭像 發(fā)表于 08-25 10:30 ?2121次閱讀

    關于API接口相關知識 API的權限與安全問題

    API 寫出來后會被調用,但由于計算機 & 網絡系統的局限性,我們的 API 接口是不可以被無限制調用的。
    的頭像 發(fā)表于 10-06 12:56 ?1602次閱讀

    如何設計一個優(yōu)雅的API接口

    另一種是API接口提供方給出AK/SK兩個值,雙方約定用SK作為簽名中的密鑰。AK接口調用方作為header中的accessKey傳遞給API接口
    的頭像 發(fā)表于 12-20 14:23 ?1480次閱讀

    設計API接口的注意事項

    一般的API接口的邏輯都是同步處理的,請求完之后立刻返回結果。
    發(fā)表于 12-22 15:25 ?795次閱讀

    API+DevOps:華為云API Arts一體化平臺,端到端呵護您的API

    API+ | 以API-First理論為基礎,以API為核心構建數字化生態(tài) 摘要:華為云API Arts是
    的頭像 發(fā)表于 02-17 19:05 ?1029次閱讀

    api接口怎么使用

    本文就從API接口的維度,淺析API的概念以及為什么要了解它 一、API的概念 API,官方定義為應用程序編程
    的頭像 發(fā)表于 05-24 14:44 ?1315次閱讀

    api網關 kong 教程入門

    為什么使用API-Gateway 方便客戶端維護– 每個請求方不用管理多個api url,統一訪問api-gateway即可 接口重構時調用方不須了解
    的頭像 發(fā)表于 11-10 11:39 ?570次閱讀
    <b class='flag-5'>api</b>網關 kong 教程入門