Rate Limitingは、Webプロパティを過度に使用または悪用しているユーザー、ボット、またはアプリケーションをブロックします。Rate Limitingは、特定の種類のボット攻撃を阻止できます。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
Rate Limitingは、ネットワークトラフィックを制限するための戦略です。特定の時間枠内で誰かがアクションを繰り返すことができる頻度(たとえば、アカウントへのログイン試行)に上限を設けます。Rate Limitingは、特定の種類の悪意のあるボットの活動を阻止する助けになります。また、Webサーバーへの負担を軽減できます。しかし、Rate Limitingはボットの活動を管理するための完全なソリューションではありません。
Rate Limitingは、悪意のあるボットがWebサイトまたはアプリケーションに悪影響を及ぼすのを防ぐためによく使用されます。Rate Limitingが軽減に役立つボット攻撃には、次ようなものがあります。
Rate Limitingは、APIの過剰使用からも保護します。APIの使用は、必ずしも悪意のあるものではないか、ボットのアクティビティによるものではありませんが、それでも防止することは重要です。
Rate Limitingは、Webサーバー自体で実行されるのではなく、アプリケーション内で実行されます。通常、Rate Limitingは、リクエストの送信元であるIPアドレスの追跡と、各リクエスト間の経過時間の追跡に基づいています。IPアドレスは、アプリケーションが誰または何が要求を行っているかを識別する主な方法です。
Rate Limitingソリューションは、各IPアドレスからの各要求の間の時間を測定し、さらに指定された時間枠内の要求の数も測定します。指定された時間枠内に単一のIPからの要求が多すぎる場合、Rate Limitingソリューションは一定時間、当該IPアドレスの要求に応答しません。
基本的に、レート制限されたアプリケーションは、高速の要求を行っている一意のユーザーに「ねえ、ちょっとゆっくりして」と言います。これは、道路の速度制限を超えた運転手を停止させる警察官や、子供にそんなに短い時間にそんなにたくさんキャンディを食べないように言う親に匹敵します。
IPアドレスは、インターネットに接続するデバイスに割り当てられた一意の数字の(またはIPv6では英数字の)識別子です。すべてのデバイスは、オンラインである限り独自のIPアドレスを持ち、物理的な住所や電話番号のように、これによってデバイスはメッセージを送受信できます。従来の(IPv4)アドレスは次のような形式です:198.41.129.1
ユーザーデバイスの場合、IPアドレスは通常永続的ではありません。これはIPv4の場合利用者全員に十分なIPアドレスがないためです。代わりに、ユーザーのインターネットサービスプロバイダー(ISP)は、デバイスがインターネットに接続するときにアドレスを動的に割り当てます。
Rate Limitingソリューションは、どのデバイスが過度のリクエストを行っており、一時的にブロックする必要があるかを判断するためのベース根拠としてIPアドレスを使用する場合があります。
ユーザーは、短時間で何度もログインに失敗すると、アカウントからロックアウトされる場合があります。これは、WebサイトにログインRate Limitingが設定されている場合に発生します。
この予防措置は、自分のパスワードを忘れてしまったユーザーをイライラさせるためではなくブルートフォース攻撃をブロックするためのものです。ブルートフォース攻撃では、ボットが数千個のパスワードを試すことで正しいものを推測して、アカウントに侵入します。ボットが1時間に3回または4回しかログインできない場合、そのような攻撃は統計的に成功する可能性は低いです。
ログインページのRate Limitingは、ログインしようとしているユーザーのIPアドレスまたはユーザーのユーザー名に応じて適用できます。理想的には2つを組み合わせて使用するのがよく、その理由は以下の通りです。
これらのブルートフォース攻撃を防止するにはRate Limitingが必要であるため、パスワードを思い出せないユーザーは悪意のあるボットとともにRate Limitingの対象になる可能性があります。ユーザーには「ログイン試行が上限を超えた」というようなメッセージが表示され、指定された時間内に再試行するように求められるか、アカウントから完全にロックアウトされることを通知されます。
API、アプリケーションプログラミングインターフェイスは、プログラムから機能を要求する方法です。APIはほとんどのユーザーには見えませんが、アプリケーションが適切に機能するためには非常に重要です。たとえば、レストランのWebサイトは、顧客がオンラインで予約できるようにするためにテーブル予約サービスのAPIに依存します。また、eコマースプラットフォームは、運送会社のAPIを統合して、ユーザーに正確な送料を提供することができます。
APIがリクエストに応答するたびに、そのAPIの所有者は計算時間(コードの実行とそのAPIリクエストへの応答の生成に必要なサーバーリソース)に対して支払いを行う必要があります。上記の例では、レストランのAPI統合により、レストランの顧客が予約を行うたびにテーブル予約サービスが計算時間に対して支払いを行います。
このため、開発者にAPIを提供するアプリケーションまたはサービスには、一意のユーザーごとに1時間または1日に実行できるAPI呼び出しの数に制限があります。このようにして、サードパーティの開発者はAPIを使いすぎることはありません。
Rate Limitingは、開発者がAPIを活用することに対して高い対価を支払いうことを動機付けることもできます。多くの場合、開発者が、APIサービスに対しての支払いを追加することなく利用できるAPIの呼び出しは限られています。
APIのRate Limitingは、悪意のあるボット攻撃からの保護にも役立ちます。攻撃者はボットを使用してAPIを何度も繰り返し呼び出すことにより、他のユーザーがサービスを利用できないようにしたり、サービスを完全にクラッシュさせたりすることがあります。これは、DoSまたはDDoS攻撃の一種です。
ソーシャルメディアプラットフォームのRate Limitingは、多くの場合API Rate Limitingと同様です。たとえば、X(旧Twitter)を統合するサードパーティアプリケーションは、1時間に一定の回数だけ、新しい投稿やメッセージを検索するために更新することができます。Instagramには、サードパーティのアプリに対して同様の制限があります。これが、ユーザーが「Rate Limitingを超過しました」というメッセージを受け取ることがある理由です。
Rate Limitingは1次元的です。有用ではありますが、非常に限られた種類のボットアクティビティのみを阻止できます。さらに、Rate Limitingはボットだけでなく、一般的な使用制限にも使用されます。例えば、Cloudflare Rate Limitingは、DDoS攻撃、APIの乱用、およびブルートフォース攻撃から保護しますが、それは必ずしもその他の悪意のあるボットの活動を軽減せず、そして正当なボットと悪意のあるボットを区別しません。
対照的に、ボット管理は一般的にボットの活動全般を総合的に検出することができます。例えば、Cloudflare Bot Managementは機械学習を用いてボットの可能性が高いものを特定し、それによってより幅広いボット攻撃(クレデンシャルスタッフィング、スパム投稿、買い占め等)をブロックすることができます。小規模な組織は、Cloudflare ProおよびBusinessプランで利用できるSuper Bot Fight Modeを使用して悪意のあるボットをブロックすることもできます。