2008-12-11 25 views
138

मैं वेब विकास में प्रशिक्षण दे रहा हूं और जेएसपी & Servlets के बारे में सीख रहा हूं। मुझे HttpSession का कुछ ज्ञान है - मैंने इसे अपनी कुछ नमूना परियोजनाओं में उपयोग किया है।कुकीज़ और सत्र के बीच मतभेद?

ब्राउज़र में मैंने "कुकीज़ को हटाने" का विकल्प देखा है। अगर मैं कुकीज़ हटा देता हूं तो यह HttpSession भी हटा देता है।

कुकीज़ और सत्र समान हैं? उनके बीच मतभेद क्या हैं?

+0

यह प्रश्न भी देखें: विशेष रूप से, हस्ताक्षरित कुकीज़ के बारे में टिप्पणी। –

+0

मुझे लगता है कि इस सवाल का दूसरा जवाब अधिक उपयुक्त है, यदि आप इसे सबसे अच्छे उत्तर के रूप में चुनते हैं, तो बहुत से लोग इसे पढ़ेंगे। –

उत्तर

167

सत्र सर्वर-साइड फ़ाइलें हैं जिनमें उपयोगकर्ता की जानकारी होती है, जबकि कुकीज क्लाइंट-साइड फाइलें होती हैं जिनमें उपयोगकर्ता जानकारी होती है। सत्रों में एक अद्वितीय पहचानकर्ता होता है जो उन्हें विशिष्ट उपयोगकर्ताओं को मानचित्रित करता है। यह पहचानकर्ता यूआरएल में पारित किया जा सकता है या सत्र कुकी में सहेजा जा सकता है।

अधिकांश आधुनिक साइटें दूसरे दृष्टिकोण का उपयोग करती हैं, जो एक यूआरएल में इसे पास करने के बजाय कुकी में पहचानकर्ता को सहेजती है (जो सुरक्षा जोखिम उत्पन्न करती है)। आप शायद इसे जानने के बिना इस दृष्टिकोण का उपयोग कर रहे हैं, और कुकीज़ को हटाकर आप कुकीज़ में निहित अद्वितीय सत्र पहचानकर्ता को हटाते समय प्रभावी रूप से अपने मिलान सत्रों को मिटा देते हैं।

+6

"इसे किसी URL में अवरुद्ध करना (जो सुरक्षा जोखिम उत्पन्न करता है) ._" वास्तव में दोनों दृष्टिकोणों में सुरक्षा जोखिम होते हैं (अलग-अलग होते हैं)। URL_ में _Secret-ID को सही तरीके से किया जा सकता है, और यदि उपयोगकर्ता समझता है कि यूआरएल गुप्त है और कभी भी सार्वजनिक मंच में पोस्ट नहीं किया जा सकता है। – curiousguy

+0

"पहचानकर्ता को यूआरएल में पारित किया जा सकता है या सत्र कुकी में सहेजा जा सकता है।" । कहा पे? ग्राहक या सर्वर की तरफ? अधिक स्पष्टीकरण के लिए धन्यवाद। –

+4

@whitelettersandblankspaces सत्र कुकी क्लाइंट पर संग्रहीत होती है (और इसके मान में अद्वितीय सत्र पहचानकर्ता होता है जो सर्वर पर उपयोगकर्ता सत्र में ब्राउज़र सत्र को मैप करने के लिए हर अनुरोध के साथ भेजा जाता है)। – WynandB

1

Google JSESSIONID। यह समझाएगा कि Servlet API प्रारंभ में यूआरएल पुनः लेखन का उपयोग कैसे करता है और फिर, यदि कुकीज़ सक्षम हैं, तो सत्रों का प्रबंधन करने के लिए कुकीज़।

HTTP स्टेटलेस है इसलिए क्लाइंट ब्राउज़र को प्रत्येक सत्र के साथ सर्वर पर अपने सत्र की आईडी भेजनी होगी। सर्वर, किसी भी माध्यम से, इस आईडी का उपयोग उस सत्र के लिए किसी भी डेटा को पुनर्प्राप्त करने के लिए करता है जो इसे अनुरोध के जीवनकाल के लिए उपलब्ध कराता है।

