6.12.1 リクエストデータのサイズの制限
インプロセスHTTPサーバでは,一定のサイズ以下のリクエストデータだけを受け付けることによって,不正なリクエストデータの受け付けを拒否し,サーバへの負荷を抑え,安定した稼働を維持できます。
次に示す項目を設定することで,リクエストデータのサイズ制限によるアクセス制御を実現します。
-
リクエストラインの長さの制限
リクエストラインの長さの上限値を設定することで,アクセスを制御します。リクエストラインの長さには,HTTPメソッド,URI(クエリ文字列を含む),HTTPのバージョン,およびリクエストラインの終わりを示す改行文字(2バイト)が含まれます。
受信したリクエストラインの長さが上限値を超えた場合,Webクライアントに対して,ステータスコード414のエラーを返します。
-
HTTPヘッダ数の制限
HTTPリクエストに含まれるHTTPヘッダ数の上限値を設定することで,アクセスを制御します。
受信したHTTPリクエストに含まれるHTTPヘッダ数が上限値を超えた場合,Webクライアントに対してステータスコード400のエラーを返します。
-
リクエストヘッダサイズの制限
HTTPリクエストのリクエストヘッダのサイズに上限値を設定することによって,アクセスを制御します。
受信したHTTPリクエストのHTTPヘッダのサイズが上限値を超えた場合,Webクライアントに対してステータスコード400のエラーを返します。
-
リクエストボディサイズの制限
HTTPリクエストのボディサイズに上限値を設定することによって,アクセスを制御します。インプロセスHTTPサーバでは,リクエストヘッダに含まれるContent-Lengthヘッダの値で判断します。
HTTPリクエストのボディサイズが上限値を超えた場合,Webクライアントに対してステータスコード413のエラーを返します。
なお,チャンク形式でリクエストボディが送信された場合,サーブレット内部では指定された上限値までのデータを読み込みます。上限値を超えるとサーブレットで例外(IOException)が発生しますが,サーブレットの処理は続行されます。リクエストを送信したクライアントには,指定された上限値までのデータを読み込んだ結果に基づいて,アプリケーションが作成したレスポンスを返します。
- ポイント
-
SSLアクセラレータや負荷分散機などのゲートウェイ機器や,プロキシサーバを配置していて,ゲートウェイ機器やプロキシサーバにリクエストデータサイズの制御機能がある場合は,その制御機能の設定値以下の値を設定する必要があります。