為什麼以及如何保護 API 端點?
Posted: Tue Dec 03, 2024 4:00 am
如何保護您的API安全?在數位經濟爆發的時代,大量數據透過API傳輸。商業、遊戲、教育、天氣、科學、藝術……凡是你能想到的,都在 API 上運作。對於一個如此嚴重依賴 API 的世界來說,令人驚訝的是,人們對安全性的重視卻很少。
對於開發者來說,預設框架就足夠了;或者更糟的是,當不使用框架時,他們認為自己遵循了安全實踐。對於系統管理員來說,他們所依賴的基礎設施或服務提供者提供的預設安全性 。在我看來,這不是最令人愉快的景象。
不用說,只有當真正可怕的事情發生時,我們才會意識到有很多利害關係。但首先,關於主要的事情。
內容 隱藏
1 為什麼要保護 API 端點?
2 保護 API 端點的最佳實踐
3 提高 API 安全性的工具
3.1 AppTrana
3.2 雲耀
3.3 不可侵犯
3.4 奧克塔
3.5 42緊縮
3.6 可能
3.7 API 安全
3.8 順序
4 結論
4.1 相關出版品:
為什麼要保護 API 端點?
這應該是顯而易見的,對吧?我們必須保護端點,因為業務依賴它。雖然這本身就是一個相當有力的論點,但我想稍微擴展一下這一點,並提請人們注意其他相關但同樣危險的後果。
生意損失
這是顯而易見的。如果有人成功破解 API 端點,阿爾巴尼亞電話號碼庫
整個業務就會陷入停滯。此外,從安全漏洞中恢復可能需要很長時間,從業務角度來看這無異於自殺。誠然,對於大多數公司來說,一兩個小時的停機時間不會產生任何影響,但對於某些公司來說,這是不可接受的。想像一下,如果貨幣兌換幾分鐘不起作用!
合規問題
沒有適當的 API 安全性可能會給您帶來嚴重的麻煩,這取決於您所處理的地理位置或行業。例如,如果您為銀行業(尤其是在歐盟)提供服務,那麼發現不安全的 API 將導致嚴重的法律問題和監管違規。如此之多甚至可能意味著您的生意結束。
聲譽損失
被駭客攻擊本身就已經夠痛苦的了,但如果這個消息成為大眾所知,就會對你的品牌形象造成不可挽回的傷害。例如,索尼曾遭受幾次非常嚴重的駭客攻擊,並且在某種程度上成為安全界的笑柄。即使沒有實際的數據或金錢損失,您也不應該試圖讓即將離開的客戶相信這一點。
基礎建設費用虛增
當您的 API 在基礎架構上運行時,它會消耗資源(主要是頻寬、CPU 和記憶體)。例如,如果 API 沒有得到適當的保護,並且攻擊者能夠與其交互,那麼他們可以迫使 API 執行大量無意義的工作(例如運行繁重的資料庫查詢),這可能會導致您的帳單因各種原因而上漲。
在啟用了自動資源擴展的平台(例如AWS)上,結果可能會令人震驚(題外話,但如果您發現自己在AWS 上遇到類似的情況,他們會了解情況並立即放棄虛高的賬單-至少在撰寫本文時)。
團隊士氣
您可能會認為做出這些妥協的團隊會因此而失去士氣。但這並不完全正確。這些危害可能是由基礎設施安全薄弱造成的,這會讓開發人員感到沮喪,反之亦然。如果這種情況經常發生,你最終會形成一種讓你後悔發展的文化。
參賽者的成績
我們假設發生了資訊洩露,但沒有真正的損失。然而,您的競爭對手將利用此事件來引起人們對其 API 的關注,並聲稱他們的 API 更加可靠(即使事實並非如此!)。再次祝福說服市場的你好運。一般來說,安全漏洞造成的後果不只是損失金錢。
API端點安全最佳實踐
幸運的是,有一些易於實施且易於理解的實踐可以應用於 API 端點來保護它們。以下是大多數安全專家的建議。

