2012-10-11 14 views
8

Podczas uruchamiania aplikacji sieciowej Java z apletem apletów (jak strony JSF lub JSP), gdzieś wzdłuż linii generowany jest "unikalny" identyfikator sesji, aby zidentyfikować sesję użytkownika.W jaki sposób jest generowany identyfikator sesji?

Zastanawiam się, jak generowane są te identyfikatory sesji. Czy zawierają adres IP klienta? Znacznik czasu? Losowe liczby?

Po drugie, zastanawiam się, gdzie się dzieje to pokolenie? Czy jest to zależne od serwera, na którym działa aplikacja?

+2

Tak to wygląda nie ma out-of-the-box ochrona przed powtórką sesji. Przetestowaliśmy to i naprawdę możesz po prostu manipulować wartością cookie JSESSIONID, aby przejąć sesję innego użytkownika. :( –

Odpowiedz

3

Używany jest zwykle algorytm java.security.MessageDigest.

Zwykle generowany identyfikator jest po prostu zbiorem liczb losowych, aż do wymaganej długości, ale zmienia się w zależności od algorytmów używanych w różnych kontenerach serwletów.

W tomcat6 na przykład spojrzeć na:

ManagerBase.sessionIdLength 

i

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

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

Powiązane problemy