2012-10-11 34 views
8

Al ejecutar una aplicación web java con el servlet api (como las páginas JSF o JSP), en algún punto de la línea se genera un SessionID 'único' para identificar la sesión del usuario.¿Cómo se genera un sessionID?

Me pregunto cómo se generan estos sessionID's. ¿Incluyen la IP del cliente? Una marca de tiempo? ¿Números al azar?

En segundo lugar, me pregunto dónde ocurre esta generación? ¿Esto depende del servidor que ejecuta la aplicación?

+2

Así que esto parece que no hay protección fuera de la caja contra la repetición de la sesión. Lo probamos y, de hecho, puede alterar el valor de su cookie JSESSIONID para secuestrar la sesión de otro usuario. :( –

Respuesta

3

Normalmente se usa un algoritmo java.security.MessageDigest.

Normalmente la ID generada es solo un conjunto de números aleatorios, hasta la longitud requerida, pero varía según los algoritmos utilizados en los diversos contenedores de servlets.

En Tomcat6, por ejemplo, echar un vistazo a:

ManagerBase.sessionIdLength 

y

ManagerBase.createSession() //which calls generateSessionId() 

Ver http://www.docjar.com/html/api/org/apache/catalina/session/ManagerBase.java.html

Cuestiones relacionadas