自1960年代結(jié)構(gòu)化編程出現(xiàn)以來,API一直是軟件開發(fā)的重要因素。API是一組函數(shù)或例行程序,其目的是完成特定任務(wù)或提供一種簡單方法來與軟件組件交互,這通常允許對通用流程進行自動化以更好地與在其他機器運行的服務(wù)交互。
現(xiàn)在,保護API變得越來越重要。雖然API已經(jīng)被使用了幾十年,而近年來Web 2.0和云計算的到來讓API的數(shù)量和使用都大幅增加,目前有超過14萬公共API。其中Facebook、谷歌、Twitter、eBay和Amazon提供的API可能是最著名的,還有很多其他企業(yè)也通過提供API來提供對其內(nèi)部數(shù)據(jù)的訪問。例如,Salesforce公司的客戶可以使用其API來整合Salesforce服務(wù)到他們的系統(tǒng),正如Facebook Platform API讓開發(fā)人員可以創(chuàng)建數(shù)千應(yīng)用和服務(wù)來訪問Facebook數(shù)據(jù)一樣。
API帶來的商業(yè)機會幾乎是不可抗拒的,但API提供商和API消費者需要確保API部署的安全性,讓攻擊者無法使用它們來攻擊企業(yè)或其用戶。根據(jù)云安全聯(lián)盟表示,不安全的API是云計算面臨的最大的威脅之一。
API安全風險的性質(zhì)
API提供了對應(yīng)用功能的訪問權(quán)限,這意味著它們增加了攻擊面,并且,攻擊者會盡全力濫用或?qū)ふ伊餍蠥PI代碼中的漏洞,因為它們可以被用來攻擊大量應(yīng)用和用戶。為了說明這一點,讓我們假設(shè)一個虛構(gòu)的公司:MashOurDataInc公司,該公司提供API以允許開發(fā)人員從其數(shù)據(jù)中心提取數(shù)據(jù)。攻擊者已經(jīng)成功地將惡意腳本注入到主要數(shù)據(jù)庫,如果MashOurDataInc公司的API代碼在響應(yīng)API請求發(fā)送數(shù)據(jù)之前沒有清洗數(shù)據(jù),那么,攻擊者的惡意腳本可能會發(fā)送到使用MashOurDataInc的API的任意應(yīng)用,這意味著成千上萬的用戶將受到影響。
保護API來降低風險
如果開發(fā)人員在構(gòu)建應(yīng)用或服務(wù)時通過API使用第三方數(shù)據(jù),那么,在代碼中使用這些API之前,開發(fā)人員必須完全明白它們的工作原理以及應(yīng)該如何調(diào)用它們,以免制造潛在的漏洞。這就是說,開發(fā)人員需要閱讀所有相關(guān)的API文檔,其中應(yīng)該包含保護API函數(shù)或例行程序的部分,例如如何調(diào)用API、需要怎樣的身份驗證、哪些數(shù)據(jù)將會返回以及以何種格式,可能出現(xiàn)哪些錯誤。
對正在使用的API構(gòu)建威脅模型可以幫助企業(yè)了解攻擊面,并確定潛在的安全問題,從而在一開始就可以構(gòu)建適當?shù)陌踩徑獯胧?。Firebug和Chrome Developer Tools等調(diào)試工具可以幫助確定和檢查API生成的數(shù)據(jù)流,并突出應(yīng)如何保護API。
如果應(yīng)用接收第三方傳輸?shù)臄?shù)據(jù),則不應(yīng)該認為這些數(shù)據(jù)已經(jīng)被清洗或正確驗證。開發(fā)人員必須構(gòu)建數(shù)據(jù)清洗和驗證例行程序以防止標準注入漏洞和跨站請求偽造攻擊,特別是對于傳輸JSON和XML消息或用戶生成的內(nèi)容的API,因為所有這些數(shù)據(jù)都來自不受信任來源。此外,在調(diào)用API之前,企業(yè)還需要驗證用戶或設(shè)備具有正確的權(quán)限來查看、編輯或刪除請求的數(shù)據(jù);很多開發(fā)人員在用戶經(jīng)過身份驗證后沒有進行二次訪問控制檢查。
企業(yè)開發(fā)API以允許他人來訪問其內(nèi)部數(shù)據(jù)系統(tǒng)時,應(yīng)該專注于構(gòu)建和測試控件來管理對API的訪問權(quán)限。這些控制應(yīng)該明確他人對不同類別的數(shù)據(jù)可以做什么以及不能做什么。此外,在允許查看、編輯或刪除數(shù)據(jù)前應(yīng)該進行二次訪問控制檢查。
企業(yè)還應(yīng)該記錄保護API的要求,這會讓企業(yè)更容易確保后續(xù)代碼更改仍然滿足針對個人或敏感信息的數(shù)據(jù)處理政策要求。同時,企業(yè)還需要記錄哪些信息應(yīng)該進行日志記錄以捕捉誰、什么以及何時在訪問API,以滿足審計要求。企業(yè)應(yīng)該分析這些日志記錄--最好通過安全信息和事件管理工具,從而檢測和阻止任何異常行為(例如暴力攻擊)。
API可以創(chuàng)造無數(shù)的機會來提高客戶服務(wù)和互動,并可幫助提高生產(chǎn)效率和利潤;它們甚至成為有些公司立足的產(chǎn)品或服務(wù)。然而,考慮到API帶來的潛在風險,企業(yè)應(yīng)該將風險緩解作為任何API集成戰(zhàn)略的核心。