कुकीज़ और सत्रों के बीच अंतर?


154

मैं वेब डेवलपमेंट में प्रशिक्षण ले रहा हूं और जेएसपी एंड सर्वलेट्स के बारे में सीख रहा हूं । मुझे इसका कुछ ज्ञान है HttpSession- मैंने अपनी कुछ नमूना परियोजनाओं में इसका उपयोग किया है।

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

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


यह प्रश्न भी देखें: < stackoverflow.com/questions/356562/… > विशेष रूप से, हस्ताक्षरित कुकीज़ के बारे में टिप्पणी।
जोएल कोएहॉर्न

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

जवाबों:


180

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

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


10
" इसे एक URL में पास करना (जो सुरक्षा जोखिम पैदा करता है)। " वास्तव में दोनों दृष्टिकोणों में सुरक्षा जोखिम (अलग-अलग) हैं। यूआरएल में सीक्रेट-आईडी को ठीक से किया जा सकता है, और यदि उपयोगकर्ता समझता है कि URL गुप्त है और कभी भी सार्वजनिक मंच पर पोस्ट नहीं किया जा सकता है।
23

1
"पहचानकर्ता को URL में पारित किया जा सकता है या सत्र कुकी में सहेजा जा सकता है।" । कहाँ पे? ग्राहक या सर्वर साइड? अधिक स्पष्ट करने के लिए धन्यवाद।
अदीब अउरी

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

306

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

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

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

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

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


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

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

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

2
तो सबसे पहले कुकी कौन बनाता है? सर्वर या क्लाइंट? या यह आवेदन-निर्भर है? (मैं सर्वर से कहूंगा कि अन्यथा यह सुरक्षा के लिए खतरा है, लेकिन मुझे लगता है कि यह ध्यान देने योग्य है!)
nha

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

4

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


3

इस धागे पर पहले से ही बहुत योगदान है, बस एक अनुक्रम आरेख को दूसरे तरीके से वर्णन करने के लिए संक्षेप में प्रस्तुत करें।

यहां छवि विवरण दर्ज करें

इस विषय के बारे में भी एक अच्छी कड़ी है, https://web.stanford.edu/~ouster/cgi-bin/cs142-fall10/lecture.php?topic=cookie


1

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

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


0

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

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


0

Asp.net में सत्र:

1. आवेदन भर में डेटा जमा करता है।

2. डेटा चालू सत्र जीवित है, तो डेटा। अगर हमें कई कंट्रोलर एसीटॉन से एक्सेस करने के लिए कुछ डेटा की आवश्यकता होती है और देखें कि डेटा को स्टोर करने और वापस लेने का तरीका सत्र है।

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

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


0

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


0

कुकीज़ एक पाठ फ़ाइल स्वरूप के रूप में ब्राउज़र में संग्रहीत हैं। यह डेटा की सीमा राशि संग्रहीत है। यह केवल 4kb [40bybytes] की अनुमति दे रहा है । $ _ कूकी चर एक ही नाम के साथ कई कुकीज़ नहीं रखेगा।

हम कुकीज़ मानों को आसानी से एक्सेस कर सकते हैं । इसलिए यह कम सुरक्षित हैसेटकुकी () फ़ंक्शन को पहले ही प्रदर्शित होना चाहिए

<html> 

टैग।

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

लिंक: अंतर-कुकीज़-और-सत्र


ठीक है, वास्तव में आप कुकीज़ में कई डेटा रख सकते हैं। इसके अलावा, सत्र वास्तव में असीमित मात्रा में डेटा नहीं रख सकते हैं। आपके पास RAM की मात्रा से आप बहुत सीमित हैं।
कोरे तुगे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.