2016-05-18 2 views
2

より広い意味では、クライアントがhttp投稿要求によってサーバーに送信できるメッセージのサイズを制限したいとします。TomcatまたはSpringを使用してコンテンツ長ヘッダーが正しく設定されているかどうかを確認する

httpヘッダーのcontent-lengthを使用してこれを行いたいと思います。 コンテンツの長さが大きすぎる場合は、フルボディを読み取ってこのヘッダーをチェックしてリクエストを拒否する必要はなく、コンテンツの長さが不足している場合は拒否する(http 411エラーコード)

Soメッセージ本文の実際のサイズが要求のcontent-lengthに設定されているものと同じであることを確認します。

コンテンツの長さが実際にメッセージ本体の実サイズを表す場合、TomcatまたはSpring MVC(my stack)が検証を行うかどうかです。

は(これは、サーブレットコンテナ、または春のディスパッチャサーブレットは、箱から出して、次のように行っていない場合だけで不思議、フィルタとそれを実装するのは非常に簡単にする必要があります。)

+0

私はフィルター方法が行く方法だろうと思う - それは特殊なユースケースであり、TomcatやSpringのどちらもデフォルトではこれをしません。 – stdunbar

+0

[チャンク転送符号化](https://en.wikipedia.org/wiki/Chunked_transfer_encoding) – Ilya

+1

があることを忘れないでください。そうでなければ、絶対にすべきです。 DDOSの潜在的な攻撃ベクトル。 – christopher

答えて

1

Tomcatがそれを処理します。例でシンプルなWebアプリ上でいくつかのテストを行った後

  1. コンテンツ-な長さは、それがコンテンツから0バイトを読み込みます提示されていない場合。
  2. コンテンツの長さヘッダーに指定された長さより長いコンテンツがキープアライブのtrueの場合、サイズコンテンツの長さの本文を読み取った後、残りの本文を新しい要求として処理しようとします悪い要求で)
  3. は、ポイント2と同じ状況ですが、キープアライブはfalseです。コンテンツ長のヘッダーのように長さの本体を受け取るだけです。
+0

どのように/ Tomcatがそれを扱うかを示すドキュメントやソース?ありがとう – Justin

+0

私はソースコード内でそれを探していませんでした.NCやその他の高度なコマンドラインツールでテストしていました。 – csviri

+0

コンテンツがコンテンツの長さよりも小さいのはどうですか? –

関連する問題