
了解 API 技術(shù):REST、GraphQL 和異步 API 的比較分析
因此,制定全面的 API 安全戰(zhàn)略至關(guān)重要。從身份驗(yàn)證到安全存儲(chǔ)和加密,安全最佳實(shí)踐可確保您的數(shù)據(jù)安全。
在這篇文章中,我們將解釋 API 安全的基本原理,包括針對(duì) API 的常見(jiàn)威脅以及防御這些威脅的最佳方法,這樣您就可以從這項(xiàng)技術(shù)中獲益,而不會(huì)受到其不利影響。
API 安全是保護(hù) API 免受網(wǎng)絡(luò)攻擊和濫用的做法。適當(dāng)?shù)膽?yīng)用程序接口安全措施可確保對(duì)API的所有處理請(qǐng)求均來(lái)自合法來(lái)源且有效。安全最佳實(shí)踐還可確保來(lái)自 API 的所有響應(yīng)都不會(huì)被攔截或利用。
API有助于在系統(tǒng)和外部用戶之間傳輸數(shù)據(jù)(通常是私人數(shù)據(jù))。因此,維護(hù)不善和不安全的 API 是通向敏感數(shù)據(jù)的一扇未上鎖的大門。使用最佳實(shí)踐(如使用VPN而不是殺毒軟件和真實(shí)API)來(lái)保護(hù)您的數(shù)據(jù)非常重要。
這對(duì)黑客來(lái)說(shuō)是個(gè)好消息,對(duì)您的客戶來(lái)說(shuō)是個(gè)巨大威脅。如果你覺(jué)得這是在危言聳聽(tīng),那么你要知道,數(shù)十億條記錄已因網(wǎng)絡(luò)攻擊而曝光,其中許多都是由于不安全的 API 造成的。
惡意行為者將目標(biāo)對(duì)準(zhǔn)了大小公司。API 黑客已經(jīng)影響到 Facebook、Venmo、Twitter 和美國(guó)郵政等企業(yè)。為了保護(hù)敏感數(shù)據(jù),您必須將 API 安全納入規(guī)劃和構(gòu)建流程。
雖然網(wǎng)絡(luò)安全是一個(gè)涵蓋所有在線技術(shù)的廣泛話題,但API卻帶來(lái)了獨(dú)特的挑戰(zhàn)。
API介于第三方開(kāi)發(fā)人員和公司資源之間。這些安全漏洞會(huì)對(duì)應(yīng)用程序和用戶造成危害,因?yàn)楸缓诳凸舻亩它c(diǎn)會(huì)直接訪問(wèn)敏感信息。
雖然財(cái)務(wù)影響可能很大,但對(duì)品牌的損害可能無(wú)法彌補(bǔ)。使用您的 API 肯定會(huì)失去客戶的信任和信譽(yù)。第三方集成應(yīng)用程序甚至可能因此受到損害。
在回顧加固 API 的最佳實(shí)踐之前,我們需要知道我們要面對(duì)的是什么。以下是您應(yīng)該了解的針對(duì) API 的最常見(jiàn)攻擊。
訪問(wèn)API的最簡(jiǎn)單方法之一就是劫持授權(quán)用戶的身份。例如,如果身份驗(yàn)證令牌落入不法分子之手,它可能會(huì)被用來(lái)訪問(wèn)具有惡意意圖的資源,同時(shí)看起來(lái)是合法的。
網(wǎng)絡(luò)犯罪分子會(huì)試圖猜測(cè)身份驗(yàn)證密碼或破解薄弱的身份驗(yàn)證程序,以獲取訪問(wèn)權(quán)限。
當(dāng)黑客截獲終端用戶與API之間的請(qǐng)求或響應(yīng)時(shí),就會(huì)發(fā)生中間人(MITM)攻擊。他們可能竊取通信內(nèi)容(如登錄憑證或支付信息)或修改請(qǐng)求/響應(yīng)內(nèi)容。
在身份驗(yàn)證和驗(yàn)證方面存在漏洞的 API 也容易受到代碼注入的攻擊,在這種情況下,攻擊者會(huì)通過(guò) API 請(qǐng)求向應(yīng)用程序的服務(wù)器發(fā)送腳本。這種腳本的目的是暴露或刪除數(shù)據(jù)、植入虛假信息和/或破壞應(yīng)用程序的內(nèi)部結(jié)構(gòu)。
您還會(huì)看到 “SQL 注入 ”一詞。這種代碼注入是在 SQL 數(shù)據(jù)庫(kù)中進(jìn)行的。
拒絕服務(wù)(DoS)攻擊會(huì)通過(guò) API 請(qǐng)求壓倒服務(wù)器資源,從而導(dǎo)致網(wǎng)絡(luò)服務(wù)器速度變慢、中斷或崩潰。這些攻擊通常由多個(gè)惡意源同時(shí)發(fā)起,即分布式拒絕服務(wù)(DDoS)攻擊。
盡管存在這些風(fēng)險(xiǎn),但 API 不會(huì)很快消失。幾乎所有尋求與他人集成的在線應(yīng)用程序都需要 API。
每一個(gè)新的API都為黑客提供了另一個(gè)利用個(gè)人數(shù)據(jù)的機(jī)會(huì)。因此,任何監(jiān)督軟件集成的人都應(yīng)該了解 API 安全措施。這些最佳實(shí)踐有助于保護(hù)敏感數(shù)據(jù)免受網(wǎng)絡(luò)攻擊和未經(jīng)授權(quán)的訪問(wèn)。
防止未經(jīng)授權(quán)訪問(wèn)的第一道防線是實(shí)施身份驗(yàn)證系統(tǒng),要求用戶在訪問(wèn)任何數(shù)據(jù)前提供有效憑證。授權(quán)也很重要,因?yàn)樗?guī)定了每個(gè)用戶訪問(wèn)特定信息的級(jí)別。
我們喜歡的是:身份驗(yàn)證和授權(quán)保護(hù)用戶免受未經(jīng)授權(quán)的訪問(wèn)。
最適合:所有涉及敏感數(shù)據(jù)或需要用戶身份驗(yàn)證的應(yīng)用程序。
專業(yè)建議:啟用雙因素身份驗(yàn)證 (2FA),提供額外的安全保障,確保只有獲得授權(quán)的人才能訪問(wèn)系統(tǒng)。
API與客戶端之間的所有通信都應(yīng)通過(guò) SSL 連接或 TLS 加密協(xié)議(如 HTTPS)來(lái)確保安全。這可確保通過(guò)網(wǎng)絡(luò)發(fā)送的所有數(shù)據(jù)都經(jīng)過(guò)加密,并防止第三方惡意攻擊。
我們喜歡的是:SSL/TLS加密為保護(hù)傳輸中的數(shù)據(jù)提供了一個(gè)額外的安全層。
最適合:任何通過(guò)網(wǎng)絡(luò)發(fā)送敏感數(shù)據(jù)或存儲(chǔ)用戶私人信息的應(yīng)用程序。
專業(yè)建議:確保您的網(wǎng)絡(luò)應(yīng)用程序使用最新、最安全的 HTTPS 版本,并啟用 TLS 1.3 協(xié)議,以最大限度地提高安全性。
為了防止惡意自動(dòng)攻擊,您應(yīng)該對(duì) API 調(diào)用實(shí)施速率限制。這將確保請(qǐng)求得到及時(shí)處理,而且不會(huì)有一個(gè)用戶同時(shí)向系統(tǒng)發(fā)出過(guò)多請(qǐng)求。
我們喜歡的是:速率限制可防止惡意自動(dòng)攻擊。
最適合:任何網(wǎng)絡(luò)應(yīng)用程序或API都會(huì)快速接收來(lái)自同一用戶的多個(gè)請(qǐng)求。
專業(yè)建議:根據(jù)系統(tǒng)需要設(shè)置費(fèi)率限制,并根據(jù)使用模式進(jìn)行調(diào)整。
跟蹤用戶訪問(wèn)的內(nèi)容以及他們使用這些信息所做的事情至關(guān)重要。確保記錄每個(gè) API 請(qǐng)求,并保留用戶活動(dòng)的審計(jì)日志,以確保數(shù)據(jù)安全和合規(guī)性。
我們喜歡的是:審計(jì)和日志記錄有助于跟蹤用戶活動(dòng),防止數(shù)據(jù)泄露或違規(guī)問(wèn)題。
最適合:任何存儲(chǔ)或傳輸機(jī)密信息或個(gè)人數(shù)據(jù)的系統(tǒng)。
專業(yè)建議:確保您制定了全面的審計(jì)和日志記錄政策,并確保定期審查和更新,以跟上最新的安全威脅。
如果可能,限制對(duì)銀行信息或健康記錄等敏感數(shù)據(jù)的訪問(wèn)。這可以通過(guò)授權(quán)策略或在數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸前對(duì)其進(jìn)行加密來(lái)實(shí)現(xiàn)。
我們喜歡的是:限制敏感數(shù)據(jù)的訪問(wèn)是防止?jié)撛跀?shù)據(jù)盜竊或?yàn)E用的好方法。
最適合:任何處理重要個(gè)人或財(cái)務(wù)信息的系統(tǒng)。
專業(yè)建議:評(píng)估不同的方法,如授權(quán)策略、加密、令牌化等,并使用最能滿足應(yīng)用需求的方法。
建立一個(gè)系統(tǒng)來(lái)監(jiān)控用戶行為,并在發(fā)現(xiàn)可疑活動(dòng)(如多次嘗試訪問(wèn)某個(gè)端點(diǎn)失敗)時(shí)發(fā)出警報(bào)。這將幫助你檢測(cè)和阻止惡意活動(dòng),避免其成為更大的問(wèn)題。
我們喜歡的是:建立一個(gè)系統(tǒng)來(lái)監(jiān)控用戶行為并對(duì)可疑活動(dòng)發(fā)出警報(bào),可以幫助您在惡意攻擊成為更大問(wèn)題之前發(fā)現(xiàn)并阻止它們。
最適合:任何需要驗(yàn)證或攜帶敏感數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用程序。
專業(yè)建議:使用自動(dòng)化工具定期掃描系統(tǒng),并對(duì)任何異常活動(dòng)設(shè)置警報(bào)。通過(guò)自動(dòng)化工具利用流行的漏洞掃描儀來(lái)增強(qiáng)系統(tǒng)安全性。
確保為您的 API 更新最新的安全補(bǔ)丁,以及可能發(fā)布的任何新功能或錯(cuò)誤修復(fù)。這有助于防止攻擊者利用任何已知漏洞。
我們喜歡的是:及時(shí)更新 API 可確保修補(bǔ)所有已知漏洞,這有助于防范潛在的攻擊者。
最適合:定期發(fā)布更新或漏洞修復(fù)的任何應(yīng)用程序。
專業(yè)建議:隨時(shí)關(guān)注最新的安全更新,并確保一有更新就立即應(yīng)用。
API 網(wǎng)關(guān)可以在客戶端和 API 之間充當(dāng) “守門員”,幫助保護(hù) API 免受惡意攻擊。它將過(guò)濾掉任何可疑請(qǐng)求,并在請(qǐng)求到達(dá)目的地之前將其阻止。
我們喜歡的是:API網(wǎng)關(guān)充當(dāng)客戶端和服務(wù)器之間的 “守門員”,在惡意攻擊到達(dá)目的地之前提供保護(hù)。
最適合:任何從外部接收大量請(qǐng)求的應(yīng)用程序。
專業(yè)建議:選擇具有高級(jí)過(guò)濾功能的 API 網(wǎng)關(guān),以最大限度地防范潛在威脅。
任何本地存儲(chǔ)的數(shù)據(jù)都應(yīng)加密,以防止未經(jīng)授權(quán)的訪問(wèn)。這包括可能拍攝的任何數(shù)據(jù)備份或快照。
我們喜歡的是:確保本地存儲(chǔ)的所有數(shù)據(jù)都經(jīng)過(guò)加密,防止未經(jīng)授權(quán)的個(gè)人或程序訪問(wèn)。
最適合:在本地?cái)?shù)據(jù)庫(kù)或備份中存儲(chǔ)敏感數(shù)據(jù)的任何應(yīng)用程序。
專業(yè)建議:確保在存儲(chǔ)機(jī)密信息時(shí)使用多層加密,以最大限度地提高數(shù)據(jù)安全性。
WAF是一款安全軟件,它位于您的API和互聯(lián)網(wǎng)之間,可以在惡意流量到達(dá)您的服務(wù)器之前將其過(guò)濾掉。它是防止 DDoS 攻擊和其他惡意活動(dòng)的好方法。
最適合:任何面向外部流量的網(wǎng)絡(luò)應(yīng)用程序或API,例如通過(guò)公共網(wǎng)站或移動(dòng)應(yīng)用程序暴露的網(wǎng)絡(luò)應(yīng)用程序或API。
專業(yè)建議:選擇一個(gè)可以根據(jù)您的特定需求輕松定制的 WAF,允許您根據(jù)系統(tǒng)內(nèi)不同的訪問(wèn)點(diǎn)或用戶角色設(shè)置不同的安全級(jí)別。然后,確保您的 WAF 定期更新,以確保應(yīng)用最新的安全補(bǔ)丁,從而保證數(shù)據(jù)和應(yīng)用程序的安全。
確保在整個(gè)應(yīng)用堆棧中實(shí)施上述所有最佳實(shí)踐,不僅僅是API層。這將會(huì)確保您所有數(shù)據(jù)的全面安全性 ,無(wú)論其在何處。
API 安全的第一步是確保您的 API 按預(yù)期運(yùn)行。這意味著通過(guò) API 客戶端提交常規(guī)請(qǐng)求,并確保它們符合上述原則。開(kāi)發(fā)能回答以下問(wèn)題的方案:
一旦確定您的 API 可以正常工作,您就需要在適當(dāng)?shù)臏y(cè)試環(huán)境中模擬針對(duì)系統(tǒng)的代碼注入、MITM、DoS 和密碼竊取攻擊。請(qǐng)?jiān)跍y(cè)試中注意以下幾點(diǎn):
以下是您可以進(jìn)行的一些具體測(cè)試。
注意:也許您沒(méi)有內(nèi)部員工來(lái)執(zhí)行這些測(cè)試。請(qǐng)尋找能夠提供這方面專業(yè)知識(shí)的顧問(wèn)提供幫助。
如果身份驗(yàn)證機(jī)制實(shí)施不當(dāng),攻擊者就會(huì)破壞身份驗(yàn)證令牌,或利用實(shí)施缺陷假冒其他用戶的身份,從而訪問(wèn)您的 API 端點(diǎn)。
若要測(cè)試身份驗(yàn)證機(jī)制,請(qǐng)嘗試在沒(méi)有正確身份驗(yàn)證的情況下發(fā)送API請(qǐng)求。查看API是否響應(yīng)正確的錯(cuò)誤和消息。嘗試使用無(wú)憑據(jù)和不正確的憑據(jù)進(jìn)行此測(cè)試。
要運(yùn)行參數(shù)篡改測(cè)試,在 API 請(qǐng)求中嘗試各種無(wú)效查詢參數(shù)的組合,看看它是否以正確的錯(cuò)誤代碼做出響應(yīng)。如果沒(méi)有,您的API可能存在一些必須解決的后臺(tái)驗(yàn)證錯(cuò)誤。
嘗試在 API 輸入中注入 SQL、NoSQL、LDAP、操作系統(tǒng)或其他命令。然后,看看你的 API 是否會(huì)執(zhí)行它們。這些命令應(yīng)該是無(wú)害的,比如重啟命令或 cat 命令。
大多數(shù) API 都有各種 HTTP 方法來(lái)檢索、存儲(chǔ)或刪除數(shù)據(jù)。有時(shí),網(wǎng)絡(luò)服務(wù)器會(huì)默認(rèn)訪問(wèn)不支持的 HTTP 方法,從而使您的 API 容易受到攻擊。
要測(cè)試此漏洞,請(qǐng)嘗試所有標(biāo)準(zhǔn) HTTP 方法(POST、GET、PUT、PATCH 和 DELETE)和一些不常用的方法。
例如,使用 HEAD 而不是 GET 發(fā)送 API 請(qǐng)求,或者使用 FOO 等任意方法發(fā)送請(qǐng)求。你應(yīng)該得到一個(gè)錯(cuò)誤代碼。如果得到的是 200 OK 響應(yīng),說(shuō)明你的 API 存在漏洞。
模糊測(cè)試應(yīng)該是 API 安全審計(jì)流程的最后步驟之一。這類測(cè)試會(huì)將 API 推向極限,以發(fā)現(xiàn)任何尚未暴露的安全問(wèn)題。
要做到這一點(diǎn),請(qǐng)發(fā)送大量隨機(jī)請(qǐng)求,包括 SQL 查詢、系統(tǒng)命令、任意數(shù)字和其他非文本字符。然后,看看你的API是否會(huì)出現(xiàn)錯(cuò)誤響應(yīng)、錯(cuò)誤處理這些輸入或崩潰。
這類測(cè)試將模擬溢出和 DDoS 攻擊。
API管理器或網(wǎng)關(guān)工具將處理或幫助處理上述API安全準(zhǔn)則(包括測(cè)試)。下面讓我們來(lái)詳細(xì)了解一下這些工具。
借助 API 管理平臺(tái),您可以在一個(gè)地方確保跨環(huán)境和供應(yīng)商的所有 API 和端點(diǎn)的安全。您還可以通過(guò)分配預(yù)先配置的安全認(rèn)證配置文件、創(chuàng)建和定制可用于保護(hù)所有 API 或單個(gè) API 安全的策略等方式,實(shí)現(xiàn) API 安全流程的自動(dòng)化。
可以說(shuō),API 管理平臺(tái)最重要的功能就是訪問(wèn)控制。它們應(yīng)防止未經(jīng)授權(quán)的用戶獲得對(duì) API 服務(wù)和數(shù)據(jù)的不當(dāng)訪問(wèn)權(quán)限。
為了執(zhí)行訪問(wèn)控制,大多數(shù)API管理平臺(tái)至少支持以下一種或全部三種類型的安全方案:
要了解一些能幫助您保護(hù) API 安全的流行 API 管理平臺(tái),請(qǐng)查看”What Is an API Gateway & How Does It Work? [+Best Service Providers].”
這篇文章的重點(diǎn)是 REST API,因?yàn)槟壳?REST API 約占 API 的 83%,但任何 API 都存在安全漏洞的風(fēng)險(xiǎn)。這就是為什么我們將討論REST API安全性和另一種常見(jiàn)的API類型SOAP的安全性之間的關(guān)鍵差異。
軟件開(kāi)發(fā)人員可以采用不同的架構(gòu)來(lái)構(gòu)建API 。最流行的是表示狀態(tài)傳輸(REST)和簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP)。
REST API 通過(guò)超文本傳輸協(xié)議(HTTP)傳輸數(shù)據(jù)。同時(shí),SOAP 將數(shù)據(jù)編碼為 XML(一種用于存儲(chǔ)和傳輸信息的通用標(biāo)記語(yǔ)言),并通過(guò) HTTP 發(fā)送。
SOAP的要求比RESTful設(shè)計(jì)更嚴(yán)格,這使得這種API類型的構(gòu)建更具挑戰(zhàn)性。不過(guò),與其他API設(shè)計(jì)相比,它往往更安全,更能保持?jǐn)?shù)據(jù)的完整性。
下面讓我們來(lái)分析一下他們的不同之處。
RESTful 協(xié)議支持 SSL 以保護(hù)傳輸?shù)臄?shù)據(jù),但缺乏內(nèi)置的安全功能,包括錯(cuò)誤處理。它也不支持網(wǎng)絡(luò)服務(wù)(WS)規(guī)范,因此無(wú)法使用網(wǎng)絡(luò)服務(wù)安全等安全擴(kuò)展來(lái)實(shí)現(xiàn)企業(yè)級(jí)安全。
這意味著 REST API 的安全性取決于 API 本身或 API 網(wǎng)關(guān)的設(shè)計(jì)。
與 RESTful 一樣,SOAP 協(xié)議也支持 SSL 以保護(hù)傳輸時(shí)的數(shù)據(jù),但它更進(jìn)一步。
它不僅包括 SAML 標(biāo)記、XML 加密和 XML 簽名(基于 W3C 和 OASIS 建議),這些有助于保護(hù) SOAP API 發(fā)送和接收數(shù)據(jù)的安全,而且還支持網(wǎng)絡(luò)服務(wù) (WS) 規(guī)范。
這樣,您就可以使用安全擴(kuò)展,如用于企業(yè)級(jí)安全的 Web Services Security 和提供內(nèi)置錯(cuò)誤處理功能的 WS-ReliableMessaging。
API 技術(shù)為在線應(yīng)用程序帶來(lái)了無(wú)數(shù)的可能性,但安全事故可能會(huì)讓您從 API 中獲得的任何好處迅速化為烏有。雖然不可能根除所有威脅,但上述原則對(duì)于任何關(guān)心其聲譽(yù),更重要的是關(guān)心其客戶的組織來(lái)說(shuō)都是必要的。
原文鏈接:https://blog.hubspot.com/website/api-security
了解 API 技術(shù):REST、GraphQL 和異步 API 的比較分析
2024年免費(fèi)的圖文識(shí)別API清單
十大 API 安全供應(yīng)商
關(guān)于 API 你應(yīng)該知道的一切
程序員必備:Python 調(diào)用 Instagram 標(biāo)題生成 API 指南
好用的AI營(yíng)銷API推薦
自然語(yǔ)言處理(NLP)在商業(yè)環(huán)境中的 16 種用途
什么是SQL注入?理解、風(fēng)險(xiǎn)與防范技巧
保護(hù)數(shù)據(jù)的 10 個(gè)基本 API 安全最佳實(shí)踐
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)