15.5. フィルターの設定
フィルターはリクエストの一部の変更を可能にし、述語を使用してフィルターの実行時を制御できます。フィルターの一般的なユースケースには、ヘッダーの設定や GZIP 圧縮などがあります。
フィルターの機能は、JBoss EAP 6 で使用されたグローバルバルブと同等です。
以下のタイプのフィルターを定義できます。
- custom-filter
- error-page
- expression-filter
- gzip
- mod-cluster
- request-limit
- response-header
- rewrite
15.5.1. 管理 CLI と管理コンソールを使用したファイルハンドラーの管理 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、管理 CLI と管理コンソールを使用して Undertow サブシステムでフィルターを管理する方法について説明します。必要に応じて、既存のフィルターを更新したり、新しいフィルターを作成したり、フィルターを削除したりできます。
前提条件
- 管理 CLI にアクセスできる。
- 管理コンソールにアクセスできる。
- サーバー設定を変更する権限がある。
管理コンソールを使用してファイルハンドラーを管理する
管理コンソールを使用してフィルターを設定するには、Configuration
管理 CLI を使用してファイルハンドラーを管理する
次の手順は、管理 CLI を使用してフィルターを設定する方法を示しています。
手順
既存のフィルターの更新
- 管理 CLI へ接続します。
フィルターの属性を更新するには、次のコマンドを実行します。
---- /subsystem=undertow/configuration=filter/response-header=myHeader:write-attribute(name=header-value,value="JBoss-EAP") ----
---- /subsystem=undertow/configuration=filter/response-header=myHeader:write-attribute(name=header-value,value="JBoss-EAP") ----
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 変更を適用するには、サーバーをリロードします。
---- reload ----
---- reload ----
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
新規のフィルターの作成
- 管理 CLI へ接続します。
新しいフィルターを作成するには、次のコマンドを実行します。
---- /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:add(header-name=new-response-header,header-value="My Value") ----
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
フィルターの削除
- 管理 CLI へ接続します。
フィルターを削除するには、次のコマンドを実行します。
---- /subsystem=undertow/configuration=filter/response-header=new-response-header:remove ----
---- /subsystem=undertow/configuration=filter/response-header=new-response-header:remove ----
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 変更を適用するには、サーバーをリロードします。
---- reload ----
---- reload ----
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.5.1.1. buffer-request ハンドラーの設定 リンクのコピーリンクがクリップボードにコピーされました!
クライアントまたはブラウザーからのリクエストは、ヘッダーとボディーの 2 つの部分で構成されます。通常の場合、ヘッダーとボディーの間に遅延がない状態で JBoss EAP に送信されます。しかし、ヘッダーが最初に送信され、その数秒後にボディーが送信されると、完全なリクエストの送信に遅延が発生します。このような場合、JBoss EAP にスレッドが作成され、完全なリクエストの実行を待機していることを示す waiting
が表示されます。
リクエストのヘッダーおよびボティーの送信による遅延は、buffer-request
ハンドラーを使用して修正できます。buffer-request
ハンドラーは、ワーカースレッドに割り当てする前に、非ブロッキング IO スレッドからリクエストの消費を試みます。追加された buffer-request
ハンドラーがない場合、スレッドは直接ワーカースレッドに割り当てられます。しかし、buffer-request
ハンドラーが追加されると、ワーカースレッドに割り当てする前に、ハンドラーは IO スレッドを使用してブロックせずにバッファー処理できる量のデータを読み取ろうとします。
以下の管理 CLI コマンドを使用して buffer-request
ハンドラーを設定できます。
前提条件
- 管理 CLI にアクセスできる。
- サーバー設定を変更する権限がある。
手順
バッファー要求
ハンドラーを追加するには、次のコマンドを実行します。---- /subsystem=undertow/configuration=filter/expression-filter=buf:add(expression="buffer-request(buffers=1)") ----
---- /subsystem=undertow/configuration=filter/expression-filter=buf:add(expression="buffer-request(buffers=1)") ----
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ハンドラーをサーバーとホストに接続します。
---- /subsystem=undertow/server=default-server/host=default-host/filter-ref=buf:add ----
---- /subsystem=undertow/server=default-server/host=default-host/filter-ref=buf:add ----
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バッファー要求サイズを計算します。
`Total_size = num_buffers {MultiplicationSign} buffer_size`
`Total_size = num_buffers {MultiplicationSign} buffer_size`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Where:
Where:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Total_size
は、リクエストがワーカースレッドに送信される前にバッファー処理されるデータのサイズになります。 -
num_buffers
は、ハンドラーのbuffers
パラメーターによって設定されるバッファーの数です (この例では1
に設定されています)。 buffer_size
は、io
サブシステムで設定される各バッファーのサイズです (デフォルトはリクエストあたり 16 KB)。警告メモリー不足になる可能性があるため、サイズが大きすぎるバッファーリクエストは設定しないでください。
-
変更を適用するには、サーバーをリロードします。
---- reload ----
---- reload ----
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.5.1.2. SameSite 属性について リンクのコピーリンクがクリップボードにコピーされました!
SameSite
属性を使用して、同じサイト内での Cookie のアクセシビリティーを定義します。この属性は、ブラウザーがクロスサイトリクエストで Cookie を送信しないため、クロスサイトリクエストフォージェリー攻撃を防ぐのに役立ちます。
undertow
サブシステムの SameSiteCookieHandler
を使用して、Cookie の SameSite
属性を設定できます。この設定では、アプリケーションコードを変更する必要はありません。
15.5.1.3. SameSiteCookieHandler パラメーター リンクのコピーリンクがクリップボードにコピーされました!
次の表は、SameSiteCookieHandler
のパラメーターの詳細を示しています。
パラメーター名 | 存在 | 説明 |
---|---|---|
| 任意 |
|
| 任意 |
|
| 任意 |
Cookie 名の正規表現パターンを受け入れます。指定されていない場合は、属性 |
| 任意 |
クライアントアプリケーションが
このデフォルト値を使用し、
互換性のないクライアントの問題を防ぐため、このパラメーターは |
| 必須 |
クロスサイトリクエストフォージェリー攻撃に対するセキュリティーを向上させるために、一部のブラウザーではデフォルトの |
SameSiteCookieHandler
は、cookie-pattern
に一致する Cookie に、または cookie-pattern
が指定されていない場合はすべての Cookie に、属性 SameSite=<specified-mode>
を追加します。cookie-pattern
は、case-sensitive
に設定された値に従って照合されます。
SameSite
属性を設定する前に、次の点を考慮してください。
-
アプリケーションを確認して、Cookie に
SameSite
属性が必要かどうか、またそれらの Cookie を保護する必要があるかどうかを確認します。 -
すべての Cookie に対して
SameSite
属性モードをNone
に設定すると、アプリケーションが攻撃を受けやすくなる可能性があります。
15.5.1.4. 式フィルターを使用して SameSiteCookieHandler を設定する リンクのコピーリンクがクリップボードにコピーされました!
この手順では expression-filter
を使用してサーバー上で SameSiteCookieHandler
を設定する方法について説明します。
前提条件
- 管理 CLI にアクセスできる。
- サーバー設定を変更する権限がある。
手順
SameSiteCookieHandler
を使用して新しいexpression-filter
を作成します。---- /subsystem=undertow/configuration=filter/expression-filter=addSameSiteLax:add(expression="path-prefix('/mypathprefix') -> samesite-cookie(Lax)") ----
---- /subsystem=undertow/configuration=filter/expression-filter=addSameSiteLax:add(expression="path-prefix('/mypathprefix') -> samesite-cookie(Lax)") ----
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Undertow
Web サーバーで式フィルター
を有効にします。---- /subsystem=undertow/server=default-server/host=default-host/filter-ref=addSameSiteLax:add ----
---- /subsystem=undertow/server=default-server/host=default-host/filter-ref=addSameSiteLax:add ----
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.5.1.5. 設定ファイルを使用して SameSiteCookieHandler を設定する リンクのコピーリンクがクリップボードにコピーされました!
この手順では、undertow-handlers.conf
ファイルを追加して、アプリケーションで SameSiteCookieHandler
を設定する方法について説明します。
前提条件
- アプリケーションのソースコードへのアクセス。
- アプリケーションファイルを変更する権限。
手順
-
WAR の
WEB-INF
ディレクトリーにundertow-handlers.conf
ファイルを追加します。 undertow-handlers.conf
ファイルに、特定のSameSiteCookieHandler
パラメーターを指定して次のコマンドを追加します。---- samesite-cookie(mode=<mode>) ----
---- samesite-cookie(mode=<mode>) ----
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replace `<mode>` with one of the valid values: `Strict`, `Lax`, or `None`.
Replace `<mode>` with one of the valid values: `Strict`, `Lax`, or `None`.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow You can also configure other `SameSiteCookieHandler` parameters, such as `cookie-pattern`, `case-sensitive`, `enable-client-checker`, or `add-secure-for-none`.
You can also configure other `SameSiteCookieHandler` parameters, such as `cookie-pattern`, `case-sensitive`, `enable-client-checker`, or `add-secure-for-none`.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存し、必要に応じてアプリケーションを再デプロイします。