如果您的 API 端點允許 API 用戶透過http或其他不安全協定進行通信,那麼您將讓他們面臨巨大的風險。密碼、私鑰和信用卡資訊很容易被竊取,因為任何中間人攻擊或資料包嗅探工具都可以將它們讀取為純文字。因此,請始終將 https 作為唯一可用的選項。無論端點看起來多麼微不足道,透過 http 連線都不應該是可能的。TLS憑證的 成本並不高:您可以從SSL商店購買一個,只需 20 美元。
單向密碼雜湊
密碼不應以明文形式存儲,因為一旦發生安全漏洞,所有用戶帳戶都將受到損害。同時,應該避免對稱加密,因為任何足夠有創造力和持久的攻擊者都可以破解它。唯一可以提供的選項是用於儲存密碼的非對稱(或“單向”)加密演算法。在這種情況下,攻擊者、開發人員或公司係統管理員 都無法讀取客戶端密碼。
強認證
幾乎每個 API 都有自己的身份驗證形式,但在我看來,OAuth2 系統效果最好。與其他身份驗證方法不同,它將帳戶分離為資源,並且僅允許對身份驗證令牌的持有者進行有限的存取。同時,另一個非常好的做法是將令牌設定為每 24 小時過期一次,以便需要更新。這樣,即使你的 token 洩露了,24 小時的有效期也有可能減少駭客攻擊的影響。
強制限速
除非您有一個每分鐘有數百萬人使用的 API,否則最好對客戶端在特定時間內存取該 API 的次數設定限制。這樣做主要是為了防止機器人的出現,機器人每秒可以發送數百個並發請求,並導致您的 API 無緣無故地消耗系統資源。所有Web 開發框架都附帶限速中間件(如果您沒有,可以使用庫輕鬆添加),設定只需一分鐘左右。
輸入資料的驗證
這似乎是顯而易見的,但您會驚訝地發現有多少 API 系統出了問題。驗證輸入資料不僅意味著檢查傳入資料的格式是否正確,還要消除任何意外的可能性。一個簡單的例子是 SQL 注入,如果您允許查詢字串在很少或根本沒有檢查的情況下通過資料庫,它可能會破壞您的資料庫。另一個範例是檢查 POST 請求的大小並向客戶端傳回適當的錯誤代碼和訊息。嘗試接受和解析大得離譜的請求只會破壞 API。
提供 IP 位址過濾(如果適用)
如果您執行 B2B 服務且您的 API 被多個位置的企業使用,請考慮新增額外的安全層來限制可以存取您的 API 的IP 位址。對於每個新位置和新用戶端,需要驗證傳入請求的IP 位址。是的,這會在註冊過程中帶來額外的不便,但最終安全性將比其他方法高得多。
對於開發者來說,預設框架就足夠了;或者更糟的是,當不使用框架時,他們認為自己遵循了安全實踐。對於系統管理員來說,他們所依賴的基礎設施或服務提供者提供的預設安全性 。在我看來,這不是最令人愉快的景象。
不用說,只有當真正可怕的事情發生時,我們才會意識到有很多利害關係。但首先,關於主要的事情。
內容 隱藏
1 為什麼要保護 API 端點?
2 保護 API 端點的最佳實踐
3 提高 API 安全性的工具
3.1 AppTrana
3.2 雲耀
3.3 不可侵犯
3.4 奧克塔
3.5 42緊縮
3.6 可能
3.7 API 安全
3.8 順序
4 結論
4.1 相關出版品:
為什麼要保護 API 端點?
這應該是顯而易見的,對吧?我們必須保護端點,因為業務依賴它。雖然這本身就是一個相當有力的論點,但我想稍微擴展一下這一點,並提請人們注意其他相關但同樣危險的後果。
生意損失
這是顯而易見的。如果有人成功破解 API 端點,阿爾巴尼亞電話號碼庫
整個業務就會陷入停滯。此外,從安全漏洞中恢復可能需要很長時間,從業務角度來看這無異於自殺。誠然,對於大多數公司來說,一兩個小時的停機時間不會產生任何影響,但對於某些公司來說,這是不可接受的。想像一下,如果貨幣兌換幾分鐘不起作用!
合規問題
沒有適當的 API 安全性可能會給您帶來嚴重的麻煩,這取決於您所處理的地理位置或行業。例如,如果您為銀行業(尤其是在歐盟)提供服務,那麼發現不安全的 API 將導致嚴重的法律問題和監管違規。如此之多甚至可能意味著您的生意結束。
聲譽損失
被駭客攻擊本身就已經夠痛苦的了,但如果這個消息成為大眾所知,就會對你的品牌形象造成不可挽回的傷害。例如,索尼曾遭受幾次非常嚴重的駭客攻擊,並且在某種程度上成為安全界的笑柄。即使沒有實際的數據或金錢損失,您也不應該試圖讓即將離開的客戶相信這一點。
基礎建設費用虛增
當您的 API 在基礎架構上運行時,它會消耗資源(主要是頻寬、CPU 和記憶體)。例如,如果 API 沒有得到適當的保護,並且攻擊者能夠與其交互,那麼他們可以迫使 API 執行大量無意義的工作(例如運行繁重的資料庫查詢),這可能會導致您的帳單因各種原因而上漲。
在啟用了自動資源擴展的平台(例如AWS)上,結果可能會令人震驚(題外話,但如果您發現自己在AWS 上遇到類似的情況,他們會了解情況並立即放棄虛高的賬單-至少在撰寫本文時)。
團隊士氣
您可能會認為做出這些妥協的團隊會因此而失去士氣。但這並不完全正確。這些危害可能是由基礎設施安全薄弱造成的,這會讓開發人員感到沮喪,反之亦然。如果這種情況經常發生,你最終會形成一種讓你後悔發展的文化。
參賽者的成績
我們假設發生了資訊洩露,但沒有真正的損失。然而,您的競爭對手將利用此事件來引起人們對其 API 的關注,並聲稱他們的 API 更加可靠(即使事實並非如此!)。再次祝福說服市場的你好運。一般來說,安全漏洞造成的後果不只是損失金錢。
API端點安全最佳實踐
幸運的是,有一些易於實施且易於理解的實踐可以應用於 API 端點來保護它們。以下是大多數安全專家的建議。

