request-block プラグインは、URL やリクエストヘッダーなどの特性に基づいて HTTP リクエストをブロックするために使用されます。 request-block プラグインを使用すると、一部の Web サイトリソースを外部への露出から保護できます。このトピックでは、request-block プラグインを設定する方法について説明します。
プラグインの種類
セキュリティ保護プラグイン。
フィールド
名前 | データ型 | 必須 | デフォルト値 | 説明 |
block_urls | 文字列の配列 | いいえ( | - | ブロック対象のリクエストと照合するために使用される URL。 |
block_headers | 文字列の配列 | いいえ( | - | ブロック対象のリクエストと照合するために使用されるヘッダー。 |
block_bodys | 文字列の配列 | いいえ( | - | ブロック対象のリクエストと照合するために使用される本文。 |
blocked_code | 数値 | いいえ | 403 | リクエストがブロックされた場合に返される HTTP ステータスコード。 |
blocked_message | 文字列 | いいえ | - | リクエストがブロックされた場合に返される HTTP 応答本文。 |
case_sensitive | ブール値 | いいえ | true | リクエストと照合するために使用される条件で大文字と小文字を区別するかどうかを指定します。デフォルトでは、条件では大文字と小文字が区別されます。 |
設定例
URL に基づいてリクエストをブロックする
block_urls:
- swagger.html
- foo=bar
case_sensitive: false上記の構成に基づいて、次のリクエストがブロックされます。
curl http://example.com?foo=Bar
curl http://exmaple.com/Swagger.htmlリクエストヘッダーに基づいてリクエストをブロックする
block_headers:
- example-key
- example-value上記の構成に基づいて、次のリクエストがブロックされます。
curl http://example.com -H 'example-key: 123'
curl http://exmaple.com -H 'my-header: example-value'リクエスト本文に基づいてリクエストをブロックする
block_bodys:
- "hello world"
case_sensitive: false上記の構成に基づいて、次のリクエストがブロックされます。
curl http://example.com -d 'Hello World'
curl http://exmaple.com -d 'hello world'特定のルートまたはドメイン名のリクエストをブロックする
次のプラグイン構成を route-a ルートと route-b ルートに適用します。
block_bodys:
- "hello world"次のプラグイン構成を *.example.com ドメイン名と test.com ドメイン名に適用します。
block_urls:
- "swagger.html"
block_bodys:
- "hello world"route-aルートとroute-bルートは、ゲートウェイルートの作成時に指定されたルートです。クライアントリクエストがルートのいずれかと一致する場合、一致したルートに設定されているルールが有効になります。*.example.comドメイン名とtest.comドメイン名は、リクエスト内のドメイン名と照合するために使用されます。クライアントリクエストがドメイン名のいずれかと一致する場合、一致したドメイン名に設定されているルールが有効になります。設定したルールは順番に有効になります。最初のルールが一致すると、後続のルールは無視されます。
リクエスト本文サイズの制限
block_bodys が設定されている場合、本文が 32 MB 未満のリクエストのみが、本文に基づく照合に使用されます。リクエストの本文が 32 MB を超え、リクエストが block_urls および block_headers で指定されたルールを満たしていない場合、リクエストはブロックされません。
block_bodys が設定されていて、リクエスト本文がゲートウェイに設定されている DownstreamConnectionBufferLimits の値を超えている場合、エラーメッセージ 413 Payload Too Large が返されます。パラメーター設定ページで DownstreamConnectionBufferLimits の値を増やすことができます。 DownstreamConnectionBufferLimits の値を増やすと、ゲートウェイのメモリ使用量が大幅に増加します。この操作を実行する際は注意してください。