270

एक कुकी बस एक छोटी पाठ स्ट्रिंग है जो क्लाइंट और सर्वर के बीच आगे और आगे भेजी जाती है। आप एक कुकी में name=bob; password=asdfas स्टोर कर सकते हैं और सर्वर की तरफ क्लाइंट की पहचान करने के लिए उसे आगे और आगे भेज सकते हैं। आप इस बारे में सोच सकते हैं कि एक बैंक टेलर के साथ एक एक्सचेंज लेना जिसके पास कोई अल्पकालिक स्मृति नहीं है, और आपको प्रत्येक लेनदेन के लिए खुद को पहचानने की आवश्यकता है। इस तरह की जानकारी को स्टोर करने के लिए एक कुकी का उपयोग करना बेहद असुरक्षित है। कुकीज़ आकार में भी सीमित हैं।

अब, जब बैंक टेलर अपनी याददाश्त की समस्या के बारे में जानता है, तो वह आपकी जानकारी को कागज़ के टुकड़े पर लिख सकता है और आपको एक छोटा आईडी नंबर असाइन कर सकता है। फिर, प्रत्येक लेनदेन के लिए अपना खाता नंबर और ड्राइवर का लाइसेंस देने के बजाय, आप केवल "मैं ग्राहक 12 हूं"

वेब सर्वर पर अनुवाद करना: सर्वर सत्र ऑब्जेक्ट में प्रासंगिक जानकारी संग्रहीत करेगा, और बनाएं एक सत्र आईडी जो इसे एक कुकी में क्लाइंट को वापस भेज देगी। जब ग्राहक कुकी वापस भेजता है, तो सर्वर आईडी का उपयोग करके सत्र ऑब्जेक्ट को देख सकता है। इसलिए, यदि आप कुकी हटाते हैं, तो सत्र खो जाएगा।

सत्र आईडी का आदान-प्रदान करने के लिए सर्वर के लिए एक अन्य विकल्प सर्वर पुनर्लेखन का उपयोग करना है।

मान लीजिए आप एक लिंक थी - www.myserver.com/myApp.jsp आप पृष्ठ के माध्यम से जाने के लिए और www.myserver.com/myApp.jsp?sessionID=asdf या यहाँ तक कि www.myserver.com/asdf/myApp.jsp के रूप में हर URL रीराइट और पहचानकर्ता कि जिस तरह से आदान-प्रदान कर सकते हैं। इस तकनीक को वेब एप्लिकेशन कंटेनर द्वारा नियंत्रित किया जाता है और आमतौर पर कुकीज सत्रों का उपयोग करने के लिए कॉन्फ़िगरेशन सेट करके चालू किया जाता है।

+24

यह एक महान वास्तविक दुनिया के समानता में लगी एक अद्भुत व्याख्या है। यह जवाब अधिक से अधिक हो जाना चाहिए। ऐसे नए लोगों के लिए बहुत ही सुलभ है जो ऐसे प्रश्न पूछने की अधिक संभावना रखते हैं। – user798719

+2

क्या होता है यदि मैं कोई उपयोगकर्ता हूं और किसी और को मेरी सत्र आईडी पता है? –

+3

@ I19 संभवतः, वे आप का प्रतिरूपण कर सकते हैं। यह ऑनलाइन जुआ परिदृश्यों में हुआ है - होटल वाईफ़ाई को स्नीफ करें, सत्र आईडी चुराएं, और खाते तक पहुंचें। एक सत्र सुरक्षित करना एक और कहानी पूरी तरह से है। –

4

कुकीज और सत्र उपयोगकर्ता के बारे में दोनों स्टोर जानकारी (HTTP अनुरोध को स्टेटफुल करने के लिए) लेकिन अंतर यह है कि कुकीज क्लाइंट-साइड (ब्राउज़र) और सत्र-स्टोर सर्वर पर जानकारी स्टोर करता है। एक कुकी इस अर्थ में सीमित है कि यह सीमित उपयोगकर्ताओं के बारे में जानकारी संग्रहीत करती है और केवल प्रत्येक उपयोगकर्ता के लिए सीमित सामग्री संग्रहीत करती है। एक सत्र इस तरह से सीमित नहीं है। Asp.net में

