利用編程接口(API)一向是信息安然范疇的熱點(diǎn)會商話題,這是有啟事的:比來的一些高招名度網(wǎng)站安然泄漏變亂(包含Pinterest和Instagram)都觸及API。

在2014年1月,Snapchat數(shù)據(jù)泄漏變亂導(dǎo)致約460萬用戶受影響,而該變亂的本源就是不服安的API。當(dāng)然API其實(shí)不是直接報(bào)復(fù)打擊方針,但API承諾報(bào)復(fù)打擊者大年夜范圍匹配Snapchat用戶的手機(jī)號碼與用戶名。
在本文中,我們將切磋不服安的API若何故及為何會給企業(yè)及用戶構(gòu)成重大年夜風(fēng)險(xiǎn),并詮釋安然團(tuán)隊(duì)?wèi)?yīng)當(dāng)如何做來進(jìn)步人們的安然意識、呵護(hù)現(xiàn)有企業(yè)軟件中的API,和若何安然地利用API數(shù)據(jù)。
甚么是API?
API是指一組函數(shù)或例程,它們用于完成特定任務(wù)或供給簡單編制來與軟件組件進(jìn)行交互,凡是承諾主動化常見流程,例如與在其他機(jī)械上運(yùn)行的辦事器進(jìn)行交互。
API可所以一個(gè)庫,此中包含例程、數(shù)據(jù)布局、對象類和變量的規(guī)格,或只是透露給API利用者的長途調(diào)用的規(guī)格。一些API是基于國際尺度(例如可移植把持系統(tǒng)接口,POSIX),而另外一些則是以開源或供給商文檔情勢公之于眾。例如,微軟的Windows API閃開辟人員可以或許為Windows平臺成立軟件。
為了產(chǎn)生暗藏收人來歷和商業(yè)機(jī)緣,企業(yè)正在愈來愈多地經(jīng)由過程API來交付其營業(yè)利用法度和數(shù)據(jù)。別的,Web 2.0也鞭策了Web API利用量的激增,讓用戶與法度可以與在線利用法度背后的核心數(shù)據(jù)進(jìn)行交互。亞馬遜云計(jì)較辦事就是最好的例子,它利用API來讓用戶拜候其各類辦事,例如EC2。
經(jīng)由過程公開化API,企業(yè)可以進(jìn)步合作火伴連接性和云集成,并可以或許更好地向客戶供給辦事。同時(shí),第三方也能夠開辟利用法度,為用戶供給額外的功能,并幫忙進(jìn)步企業(yè)辦事和產(chǎn)品的馳名度和擺設(shè)率。
按照Layer 7 Technologies公司的最新研究顯示,超越43%的受訪者稱其企業(yè)今朝已擺設(shè)了API打算,而27%暗示,在將來一年內(nèi)將會推出如許的打算。Facebook平臺就是API獲得成功的一個(gè)很好的例子;Facebook供給的API閃開辟人員成立數(shù)百利用法度和辦事,拜候Facebook及其用戶的數(shù)據(jù),這無疑較著鞭策了Facebook的成長和成功。
Web API(例如來自Facebook的API)凡是是超文本傳輸和談要求動靜,返回布局化響應(yīng)動靜,最多見的是可擴(kuò)大標(biāo)識表記標(biāo)幟說話或JavaScript對象符號格局。這類API快速代替了基于簡單對象拜候和談的Web辦事和面向辦事的架構(gòu);因?yàn)樗鼈兏乳e擺設(shè),并且更合適成立一個(gè)開放架構(gòu),以在利用法度和用戶之間共享內(nèi)容和數(shù)據(jù)。
API安然標(biāo)題問題和若何避免它們
除諸多長處外,利用編程接口也存在安然標(biāo)題問題,正如比來的安然泄漏變亂所顯示的。安然標(biāo)題問題凡是不在于API背后的概念,而在于它的編碼編制。良多利用開辟人員在編寫或利用API時(shí)沒有考慮安然身分,使得利用和數(shù)據(jù)處于危險(xiǎn)當(dāng)中。當(dāng)觸及API時(shí),糟編寫的代碼很快就會變成危險(xiǎn)代碼。
所幸的是,企業(yè)及其開辟人員可以采納一些辦法來加強(qiáng)和確保API在企業(yè)環(huán)境的安然性。
在開辟過程(當(dāng)然是在發(fā)布利用之前)中,安然專家應(yīng)當(dāng)手動查抄API代碼,以測試它是不是可能被報(bào)復(fù)打擊者濫用或誤用。文檔記實(shí)也很關(guān)頭,清晰記實(shí)的代碼讓安然人員可以看到API應(yīng)當(dāng)和不該該做甚么,并讓整合API到利用的人體味若何準(zhǔn)確擺設(shè)API。
在文檔中,開辟人員應(yīng)當(dāng)明白若何調(diào)用API、哪些數(shù)據(jù)將被返回和以何種格局,還有可能呈現(xiàn)甚么弊端動靜。內(nèi)部記實(shí)還應(yīng)當(dāng)指明誰可以拜候API和哪些信息將被記實(shí)以肯定哪些資本出于審計(jì)目標(biāo)被誰在甚么時(shí)辰拜候。在拜候的話題上,在恰當(dāng)?shù)臅r(shí)辰,機(jī)械ID應(yīng)彌補(bǔ)身份驗(yàn)證查抄。并且,還應(yīng)當(dāng)查抄每個(gè)API調(diào)用以確保用戶或設(shè)備有準(zhǔn)確的權(quán)限來查看、編纂或刪除所需信息。但是,在用戶身份驗(yàn)證后,良多開辟人員凡是省往了二次拜候節(jié)制查抄。
對查抄API若何措置突發(fā)性輸進(jìn)和要求,黑盒測試和恍惚測試是關(guān)頭。一樣首要的是,經(jīng)由過程數(shù)據(jù)驗(yàn)證例程來避免尺度注進(jìn)縫隙和跨站要求捏造報(bào)復(fù)打擊,因?yàn)檎{(diào)用API可能來自不受信賴的來歷。別的,應(yīng)當(dāng)在所有類型的端點(diǎn)進(jìn)行測試,而不只是對web瀏覽器。經(jīng)由過程非瀏覽器利用(例如移動利用)拜候時(shí),良多API未能擺設(shè)SSL,所以必然要確保數(shù)據(jù)始終是加密狀況--當(dāng)沒有要求純文本格局時(shí)。滲入測試和縫隙評估也應(yīng)當(dāng)側(cè)重于API,因?yàn)樗鼈兪抢玫慕舆M(jìn)點(diǎn)。
試圖操縱第三方的API的企業(yè)必需確保其開辟人員完全部會若何安然地?cái)[設(shè)它們,并驗(yàn)證所有來自這些API的響應(yīng)。良多開辟人員(不管是來自第三方仍是內(nèi)部開辟人員)喜好反復(fù)利用互聯(lián)網(wǎng)發(fā)現(xiàn)的代碼,出格是觸及若何調(diào)用特定API時(shí)。但是,復(fù)制和粘貼代碼,而不查抄它是不是合適于特定內(nèi)容,這是API相干縫隙進(jìn)進(jìn)利用的常見環(huán)境。
企業(yè)必需記?。寒?dāng)然開辟速度可能很首要,但對細(xì)節(jié)的寄望也很首要。開辟人員必需細(xì)心瀏覽API文檔,永久不要依托于互聯(lián)網(wǎng)上的道聽途說。企業(yè)的開辟時(shí)候表應(yīng)當(dāng)給開辟人員足夠的時(shí)候來體味若何準(zhǔn)確地?cái)[設(shè)API,和體味API可能帶來的暗藏風(fēng)險(xiǎn)—出格是當(dāng)觸及共享用戶數(shù)據(jù)時(shí)。糟編寫或擺設(shè)的API可能引進(jìn)報(bào)復(fù)打擊向量,并增加了與奧秘性、完全性、可用性和可問責(zé)性的風(fēng)險(xiǎn),因?yàn)樗鼈兪瞧髽I(yè)資本的網(wǎng)關(guān)。并且,企業(yè)應(yīng)當(dāng)盡可能地避免沒有開放的豐碩文檔的API。假定加密密鑰被用作調(diào)用API的拜候和身份驗(yàn)證機(jī)制,它們必需按照政策安然地存儲,永久不要硬編碼到建設(shè)文件或其他腳本。
API的標(biāo)題問題不太可能會很快消掉;并且API正在成為現(xiàn)代開放企業(yè)的基石。鑒于其首要性,API應(yīng)當(dāng)獲得成立和利用API的人的更多正視。假定安然地?cái)[設(shè),API可讓企業(yè)充分操縱其本身和其他人的數(shù)據(jù),同時(shí)確保便當(dāng)性和安然性。假定擺設(shè)不當(dāng),API可能被報(bào)復(fù)打擊者操縱來報(bào)復(fù)打擊企業(yè)及其用戶。