2012-10-11 25 views
8

सर्वलेट एपीआई (जेएसएफ या जेएसपी पृष्ठों की तरह) के साथ जावा वेब एप्लिकेशन चलाते समय, लाइन के साथ कहीं भी 'अद्वितीय' सत्र आईडी उपयोगकर्ता के सत्र की पहचान करने के लिए उत्पन्न होता है।सत्र आईडी कैसे उत्पन्न होता है?

मुझे आश्चर्य है कि ये सत्र आईडी कैसे उत्पन्न होते हैं। क्या वे ग्राहक का आईपी शामिल करते हैं? एक टाइमस्टैम्प? यादृच्छिक संख्या?

दूसरा, मैं सोच रहा हूं कि यह पीढ़ी कहाँ होती है? क्या यह सर्वर पर निर्भर है जो एप्लिकेशन चलाता है?

+2

देखें तो यह लग रहा है कोई बाहर के बॉक्स सुरक्षा मौजूद है सत्र रीप्ले के खिलाफ। हमने इसका परीक्षण किया, और आप वास्तव में किसी अन्य उपयोगकर्ता के सत्र को हाइजैक करने के लिए अपने JSESSIONID कुकी मान से छेड़छाड़ कर सकते हैं। :( –

उत्तर

6

यह कंटेनर विशिष्ट है। टॉमकैट: http://tomcat.apache.org/tomcat-7.0-doc/security-howto.html#Manager

+1

यह पता चला है कि टोमकैट के लिए, हाल ही में जारी किए गए टोमकैट 7.0.5 9 में एक विस्तारित सत्र आईडीनरेटर http://tomcat.apache.org/tomcat-7.0-doc/changelog.html है –

3

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

"पहचानकर्ता सर्वलेट कंटेनर द्वारा आवंटित और कार्यान्वयन निर्भर है है।"

जब भी कोई नया सत्र बनाया जाता है तो jsessionid उत्पन्न होता है।

3

java.security.MessageDigest एल्गोरिदम आमतौर पर उपयोग किया जाता है।

आमतौर पर जेनरेट की गई आईडी यादृच्छिक संख्याओं का एक सेट है, जो आवश्यक लंबाई तक है, लेकिन यह विभिन्न सर्वलेट कंटेनर में उपयोग किए गए एल्गोरिदम के अनुसार बदलती है।

tomcat6 में, उदाहरण के लिए, पर एक नजर है:

ManagerBase.sessionIdLength 

और

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

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

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^