サーブレットAPI(JSFまたはJSPページのような)を使用してJava Webアプリケーションを実行すると、行のどこかに「ユニークな」SessionIDが生成され、ユーザーのセッションが識別されます。セッションIDはどのように生成されますか?
これらのsessionIDがどのように生成されているのでしょうか。彼らはクライアントのIPを含んでいますか?タイムスタンプ?乱数?
第2に、この世代はどこにあるのだろうか?これはアプリケーションを実行するサーバーに依存していますか?
サーブレットAPI(JSFまたはJSPページのような)を使用してJava Webアプリケーションを実行すると、行のどこかに「ユニークな」SessionIDが生成され、ユーザーのセッションが識別されます。セッションIDはどのように生成されますか?
これらのsessionIDがどのように生成されているのでしょうか。彼らはクライアントのIPを含んでいますか?タイムスタンプ?乱数?
第2に、この世代はどこにあるのだろうか?これはアプリケーションを実行するサーバーに依存していますか?
コンテナ固有です。 Tomcat:http://tomcat.apache.org/tomcat-7.0-doc/security-howto.html#Manager
Tomcatの場合、最近リリースされたTomcat 7.0.59には拡張可能なSessionIDGeneratorがありますhttp://tomcat.apache.org/tomcat-7.0-doc/changelog.html –
「識別子はサーブレットコンテナによって割り当てられ、実装に依存しています。」
jsessionidは、新しいセッションが作成されるたびに生成されます。
java.security.MessageDigest
アルゴリズムが通常使用されます。
通常、生成されるIDは、必要な長さまでの乱数のセットですが、さまざまなサーブレットコンテナで使用されるアルゴリズムによって異なります。 Tomcat6で
は、例えば、見ている:なし既製の保護がないよう
ManagerBase.sessionIdLength
と
ManagerBase.createSession() //which calls generateSessionId()
http://www.docjar.com/html/api/org/apache/catalina/session/ManagerBase.java.html
を参照してください。これは見えますセッションリプレイに対して私たちはそれをテストしました。実際にはJSESSIONIDのクッキー値を変更して、別のユーザーのセッションを乗っ取ることができます。 :( –