2012-10-11 11 views
8

Quando si esegue un'applicazione web java con l'API servlet (come le pagine JSF o JSP), da qualche parte lungo la linea viene generato un SessionID 'unico' per identificare la sessione dell'utente.Come viene generato un ID sessione?

Mi chiedo come vengono generati questi sessionID. Includono l'IP del client? Un timestamp? Numeri casuali?

In secondo luogo, mi chiedo dove accadrà questa generazione? Dipende dal server che esegue l'applicazione?

+2

Quindi questo sembra che non v'è alcuna protezione out-of-the-box contro la ripetizione della sessione. L'abbiamo testato e in effetti puoi semplicemente manomettere il valore del tuo cookie JSESSIONID per dirottare la sessione di un altro utente. :( –

risposta

3

Si utilizza normalmente un algoritmo java.security.MessageDigest.

Generalmente l'ID generato è solo un insieme di numeri casuali, fino alla lunghezza richiesta, ma varia in base agli algoritmi utilizzati nei vari contenitori servlet.

In Tomcat6, per esempio, dare un'occhiata a:

ManagerBase.sessionIdLength 

e

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

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

Problemi correlati