検索

17.8. フィルターの設定

download PDF

フィルターはリクエストの一部の変更を可能にし、述語を使用してフィルターの実行時を制御できます。フィルターの一般的なユースケースには、ヘッダーの設定や GZIP 圧縮などがあります。

注記

フィルターの機能は、JBoss EAP 6 で使用されたグローバルバルブと同等です。

以下のタイプのフィルターを定義できます。

  • custom-filter
  • error-page
  • expression-filter
  • gzip
  • mod-cluster
  • request-limit
  • response-header
  • rewrite

以下の例は、管理 CLI を使用してフィルターを設定する方法を示しています。管理コンソールを使用してフィルターを設定する場合は、Configuration Subsystems Web (Undertow) Filters と選択します。

既存のフィルターの更新

既存のフィルターを更新するには、以下を指定します。

/subsystem=undertow/configuration=filter/response-header=myHeader:write-attribute(name=header-value,value="JBoss-EAP")
reload

新規のフィルターの作成

新規のフィルターを作成するには、以下を指定します。

/subsystem=undertow/configuration=filter/response-header=new-response-header:add(header-name=new-response-header,header-value="My Value")

フィルターの削除

フィルターを削除するには、以下を指定します。

/subsystem=undertow/configuration=filter/response-header=new-response-header:remove
reload

フィルターの設定に使用できる属性の完全リストは Undertow サブシステムの属性 の項を参照してください。

17.8.1. buffer-request ハンドラーの設定

クライアントまたはブラウザーからのリクエストは、ヘッダーとボディーの 2 つで設定されます。通常の場合、ヘッダーとボディーの間に遅延がない状態で JBoss EAP に送信されます。しかし、ヘッダーが最初に送信され、その数秒後にボディーが送信されると、完全なリクエストの送信に遅延が発生します。このような場合、JBoss EAP にスレッドが作成され、完全なリクエストの実行を待機していることを示す waiting が表示されます。

リクエストのヘッダーおよびボティーの送信による遅延は、buffer-request ハンドラーを使用して修正できます。buffer-request ハンドラーは、ワーカースレッドに割り当てする前に、非ブロッキング IO スレッドからリクエストの消費を試みます。追加された buffer-request ハンドラーがない場合、スレッドは直接ワーカースレッドに割り当てられます。しかし、buffer-request ハンドラーが追加されると、ワーカースレッドに割り当てする前に、ハンドラーは IO スレッドを使用してブロックせずにバッファー処理できる量のデータを読み取ろうとします。

以下の管理 CLI コマンドを使用して buffer-request ハンドラーを設定できます。

/subsystem=undertow/configuration=filter/expression-filter=buf:add(expression="buffer-request(buffers=1)")

/subsystem=undertow/server=default-server/host=default-host/filter-ref=buf:add

処理できるバッファーリクエストのサイズには制限があります。この制限は、以下の式のとおり、バッファーサイズとバッファー合計数の組み合わせで決定されます。

Total_size = num_buffers × buffer_size

この式の説明は次のとおりです。

  • Total_size は、リクエストがワーカースレッドに送信される前にバッファー処理されるデータのサイズになります。
  • num_buffers はバッファーの数になります。バッファーの数は、ハンドラーの buffers パラメーターによって設定されます。
  • buffer_size は各バッファーのサイズになります。バッファーサイズは io サブシステムで設定され、デフォルトではリクエストごとに 16KB になります。
警告

メモリー不足になる可能性があるため、サイズが大きすぎるバッファーリクエストは設定しないでください。

17.8.2. SameSite 属性の設定

SameSite 属性を使用して、Cookie のアクセシビリティー (同じサイト内で Cookie にアクセスできるかどうか) を定義します。この属性により、ブラウザーはクロスサイトリクエストで Cookie を送信しないため、クロスサイトフォージェリー攻撃を阻止できます。

undertow サブシステムの SameSiteCookieHandler を使用して、Cookie の SameSite 属性を設定できます。この設定では、アプリケーションコードを変更する必要はありません。

次の表には、SameSiteCookieHandler パラメーターの詳細が記載されています。

表17.4 SameSiteCookieHandler パラメーター
パラメーター名存在説明

add-secure-for-none

任意

このパラメーターは、SameSite 属性モードが None の場合に、Cookie に Secure 属性を追加します。デフォルト値は true です。

case-sensitive

任意

このパラメーターは、cookie-pattern が大文字と小文字を区別するかどうかを示します。デフォルト値は true です。

cookie-pattern

任意

このパラメーターは、Cookie 名の regex パターンを受け入れます。このパラメーターが指定されていない場合、属性 SameSite=<specified-mode> がすべての Cookie に追加されます。

enable-client-checker

任意

このパラメーターは、クライアントアプリケーションが SameSite=None 属性と互換性がないかどうかを確認します。デフォルト値は true です。

このデフォルト値を使用し、SameSite 属性モードを None 以外の値に設定すると、パラメーターは検証を無視します。

互換性のないクライアントの問題を防ぐため、このパラメーターは SameSite 属性モードを None に設定することをスキップします。そのため、何も影響はありません。互換性のあるクライアントからのリクエストの場合、パラメーターは想定どおりに SameSite 属性モードを None に設定します。

mode

必須

このパラメーターは SameSite 属性モードを指定します。これは StrictLax、または None に設定できます。

クロスサイトリクエストフォージェリー攻撃に対するセキュリティーを向上させるために、一部のブラウザーではデフォルトの SameSite 属性モードを Lax に設定します。詳細は、関連情報 セクションを参照してください。

SameSiteCookieHandler は、cookie-pattern に一致する Cookie に、または cookie-pattern が指定されていない場合はすべての Cookie に、属性 SameSite=<specified-mode> を追加します。属性 SameSite=<specified-mode> には、ユーザーが置換した変数、つまり <specified-mode> が含まれています。cookie-pattern は、case-sensitive に設定された値に従って照合されます。

ブラウザーの SameSite 属性を設定する前に、次の点を考慮してください。

  • アプリケーションを確認して、Cookie に SameSite 属性が必要かどうか、またそれらの Cookie を保護する必要があるか確認します。
  • すべての Cookie に対して SameSite 属性モードを None に設定すると、アプリケーションが攻撃を受けやすくなります。

式フィルターを使用して SameSiteCookieHandler を設定する手順

expression-filter を使用してサーバー上で SameSiteCookieHandler を設定するには、次の手順を実行します。

  1. 次のコマンドを使用し、SameSiteCookieHandler を使用して新しい expression-filter を作成します。

    /subsystem=undertow/configuration=filter/expression-filter=addSameSiteLax:add(expression="path-prefix('/mypathprefix') -> samesite-cookie(Lax)")
  2. 次のコマンドを使用して、undertow Web サーバーの expression-filter を有効にします。

    /subsystem=undertow/server=default-server/host=default-host/filter-ref=addSameSiteLax:add

設定ファイルを追加して SameSiteCookieHandler を設定する手順

undertow-handlers.conf ファイルを追加してアプリケーションに SameSiteCookieHandler を設定するには、次の手順を実行します。

  1. WAR の WEB-INF ディレクトリーに undertow-handlers.conf ファイルを追加します。
  2. undertow-handlers.conf ファイルに、特定の SameSiteCookieHandler パラメーターを指定して次のコマンドを追加します。

    samesite-cookie(mode=<mode>)

    mode パラメーターの有効な値は、StrictLax、または None です。上記のコマンドを使用すると、cookie-patterncase-sensitiveenable-client-checker、または add-secure-for-none などの他の SameSiteCookieHandler パラメーターを設定することもできます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.