2

次のような状況が発生しています。

  1. http ://website/ に移動し、 http ://website/appXへのリンクをクリックし
    ます。Cookie が secure = NO の JSessionID を示していることを確認します。

  2. 別のブラウザー ウィンドウまたはタブを開き、https ://website/ に移動し、 https ://website/appYへのリンクをクリックします。
    Cookie が secure = YES の JSessionID を示していることを確認します。

  3. 手順 1 で作成したウィンドウ/タブを操作してみます。セッションの有効期限が切れています...

手順を繰り返し、手順 2 でhttps ://website/appY の代わりにhttps ://website/appX を使用すると、JSessionID Cookie は Secure=NO のままになります。

すべての Cookie には、最後に jvmRoute が追加された JSessionId があります。

--

私たちは使用しています:

Apache (2.2.3-43.el5_5.3) + mod_jk (スティッキー セッション付き) および複数の JBoss インスタンスに構成されたロード バランサー (v 4.3.0)。

まったく同じ問題のリンクしか見つかりませんでした (通常、他のリンクは PHP を使用しています): http://threebit.net/mail-archive/tomcat-users/msg17687.html

Q: JSessionId Cookie が書き換えられないようにするにはどうすればよいですか?

4

3 に答える 3

2

セキュリティの観点からは、これは正しい動作です。同じセッション ID/Cookie が http でも使用されている場合、攻撃者は https で使用されているセッション ID/Cookie を盗むことができるからです。

詳細については、こちらの回答を参照してください。

したがって、安全なアプリケーションを構築したい場合 (https を使用しているため、これを期待しています)、これを変更してはなりません!

于 2011-04-08T13:50:03.987 に答える
1

HTTPS から HTTP に、またはその逆に切り替えると、SessionID/Cookie は保持されません。これらのパラメーターを URL で渡して、値を渡すことができます。

于 2011-04-08T14:43:34.007 に答える
0

deploy/jboss-web.deployer/server.xml のコネクタ設定 (JBoss にバンドルされている Tomcat のバージョン用) にemptySessionPathは、コンテキスト パスにセッション Cookie を設定するかどうかを制御する属性があります。

<Connector port="8080" address="${jboss.bind.address}"    
     maxThreads="250" maxHttpHeaderSize="8192"
     emptySessionPath="true" protocol="HTTP/1.1"
     enableLookups="false" redirectPort="8443" acceptCount="100"
     connectionTimeout="20000" disableUploadTimeout="true" /> 

これを false に設定すると、アプリケーションごとに 1 つの Cookie が作成され、問題が発生しなくなります。

于 2011-09-26T14:27:13.177 に答える