レート制限パラメータ
利用可能なレート制限ルールのパラメータは、以下のセクションで説明されています。
- データ型:
String。 - API内のフィールド名:
expression(ルールフィールド)。
レート制限ルールがリクエストに一致するための基準を定義します。
- データ型:
Boolean。 - API内のフィールド名:
requests_to_origin(オプション、Cloudflareダッシュボードオプションの逆の意味)。
このパラメータが無効にされている場合(またはrequests_to_origin APIフィールドがtrueに設定されている場合)、オリジンに送信されるリクエスト(つまり、キャッシュされていないリクエスト)のみがリクエストレートを決定する際に考慮されます。
構成制限により、キャッシュされたアセットにもレート制限を適用パラメータを無効にできない場合があります。詳細については構成制限を参照してください。
- データ型:
Array<String>。 - API内のフィールド名:
characteristics。
Cloudflareがルールのリクエストレートを追跡する方法を定義するパラメータのセット。
以下の特性の1つ以上を使用します:
| ダッシュボード値 | API値 | ノート |
|---|---|---|
| N/A(暗黙的に含まれる) | cf.colo.id(必須) | 式で使用しない |
| IP | ip.src | NATサポート付きIPと互換性がない |
| NATサポート付きIP | cf.unique_visitor_id | IPと互換性がない |
| ヘッダー値の(ヘッダー名を入力) | http.request.headers["<header_name>"] | APIで小文字のヘッダー名を使用および欠落フィールドと空の値 |
| クッキー値の(クッキー名を入力) | http.request.cookies["<cookie_name>"] | クッキー値の使用時の推奨構成および欠落フィールドと空の値 |
| クエリ値の(パラメータ名を入力) | http.request.uri.args["<query_param_name>"] | 欠落フィールドと空の値 |
| ホスト | http.host | |
| パス | http.request.uri.path | |
| AS番号 | ip.geoip.asnum | |
| 国 | ip.geoip.country | |
| JA3フィンガープリント | cf.bot_management.ja3_hash | |
| JA4 | cf.bot_management.ja4 | |
| JSON文字列値の(キーを入力) | lookup_json_string(http.request.body.raw, "<key>") | 欠落フィールドと空の値およびlookup_json_string()関数リファレンス |
| JSON整数値の(キーを入力) | lookup_json_integer(http.request.body.raw, "<key>") | 欠落フィールドと空の値およびlookup_json_integer()関数リファレンス |
| フォーム入力値の(フィールド名を入力) | http.request.body.form["<input_field_name>"] | 欠落フィールドと空の値 |
| JWTクレームの(トークン構成ID、クレーム名を入力) | lookup_json_string(http.request.jwt.claims["<token_configuration_id>"][0], "<claim_name>") | 欠落フィールドと空の値およびJWT検証リファレンス |
| ボディ | http.request.body.raw | |
| ボディサイズ(演算子を選択、サイズを入力) | http.request.body.size | |
| カスタム(式を入力) | カスタム式を入力します。substring()やlower()などの関数を使用するか、より複雑な式を入力できます。 | 関数 |
利用可能な特性は、Cloudflareプランによって異なります。詳細については可用性を参照してください。
- データ型:
String。 - API内のフィールド名:
counting_expression(オプション)。
カスタムカウント式を使用を有効にした場合にのみ、Cloudflareダッシュボードで利用可能です。
リクエストレートを決定するために使用される基準を定義します。デフォルトでは、カウント式はルール一致式(受信リクエストが一致する場合で定義)と同じです。このデフォルトは、このフィールドを空の文字列("")に設定した場合にも適用されます。
カウント式にはHTTPレスポンスフィールドを含めることができます。カウント式にレスポンスフィールドが含まれている場合、レスポンスが送信された後にカウントが行われます。
構成制限により、カウント式にHTTPレスポンスフィールドを含めることができない場合があります。詳細については構成制限を参照してください。
- データ型:
Integer。 - API内のフィールド名:
requests_per_period。
ルールをトリガーする時間の期間におけるリクエストの数。
- データ型:
Integer。 - API内のフィールド名:
period。
リクエストレートを評価する際に考慮する時間の期間(秒単位)。利用可能な値はCloudflareプランによって異なります。
利用可能なAPI値は、10、60(1分)、120(2分)、300(5分)、600(10分)、または3600(1時間)です。
- データ型:
String。 - API内のフィールド名:
action(ルールフィールド)。
ルールで指定されたレートに達したときに実行するアクション。
APIで使用する値の1つを選択します: block、challenge、js_challenge、managed_challenge、またはlog。
_ブロック_アクションを選択した場合、次のパラメータを使用してカスタムレスポンスを定義できます:
- データ型:
String。 - API内のフィールド名:
response>content_type(オプション)。
レート制限によりリクエストをブロックする際のカスタムレスポンスのコンテンツタイプを定義します。これは、ルールアクションを_ブロック_に設定した場合にのみ利用可能です。
利用可能なAPI値: application/json、text/html、text/xml、またはtext/plain。
- データ型:
Integer。 - API内のフィールド名:
response>status_code(オプション)。
レート制限によりリクエストをブロックする際に訪問者に返されるHTTPステータスコードを定義します。これは、ルールアクションを_ブロック_に設定した場合にのみ利用可能です。
400から499の間の値を入力する必要があります。デフォルト値は429(リクエストが多すぎます)です。
- データ型:
String。 - API内のフィールド名:
response>content(オプション)。
レート制限によりリクエストがブロックされた際に返されるHTTPレスポンスのボディを定義します。これは、ルールアクションを_ブロック_に設定した場合にのみ利用可能です。
最大フィールドサイズは30 KBです。
- データ型:
Integer。 - API内のフィールド名:
mitigation_timeout。
レートに達した後、このフィールドで定義された期間(秒単位)にわたって、レート制限ルールはさらなるリクエストにルールアクションを適用します。
ダッシュボードでは、Cloudflareプランによって異なる利用可能な値の1つを選択します。利用可能なAPI値は、0、10、60(1分)、120(2分)、300(5分)、600(10分)、3600(1時間)、または86400(1日)です。
無料、プロ、ビジネスプランの顧客は、チャレンジアクションを使用する際に期間を選択できません。これらのアクションに対しては、レート制限ルールは常にリクエストスロットリングを実行します。リクエストスロットリングでは、期間を定義しません。訪問者がチャレンジを通過すると、対応するリクエストカウンターはゼロにリセットされます。同じルール特性の値を持つ訪問者がレート制限ルールを再度トリガーするのに十分なリクエストを行うと、新しいチャレンジが表示されます。
エンタープライズ顧客は、チャレンジアクションのいずれかを使用している場合でも、常に期間(または緩和タイムアウト)を設定できます。
- データ型:
Integer。 - API内のフィールド名:
mitigation_timeout。
選択したアクションの正確な動作を定義します。
アクションの動作は次のいずれかです:
-
選択した期間中にアクションを実行: 選択した期間中に受信したすべてのリクエストに対して構成されたアクションを適用します。この動作をAPI経由で構成するには、
mitigation_timeoutをゼロより大きい値に設定します。詳細については、For durationを参照してください。
-
最大構成レートを超えるリクエストを制限: 構成された制限を超える受信リクエストに対して選択したアクションを適用し、他のリクエストを許可します。この動作をAPI経由で構成するには、
mitigation_timeoutを0(ゼロ)に設定します。
NATサポート付きIPを使用して、同じIPアドレスを共有するNAT下のリクエストなどの状況を処理します。Cloudflareは、ユニークな訪問者を特定するために、セッションCookieの使用を含むさまざまなプライバシー保護技術を使用しています。詳細については、Cloudflare Cookiesを参照してください。
NATサポート付きIPとIPの両方を同じレート制限ルールの特性として使用することはできません。
cf.colo.id特性(データセンターID)をルール式のフィールドとして使用しないでください。さらに、cf.colo.idの値は予告なしに変更される可能性があります。このレート制限特性に関する詳細については、Cloudflareがリクエストレートを決定する方法を参照してください。
APIリクエストでHeader value of特性を使用する場合(http.request.headers["<header_name>"]を使用)、ヘッダー名は小文字で入力する必要があります。Cloudflareは、Cloudflareグローバルネットワーク上でヘッダー名を正規化します。
Header value of、Cookie value of、Query value of、JSON string value of、lookup_json_integer(...)、またはForm input value of特性を使用し、特定のヘッダー/クッキー/パラメーター/JSONキー/フォームフィールド名がリクエストに存在しない場合、レート制限ルールはリクエストに適用される可能性があります。これは、カウント式に依存します。
そのようなリクエストをフィルタリングしない場合、フィールドが存在しないリクエストのための特定のリクエストカウンターがあり、フィールドが空の値で存在するリクエストのリクエストカウンターとは異なります。
たとえば、特定のレート制限ルールのコンテキストで特定のHTTPヘッダーが存在するリクエストのみを考慮するには、ルールのカウント式を次のように調整します:
and len(http.request.headers["<header_name>"]) > 0
ここで、<header_name>はレート制限特性として使用される同じヘッダー名です。
Cookie value ofをレート制限ルールの特性として使用する場合、次の推奨事項に従ってください:
- クッキーの値が複数あるリクエストをブロックするカスタムルールを作成します。
- サーバーの負荷のかかる操作を実行する前に、オリジンでクッキーの値を検証します。
-
ルール式にIPリストが含まれている場合、キャッシュされたアセットにもレート制限を適用パラメーターを有効にする必要があります。
-
Increment counter whenパラメーターで定義されたルールカウント式には、HTTPレスポンスフィールドとIPリストの両方を含めることはできません。IPリストを使用する場合、キャッシュされたアセットにもレート制限を適用パラメーターを有効にする必要があります。