呂蘊藉
應用程序接口(API)形成應用程序之間的橋梁,使程序能夠跨不同的代碼庫和硬件相互通信,但在居心不良的人的手中,API可能會造成潛在的巨大損害。
企業(yè)應盡快實施以下策略,來應對更嚴峻的API安全態(tài)勢。
為未來的用戶而不是現(xiàn)在的用戶構建
當API處于起步階段時,它們通常旨在滿足一小部分開發(fā)人員一起工作的需求。這些開發(fā)人員彼此認識,甚至可能共享一個辦公空間,并且可能覺得幾乎不需要實施身份驗證協(xié)議來確定他們的身份。他們?yōu)槭裁匆@樣做?不久之后,一個特別有用的API從團隊中脫穎而出,它進入了比最初預期更廣泛的用戶網絡中。適當?shù)陌踩胧撛诼┒闯鰜碇熬筒渴鸬轿唬皇窃诤芫弥蟆?/p>
限制用戶
說到未來的用戶,如果可能的話,可以為更多的用戶做計劃,但控制得更少。在嚴格需要了解的基礎上授權訪問,更多的用戶意味著更大的網絡攻擊面,尤其是在權限沒有明確和徹底定義的情況下。
限制數(shù)據(jù)
Equifax公司數(shù)據(jù)泄露事件讓人們感到擔憂,因為該公司保存了近1.5億美國人的私人財務信息。幸運的是,并非每家公司的商業(yè)模式都需要收集社會安全號碼、駕照、地址等信息。嚴格定制數(shù)據(jù)收集,以便只需要最必要的數(shù)據(jù),而未收集的數(shù)據(jù)也要受到保護。
加密數(shù)據(jù)
確保通信路徑使用適當?shù)募用軈f(xié)議,例如SSL或TLS。同樣,靜態(tài)數(shù)據(jù)也應該加密,這是顯而易見的,但由于帳戶和密碼以純文本形式存儲,因此經常發(fā)生數(shù)據(jù)泄露??梢?,僅加密是不夠的,它還必須被正確使用。某些協(xié)議(例如TLS)允許在服務器或客戶端禁用加密驗證,從而導致互聯(lián)網流量被攔截的潛在風險。企業(yè)需要確保API符合最新的安全最佳實踐,以確保通信安全可靠。
制定分頁限制
如果沒有適當?shù)腁PI分頁,服務器查詢可能會返回一個結果或大量的結果。后一種情況會迅速消耗系統(tǒng)資源并使應用程序停止。更糟糕的是,它不需要惡意行為者造成傷害———無辜的用戶可能會過于松散地構建查詢,并收到驚人的響應。幸運的是,分頁很容易實現(xiàn),最簡單的形式是偏移分頁,它為用戶提供了一個可以檢索的預定義記錄窗口。其他形式的分頁包括keyset和seek,它們各有優(yōu)缺點。
在SQL查詢中使用準備好的語句
SQL代碼注入是非常普遍的攻擊,使網絡攻擊者能夠冒充其他用戶、破壞數(shù)據(jù)庫或竊取數(shù)據(jù)。正如其名稱所暗示的那樣,網絡攻擊者將SQL代碼偷偷帶入數(shù)據(jù)庫查詢中,通常是利用正確配置的服務器應該過濾掉的轉義字符。準備好的語句通過使用只能存儲特定值而不是SQL片段的占位符來阻止攻擊者注入SQL代碼的能力。另一種防止SQL注入的方法是確保數(shù)據(jù)輸入符合預期,例如,電話號碼應該注冊為整數(shù)并且不包含字符串;名稱應包含字母,但不能包含數(shù)字。
加強最終用戶和應用程序認證
對于訪問應用程序的用戶,根據(jù)最新的安全最佳實踐實施例行密碼重置策略。對于與API交互的應用程序本身,為應用程序的每個版本使用唯一的憑據(jù),從而更容易根除過時的版本。
實施利率限制
當網絡攻擊者向服務器發(fā)送大量登錄憑據(jù)以通過純粹的機會成功匹配時,就會發(fā)生暴力攻擊?;舅俾氏拗瓶梢宰柚惯@些攻擊,方法是防止在合理的時間范圍內發(fā)生多個查詢。一個人能在一分鐘內輸入幾百次密碼嗎?可能不會。那么,為什么API要接受如此高的數(shù)字呢?
安全是管理風險的藝術,而不是消除風險。沒有堡壘是堅不可摧的,但網絡攻擊者往往會沿著阻力最小的路徑移動,并以安全標準差的受害者為目標。而企業(yè)需要提高API安全性,并避免成為網絡攻擊者的目標。