根據(jù) IDE,可能會(huì)有擴(kuò)展程序幫助您編寫 OAS 規(guī)范。例如,VSCode 有多個(gè) OAS 規(guī)范 linter 擴(kuò)展,可以靜態(tài)標(biāo)記規(guī)范問(wèn)題,例如Spectral(開(kāi)源)和Postman (免費(fèi)和付費(fèi))。Spectral 擴(kuò)展甚至有一個(gè)OWASP Top 10 API 安全風(fēng)險(xiǎn)規(guī)則集。Panoptica?(免費(fèi)試用版和付費(fèi)版)可以從命令行運(yùn)行不同的OAS 規(guī)范 linter 。
AI 副駕駛現(xiàn)在非常流行,可用于開(kāi)發(fā) API 客戶端/服務(wù)器代碼。流行的 AI 副駕駛包括GitHub Copilot(付費(fèi)層)等。
請(qǐng)注意,并非所有 API 安全問(wèn)題都可以靜態(tài)檢測(cè)。許多問(wèn)題只能在動(dòng)態(tài)環(huán)境中檢測(cè)到,其中 API 調(diào)用實(shí)際上正在被執(zhí)行。
API 代碼完成后,就可以進(jìn)行單元測(cè)試了。
單元測(cè)試
開(kāi)發(fā)完成后,API 代碼將接受單元測(cè)試,其中會(huì)進(jìn)行“模擬”API 調(diào)用以驗(yàn)證 API 是否正常運(yùn)行。單元測(cè)試環(huán)境仍然是靜態(tài)的,因?yàn)楸M管可以調(diào)用客戶端和服務(wù)器函數(shù),但應(yīng)用程序并未作為一個(gè)整體運(yùn)行。
有許多工具可以自動(dòng)生成模擬 API 代碼并運(yùn)行模擬 API 服務(wù)器,包括WireMock(開(kāi)源)、Mockoon(開(kāi)源)、Microcks(開(kāi)源)、Postman(免費(fèi)和付費(fèi))、RestAssured(開(kāi)源)和SoapUI(開(kāi)源)。
高可用性和性能測(cè)試也可以在階段運(yùn)行。高可用性測(cè)試涉及驗(yàn)證應(yīng)用程序中是否存在單點(diǎn)故障。性能測(cè)試驗(yàn)證您的應(yīng)用程序是否能夠大規(guī)模執(zhí)行,其中包括大量 API 流量。
API 性能和負(fù)載測(cè)試的工具包括Locust(開(kāi)源)、SoapUI 和 Postman。
另一種在準(zhǔn)備階段很有用的工具是模糊測(cè)試器。模糊測(cè)試器將壞數(shù)據(jù)傳遞到應(yīng)用程序中的 API 端點(diǎn),并試圖對(duì)應(yīng)用程序產(chǎn)生負(fù)面影響(例如使其停止響應(yīng)、崩潰、泄露數(shù)據(jù)等)。模糊測(cè)試工具的示例包括RESTler(開(kāi)源)和 Panoptica。
在單元測(cè)試和 CI/CD 中,運(yùn)行嘗試在未經(jīng)授權(quán)的情況下訪問(wèn)應(yīng)用程序功能的模擬 API 流量。
在準(zhǔn)備和生產(chǎn)階段,運(yùn)行動(dòng)態(tài) API 安全工具來(lái)檢查 API 流量并標(biāo)記潛在的 BFLA 問(wèn)題。Panoptica 能夠?qū)W習(xí) BFLA 授權(quán)模型,然后檢測(cè)實(shí)時(shí)流量中的任何潛在違規(guī)行為。
在準(zhǔn)備和生產(chǎn)階段,運(yùn)行動(dòng)態(tài) API 安全工具,這些工具可以檢測(cè)實(shí)時(shí)流量中的影子 API,并為其重建OAS 規(guī)范,以便正確記錄它們。Panoptica 具有這些功能。
僵尸 API
OWASP 問(wèn)題 API9:2023(庫(kù)存管理不當(dāng))也包括僵尸 API。僵尸 API 是 OAS 規(guī)范中已棄用但仍在應(yīng)用程序中活動(dòng)的 API。它們出現(xiàn)在棕地和金絲雀生產(chǎn)環(huán)境中,這些環(huán)境中可能正在使用多個(gè) API 版本。 與影子 API 一樣,僵尸 API 不太可能隨您的應(yīng)用程序一起發(fā)展,并且從安全角度來(lái)看可能受到較少的審查,從而為您的應(yīng)用程序留下后門。
如何防止僵尸 API 穿過(guò) API 管道?
盡快刪除對(duì)僵尸(已棄用)API 的支持。
在準(zhǔn)備和生產(chǎn)過(guò)程中,運(yùn)行可以檢測(cè)實(shí)時(shí)流量中的僵尸 API 的動(dòng)態(tài) API 安全工具,例如 Panoptica。
弱第三方身份驗(yàn)證
即使您的應(yīng)用程序數(shù)據(jù)訪問(wèn)確實(shí)安全,薄弱的第三方身份驗(yàn)證仍可能使您的數(shù)據(jù)面臨威脅。第三方對(duì)您的數(shù)據(jù)的訪問(wèn)包括數(shù)據(jù)庫(kù)、S3 存儲(chǔ)桶等。薄弱的第三方身份驗(yàn)證包含在 OWASP 問(wèn)題 API8:2023(安全配置錯(cuò)誤)和 API10:2023(不安全的 API 使用)中。
如何防止 API 管道中出現(xiàn)弱第三方身份驗(yàn)證?
在開(kāi)發(fā)過(guò)程中,請(qǐng)保留應(yīng)用程序所使用的所有第三方 API 和服務(wù)的清單。
在準(zhǔn)備和生產(chǎn)階段,使用云安全掃描器檢測(cè)薄弱的第三方身份驗(yàn)證。云安全掃描工具的示例包括AWS Config(付費(fèi)服務(wù))、Azure Automation and Control(免費(fèi)和付費(fèi)層)、GCP Cloud Asset Inventory(免費(fèi))和CloudQuery(開(kāi)源和付費(fèi)層)。
資源消耗
無(wú)限制的資源消耗是 OWASP 問(wèn)題 API4:2023。如果應(yīng)用程序在短時(shí)間內(nèi)被大量 API 調(diào)用淹沒(méi),則可能會(huì)產(chǎn)生負(fù)面影響。例如,CPU、RAM 和存儲(chǔ)等應(yīng)用程序資源可能會(huì)被快速消耗或耗盡,從而導(dǎo)致運(yùn)營(yíng)成本增加、響應(yīng)時(shí)間變慢,甚至應(yīng)用程序故障和中斷。
如何防止 API 管道中不受限制的資源消耗?
在開(kāi)發(fā)過(guò)程中,為應(yīng)用程序的 API 處理添加速率限制,包括 API 請(qǐng)求的最大速率和合理的超時(shí)。
在準(zhǔn)備階段,使用超出允許的 API 請(qǐng)求速率的性能測(cè)試并驗(yàn)證應(yīng)用程序是否仍按預(yù)期運(yùn)行。
在準(zhǔn)備和生產(chǎn)中,在應(yīng)用程序前面使用API 網(wǎng)關(guān)來(lái)限制和限制 API 請(qǐng)求的速率。一些流行的 API 網(wǎng)關(guān)是AWS API 網(wǎng)關(guān)(免費(fèi)和付費(fèi))、GCP API 網(wǎng)關(guān)(免費(fèi)和付費(fèi))、Kong(開(kāi)源和付費(fèi))、Tyk(開(kāi)源)和Azure API Management(免費(fèi)和付費(fèi))。請(qǐng)注意,使用 API 網(wǎng)關(guān)時(shí),應(yīng)用程序仍然需要自己的速率限制功能。
OWASP 問(wèn)題 API6:2023(不受限制的敏感業(yè)務(wù)流訪問(wèn))與不受限制的資源消耗有關(guān),但它意味著自動(dòng)化、壞機(jī)器人或人工智能參與了 API 濫用,從而加劇了資源消耗。
在單元測(cè)試和 CI/CD 中,運(yùn)行嘗試注入無(wú)效數(shù)據(jù)的模擬 API 流量。
在 CI/CD 和暫存階段,針對(duì) API 端點(diǎn)運(yùn)行模糊測(cè)試器,將無(wú)效或格式錯(cuò)誤的數(shù)據(jù)發(fā)送到 API。Panoptica CLI 包含模糊測(cè)試功能。
在準(zhǔn)備和生產(chǎn)階段,運(yùn)行動(dòng)態(tài) API 安全工具,可以將 API 流量與 OAS 規(guī)范進(jìn)行比較并標(biāo)記數(shù)據(jù)差異(包括規(guī)范偏差)。Panoptica CNAPP 平臺(tái)具有此功能。
代碼注入
代碼注入是指將不良代碼添加到應(yīng)用程序中。隨著 IDE 插件和 AI 副駕駛越來(lái)越多地用于生成 API 客戶端和服務(wù)器代碼,存在將“壞”代碼注入應(yīng)用程序的風(fēng)險(xiǎn)。這可能會(huì)產(chǎn)生意想不到的甚至是惡意的副作用。例如,流氓(惡意)API 可能會(huì)注入您的應(yīng)用程序,從而創(chuàng)建后門訪問(wèn)。流氓 API 屬于 OWASP 問(wèn)題 API9:2023(庫(kù)存管理不當(dāng))。