2012-10-11 30 views
8

サーブレットAPI(JSFまたはJSPページのような)を使用してJava Webアプリケーションを実行すると、行のどこかに「ユニークな」SessionIDが生成され、ユーザーのセッションが識別されます。セッションIDはどのように生成されますか?

これらのsessionIDがどのように生成されているのでしょうか。彼らはクライアントのIPを含んでいますか?タイムスタンプ?乱数?

第2に、この世代はどこにあるのだろうか?これはアプリケーションを実行するサーバーに依存していますか?

+2

を参照してください。これは見えますセッションリプレイに対して私たちはそれをテストしました。実際にはJSESSIONIDのクッキー値を変更して、別のユーザーのセッションを乗っ取ることができます。 :( –

答えて

3

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

関連する問題