應用程序接口(API)形成應用程序之間的橋梁,使程序能夠跨不同的代碼庫和硬件相互通信。但在居心不良的人的手中,API可能會造成潛在的巨大損害。
企業應用程序形成了越來越大的網絡攻擊面,但真正漏洞所在的往往是API。雖然可以通過標準防火墻和SIEM工具檢測和阻止許多攻擊,但通過API進行的攻擊更加隱蔽,因為它們通常利用API已經允許的訪問權限。這些漏洞遠遠超出了企業領域,甚至可能影響個人車輛。不安全的API無處不在,甚至被用來攻擊特斯拉的電動汽車。
以下是如何通過實施以下策略來采用更嚴格的API安全態勢。
1.為未來的用戶而不是現在的用戶構建
當API處于起步階段時,它們通常旨在滿足一小部分開發人員一起工作的需求。這些開發人員彼此認識,甚至可能共享一個辦公空間,并且可能覺得幾乎不需要實施身份驗證協議來確定每個人都是他們聲稱的身份。他們為什么要這樣做?不久之后,一個特別有用的API從團隊中脫穎而出,它進入了比最初預期的更廣泛的用戶網絡中。適當的安全措施應該在漏洞出來之前就部署到位,而不是在很久之后。
2.限制用戶
說到未來的用戶,如果可能的話,為更多的用戶做計劃,但控制得更少。在嚴格需要了解的基礎上授權訪問。更多的用戶意味著更大的網絡攻擊面,尤其是在權限沒有明確和徹底定義的情況下。
3.限制數據
Equifax公司數據泄露事件讓人們感到擔憂,因為該公司保存了近1.5億美國人的私人財務信息。幸運的是,并非每家公司的商業模式都需要收集社會安全號碼、駕照、地址等信息。嚴格定制數據收集,以便只需要最必要的數據。而未收集的數據也要受到保護。
4.加密數據
確保通信路徑使用適當的加密協議,例如SSL或TLS。同樣,靜態數據也應該加密。這似乎是顯而易見的建議,但由于帳戶和密碼以純文本形式存儲,因此經常發生數據泄露。僅僅擁有加密是不夠的,它還必須正確使用。某些協議(例如TLS)允許在服務器或客戶端禁用加密驗證,從而導致互聯網流量被攔截的潛在風險。企業確保API符合最新的安全最佳實踐,以確保通信安全可靠。
5.制定分頁限制
如果沒有適當的API分頁,服務器查詢可能會返回一個結果或大量的結果。后一種情況會迅速消耗系統資源并使應用程序停止。更糟糕的是,它不需要惡意行為者造成傷害 無辜的用戶可能會過于松散地構建查詢,并收到驚人的響應。幸運的是,分頁很容易實現。最簡單的形式是偏移分頁,它為用戶提供了一個他們可以檢索的預定義記錄窗口。其他形式的分頁包括keyset和seek,它們各有優缺點。
6.在SQL查詢中使用準備好的語句
SQL代碼注入是非常普遍的攻擊,使網絡攻擊者能夠冒充其他用戶、破壞數據庫或竊取數據。正如其名稱所暗示的那樣,網絡攻擊者將SQL代碼偷偷帶入數據庫查詢中,通常是通過濫用正確配置的服務器應該過濾掉的轉義字符。準備好的語句通過使用只能存儲特定值而不是SQL片段的占位符來阻止攻擊者注入SQL代碼的能力。另一種防止SQL注入的方法是確保數據輸入符合預期。例如,電話號碼應該注冊為整數并且不包含字符串。名稱應包含字母,但不能包含數字。
7.加強最終用戶和應用程序認證
對于訪問應用程序的用戶,根據最新的安全最佳實踐實施例行密碼重置策略。對于與API交互的應用程序本身,為應用程序的每個版本使用唯一的憑據,從而更容易根除過時的版本。
8.實施利率限制
當網絡攻擊者向服務器發送大量登錄憑據以通過純粹的機會成功匹配時,就會發生暴力攻擊。基本速率限制可以阻止這些攻擊,方法是防止在合理的時間范圍內發生多個查詢。一個人能在一分鐘內輸入幾百次密碼嗎?可能不會。那么,為什么API會接受如此高的數字呢?
管理風險
安全是管理風險的藝術,而不是消除風險。沒有堡壘是堅不可摧的,但網絡攻擊者往往會沿著阻力最小的路徑移動,并以安全標準差的受害者為目標。而企業需要降低API安全性,并避免成為網絡攻擊者的目標。
編輯:Harris