什麼是速率限制?| 速率限制與機器人

速率限制可封鎖過度使用或濫用 Web 資產的使用者、機器人或應用程式。速率限制可以阻止某些類型的機器人攻擊。

學習目標

閱讀本文後,您將能夠:

  • 瞭解速率限制的目的
  • 瞭解速率限制的運作原理
  • 瞭解速率限制的一些實際應用
  • 說明速率限制和其他類型的機器人管理之間的區別

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

什麼是速率限制?

道路旁邊限速標誌上的速率限制——每分鐘 75 次請求

速率限制是一種限制網路流量的策略。它限制了某人在特定時間範圍內重複一個動作的頻率——例如,嘗試登入帳戶。速率限制有助於阻止某些類型的惡意機器人活動。它還可以減輕網頁伺服器的壓力。但是,速率限制不是管理機器人活動的完整解決方案。

哪些類型的機器人攻擊可以透過速率限制來阻止?

速率限制通常用於阻止惡意機器人對網站或應用程式產生負面影響。速率限制可以協助緩解的機器人攻擊包括:

限速還可以防止 API 過度使用,雖然它不一定存在惡意或由於機器人活動引起,但是防止 API 濫用仍然很重要。

速率限制如何運作?

速率限制在應用程式內執行,而不是在 Web 伺服器本身上執行。通常,速率限制基於追蹤請求來源的 IP 位址,並追蹤每個請求之間經過的時間。IP 位址是應用程式識別發出請求的人員或對象的主要方式。

速率限制解決方案測量來自每個 IP 位址的每個請求之間的時間量,並測量指定時間範圍內的請求數。如果在給定的時間範圍內來自某個 IP 的請求過多,則速率限制解決方案將在一定時間內不會滿足該 IP 位址的請求。

從本質上講,速率受限的應用程式會對快速發出請求的唯一使用者說「嘿,慢點」。這相當於警察攔下超出道路限速的司機,或者父母告訴他們的孩子不要在這麼短的時間內吃那麼多糖果。

IP 位址是什麼?

IP 位址是指派給連接到網際網路的任何裝置的唯一數字(或在 IPv6 中為英數字元)識別碼。只要每個裝置處於在線狀態,它就會有自己的 IP 位址,就像實際街道地址或電話號碼一樣,這使裝置能夠來回傳送訊息。傳統 (IPv4) 位址如下所示:198.41.129.1

對於使用者裝置,IP 位址通常不是永久性的,因為在 IPv4 中沒有足夠的 IP 位址可供使用。使用者的網際網路服務提供者 (ISP) 將在裝置連接到網際網路時動態分配位址。

速率限制解決方案可以基於 IP 位址來確定哪些裝置發出了太多請求,應暫時封鎖。

如何對使用者登入進行速率限制?

如果使用者在短時間內太多次嘗試登入失敗,則可能會發現自己被鎖定在帳戶之外。當網站設定了登入速率限制時,就會發生這種情況。

此預防措施的存在不是為了讓忘記密碼的使用者感到沮喪,而是為了封鎖暴力攻擊。在進行暴力攻擊時,機器人將嘗試數千個不同的密碼以猜測正確的密碼並入侵帳戶。如果機器人每小時只能進行 3 或 4 次登入嘗試,那麼這種攻擊在統計上不太可能成功。

登入頁面上的速率限制可以根據嘗試登入的使用者的 IP 位址或使用者的使用者名稱而套用。理想情況下,它將使用兩者的組合,因為:

  • 如果僅按 IP 位址套用速率限制,則暴力攻擊者可以透過嘗試從多個 IP 位址登入(可能使用殭屍網路)來繞過這一點。
  • 如果僅透過使用者名稱進行速率限制,則任何擁有已知使用者名稱清單的攻擊者都可以使用這些使用者名稱嘗試各種常用密碼,並且很可能成功入侵至少幾個帳戶,所有這些登入嘗試都來自同一 IP 位址。

由於速率限制對於防止此類暴力攻擊是必要的,因此不記得其密碼的使用者可能會與惡意機器人一起受到速率限制。使用者可能會看到「登入嘗試次數過多」之類的訊息,並被提示在指定時間範圍之後重試,或者被告知他們完全被鎖定在帳戶之外。

如何對 API 進行速率限制?

API(應用程式程式設計介面)是一種從程式請求功能的方法。API 對大多數使用者是不可見的,但它們對於應用程式正常運作非常重要。例如,餐廳的網站可以依靠餐桌預訂服務的 API 使客戶能夠線上預訂。或者,電子商務平台可以整合運輸公司的 API,為使用者提供準確的運輸成本。

每次 API 回應請求時,該 API 的擁有者都必須為運算時間付費:程式碼執行和產生對該 API 請求的回應所需的伺服器資源。在上面的範例中,每當餐廳客戶進行預訂時,餐廳的 API 整合將導致餐桌預訂服務為運算時間付費。

因此,任何為開發人員提供 API 的應用程式或服務都會限制每個唯一使用者每小時或每天可以進行的 API 呼叫次數。這樣,第三方開發人員就不會過度使用 API。

速率限制還可以激勵開發人員為利用 API 支付更多費用:通常他們只能進行一定次數的 API 呼叫,只有支付更多才能繼續使用 API 服務。

對 API 的速率限制還有助於防止惡意機器人攻擊。攻擊者可以使用機器人對 API 進行多次重複呼叫,從而導致其他任何人都無法使用該服務,或使服務完全崩潰。這是一種 DoS 或 DDoS 攻擊。

X (Twitter) 和 Instagram 等社交媒體平台如何使用限速?

社交媒體平台限速通常只是 API 限速。例如,整合 X(前身為 Twitter)的任何第三方應用程式每小時只能重新整理一定次數來查看新貼文或訊息。Instagram 對第三方應用程式也有類似的限制。這就是為什麼使用者偶爾會看到「超出限速」訊息的原因。

機器人管理和速率限制有什麼區別?

速率限制是相當單一的:雖然有用,但它只能阻止非常特定類型的機器人活動。此外,速率限制不僅適用於機器人,還適用於限制一般用途。例如,Cloudflare Rate Limiting 可以防止 DDoS 攻擊、API 濫用和暴力攻擊,但它不一定能緩解其他形式的惡意機器人活動,也不能區分善意機器人和惡意機器人。

相比之下,機器人管理通常可以全面偵測機器人活動。例如,Cloudflare 機器人管理使用機器學習來識別可能的機器人,這使其能夠封鎖更廣泛的機器人攻擊(如憑證填充垃圾內容發佈、庫存囤積等)。小型組織還可以使用 Cloudflare Pro 和商業方案中提供的 Super Bot Fight Mode 來封鎖惡意機器人。