0

सत्र:

1.Maintains डेटा सभी आवेदन से अधिक पर समन्वयित करें।

2. वर्तमान सत्र जीवित है तो डेटा को पार्सिस्ट करता है। अगर हमें एकाधिक नियंत्रकों एसीटॉन से सुलभ करने के लिए कुछ डेटा चाहिए और विचारों को डेटा स्टोर करने और पुनः प्राप्त करने का तरीका है।

3. सत्र सर्वर साइड फाइलें हैं जिनमें उपयोगकर्ता की जानकारी होती है। [सत्र अद्वितीय पहचानकर्ता हैं जो उन्हें विशिष्ट उपयोगकर्ताओं के लिए मानचित्रित करते हैं]

वेब सर्वरों को अनुवाद करना: सर्वर सत्र ऑब्जेक्ट में प्रासंगिक जानकारी संग्रहीत करेगा, और एक सत्र आईडी तैयार करेगा जो इसे कुकी में वापस कुकी पर भेज देगा । जब ग्राहक कुकी वापस भेजता है, तो सर्वर आईडी का उपयोग करके सत्र ऑब्जेक्ट को देख सकता है। इसलिए, यदि आप कुकी हटाते हैं, तो सत्र खो जाएगा।

0

कुकीज़ एक पाठ फ़ाइल format.It के रूप में ब्राउज़र में जमा हो जाती है संग्रहीत किया जाता है data.It की सीमा राशि केवल अनुमति दे रहा है 4KB [4096bytes]। $ _ कुकी चर एक ही नाम के साथ कई कुकीज़ नहीं का आयोजन करेगा

हम easily.So में कुकीज़ मूल्यों तक पहुँचने कर सकते हैं यह कम सुरक्षित व्याप्ति setcookie() समारोह से पहले

<html> 

टी दिखाई देना चाहिए है एजी।

सत्र सर्वर पक्ष में संग्रहीत हैं। यह डेटा की अनलिमिटेड मात्रा संग्रहीत है। यह सत्रों में एकाधिक चर रखता है। हम कुकीज़ मूल्यों को आसानी से एक्सेस नहीं कर सकते हैं। इसलिए यह अधिक सुरक्षित है।

लिंक:difference-between-cookies-and-sessions

+0

अच्छा, वास्तव में आप कुकीज़ में एकाधिक डेटा रख सकते हैं। साथ ही, सत्र वास्तव में असीमित डेटा नहीं रख सकते हैं। आप अपनी रैम की मात्रा से काफी सीमित हैं। –

+0

क्या आप जांच सकते हैं और बता सकते हैं ??? http://php.net/manual/en/function.setcookie.php – Elangovan

1

कुकी मूल रूप से एक वैश्विक सरणी वेब ब्राउज़र में पहुँचा है। कई बार मूल्य भेजने/प्राप्त करने के लिए उपयोग किया जाता है। यह रूपों के बीच मूल्यों तक पहुंचने के लिए भंडारण तंत्र के रूप में कार्य करता है। कुकीज़ को ब्राउज़र द्वारा अक्षम किया जा सकता है जो सत्र की तुलना में उनके उपयोग में बाधा डालता है।

सत्र को लॉग इन करने और लॉग आउट करने के बीच कुछ के रूप में परिभाषित किया जा सकता है। लॉग इन करने और लॉग आउट करने के बीच का समय एक सत्र है। सत्र लॉग इन करने से पहले सत्र समय के लिए केवल सत्र स्टोर करता है। सत्र लॉग इन करने के बाद, उपयोगकर्ता की गतिविधियों को ट्रैक करने के लिए उपयोग किया जाता है।

0

कुकी क्लाइंट और सर्वर के बीच सत्र को कार्यान्वित करने का एक तरीका है, इस तरह कुकी में संग्रहीत सत्र जानकारी। लेकिन सत्र जानकारी को पकड़ने का यह एकमात्र तरीका नहीं है, एक और तरीका यूआरएल में स्टोर सत्र जानकारी है।

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