कुकीज़ और सत्र क्या हैं, और वे एक-दूसरे से कैसे संबंधित हैं?


86

मैं पेशेवर रूप से कुकीज़ और सत्रों को समझने की कोशिश कर रहा हूं। मुझे पता है कि जब कोई ब्राउज़र किसी सर्वर से जुड़ता है, तो सर्वर "ब्राउजर" को क्लाइंट ब्राउज़र कुकीज़ फ़ोल्डर में "phpsessid" के साथ कुकी को "पेस्ट" करने के लिए कहता है।

अब जब हमारे पास "phpsessid" है, अगर क्लाइंट सर्वर में ब्राउज़र को सर्वर "phpsessid" को भेजता है और सर्वर tmp फ़ोल्डर पर एक नज़र डालता है और यदि हमारे पास एक मैच है तो यह उपयोगकर्ता के डेटा को वापस लोड करता है इस ग्राहक, लेकिन मैं इस प्रक्रिया के साथ उलझन में हूँ।

मैं आभारी रहूंगा अगर कोई मुझे सत्र और कुकीज़ बनाने की उन प्रक्रियाओं को समझने में मदद कर सकता है - पर्दे के पीछे क्या हो रहा है।


ऐसा लगता है कि आप पहले से ही जानते हैं कि क्या हो रहा है। आप किस विशिष्ट भाग को जानना चाहते हैं? HTTP / कुकी भाग, या PHP सत्र स्टोर को कैसे लोड करता है?
मारियो

कुकी जो ब्राउज़र phpsessid के साथ बचत कर रहा है, क्या यह सत्र और कुकीज़ बनाने के लिए क्लाइंट की पहचान करने वाला phpsessid है?
ब्लेंकटेक्स्ट

कुकी ब्राउज़र में php सेशन आईडी है, जो सर्वर को बताता है "अरे मैं इस चैप को जानता हूं", सर्वर तब सत्र डेटा (उदाहरण के लिए / tmp / से) को पकड़ लेता है और उपयोगकर्ता को पुनर्स्थापित करता है $ _SESSION
somev

हाँ मुझे पता है कि, लेकिन मैं पूछ रहा हूं, क्या यह "phpsessid" सत्र और कुकीज़ बनाने से पहले ग्राहक की पहचान करने के लिए उपयोग कर रहा है, क्या यह phpsessid कुकी डेटा और क्लाइंट कंप्यूटर के अंदर और सर्वर फ़ाइल पर सत्र फ़ाइल के अंदर शामिल है ?
ब्लेंकटेक्स्ट

जवाबों:


171

आइए इससे गुजरते हैं:

कुकीज़ और सत्र , ब्राउज़र द्वारा किए जाने वाले विभिन्न अनुरोधों के बीच एप्लिकेशन की स्थिति को संरक्षित करने के दोनों तरीके हैं। यह उनके लिए धन्यवाद है, उदाहरण के लिए, आपको हर बार जब आप StackOverflow पर एक पृष्ठ का अनुरोध करने के लिए लॉग इन करने की आवश्यकता नहीं होती है।

कुकीज़

कुकीज़ डेटा के छोटे टुकड़े हैं, (अधिकतम 4KB लंबा), जो डेटा को कुंजी = मान जोड़े में रखता है:

name=value; name2=value2

ये या तो जावास्क्रिप्ट द्वारा या HTTP हेडर का उपयोग करके सर्वर के माध्यम से सेट किए जाते हैं ।

कुकीज़ में एक एक्सपायरी डेटाइम सेट होता है, उदाहरण HTTP हेडर का उपयोग करके:

Set-Cookie: name2=value2; Expires=Wed, 19 Jun 2021 10:18:14 GMT

जिसके कारण ब्राउज़र को एक कुकी के name2मान के साथ सेट value2करना पड़ेगा, जो लगभग 9 वर्षों में समाप्त हो जाएगा।

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

कुकीज़ आमतौर पर लॉगिन स्थिति को संरक्षित करने के लिए उपयोग किया जाता है, जहां एक उपयोगकर्ता नाम और एक विशेष हैश ब्राउज़र से भेजा जाता है, और सर्वर एक्सेस को अनुमोदित करने के लिए डेटाबेस के खिलाफ जांच करता है।

कुकीज़ का उपयोग अक्सर सत्र निर्माण में भी किया जाता है ।

सत्र

सत्र थोड़े अलग हैं। प्रत्येक उपयोगकर्ता को एक सत्र ID मिलती है , जिसे कुकी के लिए या GET चर द्वारा सत्यापन के लिए सर्वर पर वापस भेजा जाता है ।

सत्र आमतौर पर अल्पकालिक होते हैं, जो अनुप्रयोगों के बीच अस्थायी स्थिति को बचाने में उन्हें आदर्श बनाता है। उपयोगकर्ता द्वारा ब्राउज़र बंद करने के बाद सत्र भी समाप्त हो जाते हैं।

सत्र कुकीज़ से अधिक सुरक्षित माने जाते हैं क्योंकि चर स्वयं सर्वर पर रखे जाते हैं । यहां देखिए यह कैसे काम करता है:

  1. सर्वर एक सत्र खोलता है (HTTP हेडर के माध्यम से एक कुकी सेट करता है)
  2. सर्वर एक सत्र चर सेट करता है।
  3. क्लाइंट पेज बदलता है
  4. क्लाइंट चरण 1 से सत्र आईडी के साथ सभी कुकीज़ भेजता है।
  5. सर्वर कुकी से सत्र आईडी पढ़ता है।
  6. सर्वर किसी डेटाबेस (या मेमोरी आदि) की सूची से सत्र आईडी से मेल खाता है।
  7. सर्वर एक मैच पाता है, चर पढ़ता है जो अब $_SESSIONसुपरग्लोबल पर उपलब्ध हैं ।

यदि PHP को एक मैच नहीं मिलता है, तो यह एक नया सत्र शुरू करेगा, और 1-7 से चरणों को दोहराएगा।

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


यही इसका सार है। आप दोनों विषयों पर PHP मैनुअल पर अधिक जान सकते हैं।


1
तो क्या इसका मतलब है कि सत्रों को काम करने के लिए कुकीज़ को चालू करना होगा?
बिग पोटेटो

1
@ एडमंड: ज्यादातर मामलों पर, हाँ। हालाँकि, आप इसे सेट कर सकते हैं ताकि सत्र ID GET चर के माध्यम से प्रसारित हो (जिसका अर्थ है कि session_id को हर पृष्ठ पर संलग्न करना होगा hello.php?sid=cbe709ac7bed98f7ecb89713) ( )
Madara's Ghost

एंड्रॉइड या आईफोन उपकरणों पर क्लोज़ ब्राउज़र का वास्तव में क्या मतलब है? ऐप बंद करें? उपकरण बंद करें? सभी टैब बंद करें और बाहर निकलें? आदि
वांडरवल्स

2
@SurajJain अगर यह "मुझे याद रखें" कुकीज़ के लिए नहीं होता, तो यह लंबे समय तक बना रहता है।
मदारा का भूत

4
अन्य प्रश्न: जब उपयोगकर्ता ब्राउज़र को बंद कर देता है, तो सर्वर को इस घटना से कैसे सूचित किया जाता है ताकि सर्वर इस सत्र आईडी को हटा दे? या यह कुछ समय बाद अपने आप समाप्त हो जाता है?
user2774480
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.