網(wǎng)絡安全—如何預防常見的API漏洞

埃文科技
跟隨著互聯(lián)網(wǎng)的全面發(fā)展,API這一詞頻繁出現(xiàn)在大家的視線之中,什么是API呢?API全稱Application Programming Interface,翻譯出來叫做“應用程序接口”,是一些預先定義的接口(如函數(shù)、HTTP接口),或指軟件系統(tǒng)不同組成部分銜接的約定。用來提供應用程序與開發(fā)人員基于某軟件或硬件得以訪問的一組例程,而又無需訪問源碼,或理解內(nèi)部工作機制的細節(jié)。

跟隨著互聯(lián)網(wǎng)的全面發(fā)展,API這一詞頻繁出現(xiàn)在大家的視線之中,什么是API呢?API全稱Application Programming Interface,翻譯出來叫做“應用程序接口”,是一些預先定義的接口(如函數(shù)、HTTP接口),或指軟件系統(tǒng)不同組成部分銜接的約定。用來提供應用程序與開發(fā)人員基于某軟件或硬件得以訪問的一組例程,而又無需訪問源碼,或理解內(nèi)部工作機制的細節(jié)。

1.jpeg

如今,API已成為將當今APP經(jīng)濟的粘合劑,在Web 2.0的浪潮到來之前,開放的API甚至源代碼主要體現(xiàn)在桌面應用上,越來越多的Web應用面向開發(fā)者開放了API,同時也正在成為黑客攻擊的頭號目標。

API的運行方式與URL的運行方式大致相同,用戶使用Web搜索時,頁面展示結果是動態(tài)的,以手機銀行應用程序為例,API也以類似的方式運行,它可以獲取用戶的地理位置、姓名、賬號和賬戶余額,并相應地填充交互頁面中的字段,但因為API包括所有安全檢查,并且通常直接與后端服務通信,所以也更容易被攻擊者青睞。

2.jpeg

應用程序安全方面一直存在一個問題:輸入驗證。如果沒有適當?shù)墓δ芎桶踩珳y試,API可能會成為一個完美的攻擊點。因為API受應用程序信任,可以進行高速、海量數(shù)據(jù)交換。

通過對大量應用程序安全市場客戶的調(diào)查,并參考開放Web應用程序安全項目(OWASP)后,調(diào)查人員匯總了以下三類最常見的API漏洞:

第一:資產(chǎn)管理不當

此API缺陷是環(huán)境隔離和管理不足的結果,允許攻擊者訪問安全性不足的API端點,在之前的網(wǎng)絡安全事件中,就有由于開發(fā)人員API無需編輯即可訪問生產(chǎn)數(shù)據(jù),進而暴露了客戶的系統(tǒng),屬于此類別的漏洞還包括未監(jiān)控開發(fā)API中的敏感數(shù)據(jù),以及讓已棄用的API仍處于在線或公開狀態(tài)。

第二:受損的對象級別授權Broken Object Level Authorization(BOLA)

BOLA的通俗定義是對對象訪問請求的驗證不充分,它允許攻擊者通過重用訪問令牌來執(zhí)行未經(jīng)授權的操作。Peloton事件是最近諸多BOLA利用中比較有名的一個案例,攻擊者可以查看包括標有私人事件在內(nèi)的,幾乎所有用戶的個人資料。此類攻擊可能影響到從開發(fā)到運營,再到營銷和公共關系的每個業(yè)務組。

第三:無效的用戶身份驗證

此類漏洞的準確定義是“身份驗證機制中的實施缺陷”,允許攻擊者冒充合法用戶。這里關聯(lián)兩種常見的漏洞利用類型:第一個是由自動化機器人執(zhí)行的憑證填充。查找有用戶身份驗證缺陷的API是自動攻擊的理想目標。此漏洞的更復雜用途是進行偵察,以確定API的工作方式。例如我們輸入“a a.com/”密碼的用戶名/密碼組合,應用程序顯示“密碼無效”,那么攻擊者就會知道用戶名是有效的。攻擊者將使用此數(shù)據(jù)點來增加憑證填充(或其他類型的攻擊)成功的機會。

API缺陷影響整個企業(yè),而不僅僅是運維團隊、安全團隊或業(yè)務團隊,指指點點從來無法修復問題,修復始于協(xié)作,那么如何防止api接口被惡意調(diào)用或攻擊?

1.圖形驗證碼:

將圖形校驗碼和手機驗證碼進行綁定,在用戶輸入手機號碼以后,需要輸入圖形校驗碼成功后才可以觸發(fā)短信驗證,這樣能比較有效的防止惡意攻擊。目前大部分應用都是采用這種方式。

2.限定請求次數(shù):

在服務器端限定同一IP地址,同一設備,同時間范圍內(nèi)的接口請求次數(shù)。比如同一號碼重復發(fā)送的時間間隔,一般為60或120秒;設置每個IP每天最大的發(fā)送量;設置單個手機號每天的最大發(fā)送量。

3.流程條件限定:

將手機短信驗證放在最后進行,比如需要用戶必須注冊后,或者用不必須填寫了某些條件才能進行短信驗證。

4.歸屬地是否一致:

服務器端檢查用戶的IP所在地與手機號歸屬地是否匹配,如果不匹配則提示用戶手動操作等。

5.服務器接口驗證:

當用戶登錄成功后,返回一個由Token簽名生成的秘鑰信息(Token可使用base64編碼和md5加密,可以放在請求的Header中),然后對每次后續(xù)請求進行Token的封裝生成,服務器端在驗證是否一致來判斷請求是否通過。

(1)常規(guī)的方法:用戶登陸后生成token,返回客戶端,然后服務器使用AOP攔截controller方法,校驗token的有效性,每次token是一樣的;

(2)用戶登陸后生成臨時token,存到服務器,并返回客戶端,客戶端下次請求時把此token傳到服務器,驗證token是否有效,有效就登陸成功,并生成新的token返回給客戶端,讓客戶端在下一次請求的時候再傳回進行判斷,如此重復。這種方法有性能問題,但也有一個漏洞,如果用戶在一次請求后,還未進行下一次請求就已被黑客攔截到登錄信息并進行假冒登錄,他一樣可以登錄成功并使用戶強制下線,但這種方法已大大減少被假冒登錄的機會。

(3)兩層token:一般第一次用賬號密碼登錄服務器會返回兩個token,時效長短不一樣,短的時效過了之后,發(fā)送時效長的token重新獲取一個短時效,如果都過期,那么就需要重新登錄了。當然更復雜你還可以做三層token,按照業(yè)務分不同token。

6.采用https:

線上的api接口開啟https訪問,這樣做的話別人抓包的難度會提高很多,而且https需要秘鑰交換,可以在一定程度上鑒別是否為偽造的網(wǎng)絡非真人IP地址。

7.服務器端代理請求:

針對于網(wǎng)站,這也是解決跨域的方案之一,采用服務器代理可以有效的防止接口真實地址的暴露。

網(wǎng)絡安全舉足重要,近幾年API安全事件也層出不窮,所以,無論是企業(yè)用戶還是個人用戶,一定要了解API存在的漏洞以及相關的風險,便于最及時的做好安全防護!

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論