11

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

これらのセッションIDがどのように生成されるのか疑問に思っています。クライアントの IP は含まれていますか? タイムスタンプ?乱数?

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

4

4 に答える 4

8

コンテナ固有です。Tomcat: http://tomcat.apache.org/tomcat-7.0-doc/security-howto.html#Manager

于 2012-10-11T09:15:16.347 に答える
4

通常、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を参照してください

于 2012-10-11T09:25:45.950 に答える
3

http://docs.oracle.com/cd/E17802_01/products/products/servlet/2.3/javadoc/javax/servlet/http/HttpSession.html#getId()

「識別子はサーブレット コンテナによって割り当てられ、実装に依存します。」

jsessionid は、新しいセッションが作成されるたびに生成されます。

于 2012-10-11T09:11:49.903 に答える