如果您的 API 端點允許 API 用戶透過http或其他不安全協定進行通信,那麼您將讓他們面臨巨大的風險。密碼、私鑰和信用卡資訊很容易被竊取,因為任何中間人攻擊或資料包嗅探工具都可以將它們讀取為純文字。因此,請始終將 https 作為唯一可用的選項。無論端點看起來多麼微不足道,透過 http 連線都不應該是可能的。TLS憑證的 成本並不高:您可以從SSL商店購買一個,只需 20 美元。
單向密碼雜湊
密碼不應以明文形式存儲,因為一旦發生安全漏洞,所有用戶帳戶都將受到損害。同時,應該避免對稱加密,因為任何足夠有創造力和持久的攻擊者都可以破解它。唯一可以提供的選項是用於儲存密碼的非對稱(或“單向”)加密演算法。在這種情況下,攻擊者、開發人員或公司係統管理員 都無法讀取客戶端密碼。
強認證
幾乎每個 API 都有自己的身份驗證形式,但在我看來,OAuth2 系統效果最好。與其他身份驗證方法不同,它將帳戶分離為資源,並且僅允許對身份驗證令牌的持有者進行有限的存取。同時,另一個非常好的做法是將令牌設定為每 24 小時過期一次,以便需要更新。這樣,即使你的 token 洩露了,24 小時的有效期也有可能減少駭客攻擊的影響。
強制限速
除非您有一個每分鐘有數百萬人使用的 API,否則最好對客戶端在特定時間內存取該 API 的次數設定限制。這樣做主要是為了防止機器人的出現,機器人每秒可以發送數百個並發請求,並導致您的 API 無緣無故地消耗系統資源。所有Web 開發框架都附帶限速中間件(如果您沒有,可以使用庫輕鬆添加),設定只需一分鐘左右。
輸入資料的驗證
這似乎是顯而易見的,但您會驚訝地發現有多少 API 系統出了問題。驗證輸入資料不僅意味著檢查傳入資料的格式是否正確,還要消除任何意外的可能性。一個簡單的例子是 SQL 注入,如果您允許查詢字串在很少或根本沒有檢查的情況下通過資料庫,它可能會破壞您的資料庫。另一個範例是檢查 POST 請求的大小並向客戶端傳回適當的錯誤代碼和訊息。嘗試接受和解析大得離譜的請求只會破壞 API。
提供 IP 位址過濾(如果適用)
如果您執行 B2B 服務且您的 API 被多個位置的企業使用,請考慮新增額外的安全層來限制可以存取您的 API 的IP 位址。對於每個新位置和新用戶端,需要驗證傳入請求的IP 位址。是的,這會在註冊過程中帶來額外的不便,但最終安全性將比其他方法高得多。