0

Java EE HttpSession(Tomcat)について学習しています。ブラウザを閉じるとCookieJSessionID=12345が破棄されると表示されます(ただし、サーバー側では、セッションオブジェクトはその存続期間が終了するまで保持されます)。

セッションの寿命を1時間に設定したとしましょう。ユーザーが次のアクションを繰り返す一種のシナリオがあります。

  1. アクセスサーブレット(およびこのサーブレットはを呼び出しますgetSession()

  2. ブラウザを閉じます(またはCookieをクリアします)。

したがって、この繰り返しにより、多くの役に立たないセッションオブジェクトが作成され、それらは寿命が終了した後にのみ破棄されます。

この場合、一部の「ハッカー」は、サーバーを悪用するプログラムを作成できます(RAMがなくなるまでセッションオブジェクトを作成し続けます)。このシナリオは実際の環境で可能ですか?Java EEはこれを防ぐために何かをしますか?

4

2 に答える 2

1

公開サイトがある場合、おそらくセッションは必要なく、セッションを作成しないように webapp を構成できます。

ログインが必要なサイトがある場合は、それに応じてこれを計画する必要があります: 容量を計画する、プライベート ページのセッションのみを作成する、できるだけ少ないオブジェクトをセッションに入れる、セッション タイムアウトを低く保つなど。

Java EE は、Apache HTTP サーバーが 1 秒あたり何十億ものリクエストを作成する (そして他のユーザーがサイトにアクセスするのを防ぐ) ことから保護しないのと同じように、DDOS に対してすぐに使用できる保護を提供しませんが、できる方法を提案します。影響を最小限に抑えます。

于 2012-10-30T11:09:51.390 に答える
0

はい、それは間違いなく実際のシナリオです。検索エンジンがサイトをクロールしてサイトを強制終了したケースを知っています。これは、検索エンジンがリクエストごとに新しい巨大なセッションを作成したためです。

これを処理するには、次の2つの方法しかないと思います。

  • セッションの有効期間をできるだけ短くしてください。
  • セッションを使用して巨大なオブジェクトを保存しないようにします。

私は一般的に後者を好みます。私見では、セッションに巨大なオブジェクトを保存する必要があるケースはほとんどありません。

これは、Michael T. NygardのRelease itのような本 (ちなみに非常に優れた本) で学習するものでもあります。

于 2012-10-30T10:08:32.337 に答える