कुकी को समझना

कुकी, ब्राउज़र में सेव किए गए डेटा का एक हिस्सा होती है. कुकी का इस्तेमाल, वेबसाइट की सुविधाओं को लागू करने के लिए ज़रूरी जानकारी को बनाए रखने के लिए किया जाता है.

कुकी एक छोटी फ़ाइल होती है, जिसे वेबसाइटें उनके उपयोगकर्ता की मशीन पर संग्रहित करती हैं. कुकी जो जानकारी वह संग्रहित करती है, वह ब्राउज़र और वेबसाइट के बीच बीच-बीच में आती रहती है.

हर कुकी, एक की-वैल्यू पेयर होती है. साथ ही, इसमें कई एट्रिब्यूट भी होते हैं. ये एट्रिब्यूट, यह कंट्रोल करते हैं कि कुकी का इस्तेमाल कब और कहां किया जाए. इन एट्रिब्यूट का इस्तेमाल, खत्म होने की तारीख सेट करने या यह बताने के लिए किया जाता है कि कुकी सिर्फ़ एचटीटीपीएस पर भेजी जानी चाहिए. आपके पास किसी एचटीटीपी हेडर या JavaScript इंटरफ़ेस के ज़रिए कुकी सेट करने का विकल्प होता है.

कुकी उन तरीकों में से एक हैं जिनका इस्तेमाल करके वेबसाइटों पर स्थायी स्थिति जोड़ी जा सकती है. पिछले कुछ सालों में, प्लैटफ़ॉर्म इस्तेमाल करने की उनकी क्षमता समय के साथ बेहतर हुई है. हालांकि, इस प्लैटफ़ॉर्म पर कुछ समस्याएं पैदा हो गई हैं. इसे ठीक करने के लिए, ब्राउज़र (इनमें Chrome, Firefox, और Edge शामिल हैं) अपने व्यवहार में बदलाव कर रहे हैं, ताकि निजता बनाए रखने की ज़्यादा डिफ़ॉल्ट सेटिंग लागू की जा सके.

इस्तेमाल की जा रही कुकी

मान लें कि आपके पास एक ब्लॉग है, जिस पर आप "नया क्या है" दिखाना चाहते हैं आपके लिए प्रोमो उपयोगकर्ता. उपयोगकर्ता, प्रोमो को खारिज कर सकते हैं. इसके बाद, वे कुछ समय तक उसे दोबारा नहीं देख पाएंगे. इस प्राथमिकता को एक कुकी में सेव किया जा सकता है और इसे एक महीने में खत्म होने के लिए सेट किया जा सकता है (26,00,000 सेकंड), और इसे सिर्फ़ एचटीटीपीएस पर भेजें. वह हेडर ऐसा दिखेगा शामिल करें:

Set-Cookie: promo_shown=1; Max-Age=2600000; Secure
रिस्पॉन्स के तौर पर, सर्वर से ब्राउज़र को भेजी जा रही तीन कुकी
सर्वर, Set-Cookie हेडर का इस्तेमाल करके कुकी सेट करते हैं.

जब आपका पाठक ऐसा पेज देखता है जो इन ज़रूरी शर्तों को पूरा करता हो—तो वह और कुकी एक महीने से भी कम पुरानी है—जो उनका ब्राउज़र है इस हेडर को अपने अनुरोध में भेजेगा:

Cookie: promo_shown=1
अनुरोध के दौरान, ब्राउज़र से सर्वर पर भेजी जा रही तीन कुकी
आपका ब्राउज़र, Cookie हेडर में कुकी को वापस भेजता है.

JavaScript का इस्तेमाल करके, उस साइट पर उपलब्ध कुकी को जोड़ा और पढ़ा जा सकता है document.cookie. document.cookie को असाइनमेंट असाइन करने पर, बनाया जाएगा या उस कुंजी से कुकी को ओवरराइड कर देता है. उदाहरण के लिए, आप यहां दिए गए तरीकों को आज़मा सकते हैं: ब्राउज़र का JavaScript कंसोल:

→ document.cookie = "promo_shown=1; Max-Age=2600000; Secure"
← "promo_shown=1; Max-Age=2600000; Secure"

document.cookie को पढ़ने से, मौजूदा समय में ऐक्सेस की जा सकने वाली सभी कुकी आ जाएंगी संदर्भ के लिए, हर कुकी को सेमीकोलन से अलग किया जाता है:

→ document.cookie;
← "promo_shown=1; color_theme=peachpuff; sidebar_loc=left"
JavaScript, ब्राउज़र के अंदर कुकी को ऐक्सेस करता है
JavaScript, document.cookie का इस्तेमाल करके कुकी ऐक्सेस कर सकता है.

अगर आप इसे लोकप्रिय साइटों में से कुछ पर आज़माते हैं, तो आप देखेंगे कि तीन कुकी से काफ़ी ज़्यादा सेट करते हैं. ज़्यादातर मामलों में, कुकी उस डोमेन के प्रत्येक एकल अनुरोध पर भेजी जाती हैं, जिसमें कई किए जा सकते हैं. आपके लिए डाउनलोड करने की बैंडविड्थ से ज़्यादा प्रतिबंधित होता है आउटबाउंड अनुरोधों को पूरा करने में लगने वाले समय को एक बाइट होना चाहिए. सेट की जाने वाली कुकी की संख्या और आकार को ध्यान में रखें. कंपनी या ब्रैंड Max-Age एट्रिब्यूट का इस्तेमाल करके यह पक्का किया जाता है कि कुकी सुरक्षित न हों ज़रूरत से ज़्यादा समय तक.

पहले और तीसरे पक्ष की कुकी क्या होती हैं?

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

एक ही पेज पर अलग-अलग अनुरोधों से, ब्राउज़र को भेजी जा रही तीन कुकी
कुकी किसी एक पेज पर कई तरह के डोमेन से आ सकती हैं.

ऊपर दिए गए उदाहरण से, मान लें कि आपकी किसी ब्लॉग पोस्ट में में एक शानदार बिल्ली की तस्वीर मौजूद है और इसे /blog/img/amazing-cat.png. यह शानदार इमेज है, इसलिए कोई और उसका उपयोग सीधे अपनी साइट पर करता है. अगर कोई विज़िटर आपके ब्लॉग पर आया है और promo_shown कुकी, इसके बाद जब वे amazing-cat.png को दूसरी कुकी पर देखते हैं व्यक्ति की साइट पर मौजूद कुकी को इमेज के अनुरोध में भेजी जाएगी. यह किसी के लिए खास तौर पर काम का नहीं है, क्योंकि promo_shown का इस्तेमाल किसी काम के लिए नहीं किया जाता है इस व्यक्ति की साइट पर, यह सिर्फ़ अनुरोध में ओवरहेड जोड़ रहा है.

अगर यह कोई अनचाहा असर है, तो आपको ऐसा क्यों करना चाहिए? यह है ऐसी प्रणाली जो साइटों को स्थिति बनाए रखने की अनुमति देती है. तीसरे पक्ष से जुड़ी नीति का उल्लंघन करता है. उदाहरण के लिए, अगर आपने अपनी साइट पर कोई YouTube वीडियो एम्बेड किया है, वेबसाइट पर आने वाले लोगों को "बाद में देखें" का विकल्प प्लेयर में मौजूद होता है. अगर आपका विज़िटर ने पहले से ही YouTube में प्रवेश किया हुआ है, तो वह सत्र यहां उपलब्ध कराया जा रहा है किसी तीसरे पक्ष की कुकी का इस्तेमाल करके एम्बेड किया गया प्लेयर—इसका मतलब है कि "बाद में देखें" बटन वीडियो को साइन इन करने या ऐसा करने के लिए कहने के बजाय, बस एक बार में वीडियो को सेव कर लें इसी तरह, उन्हें अपने पेज से किसी दूसरी जगह पर और वापस YouTube पर ले जाया जा सकता है.

एक ही कुकी तीन अलग-अलग कॉन्टेक्स्ट में भेजी जा रही है
किसी तीसरे पक्ष के कॉन्टेक्स्ट में कुकी, अलग-अलग पेजों पर जाने पर भेजी जाती है.

वेब की सांस्कृतिक प्रॉपर्टी में से एक यह है कि यह सार्वजनिक रूप से डिफ़ॉल्ट. यह इस बात का हिस्सा है कि इतने सारे लोगों ने इसे बनाया है कॉन्टेंट और ऐप्लिकेशन मैनेज कर सकता है. हालांकि, इस वजह से सुरक्षा और निजता से जुड़ी चिंताएं दूर करें. किसी दूसरी साइट से किए जाने वाले जालसाज़ी (सीएसआरएफ) हमले यह तथ्य कि कुकी किसी दिए गए ऑरिजिन पर किसी भी अनुरोध से जुड़ी होती हैं, भले ही जो अनुरोध भेजता है. उदाहरण के लिए, अगर आप evil.example पर जाते हैं, तो यह काम कर सकेगा your-blog.example पर अनुरोध ट्रिगर करता है, जिससे आपका ब्राउज़र सही तरीके से अटैच हो जाएगा संबंधित कुकी. अगर आपका ब्लॉग इस बात को लेकर सावधान नहीं है कि वह उनकी पुष्टि कैसे करता है अनुरोध करेंगे, तो evil.example पोस्ट हटाने या जोड़ने जैसी कार्रवाइयां ट्रिगर कर सकता है कॉन्टेंट पब्लिश करने में मदद मिलती है.

उपयोगकर्ता यह भी समझ रहे हैं कि कुकी का इस्तेमाल करके उनकी गतिविधि को ट्रैक किया जा सकता है. हालांकि, अब तक ऐसा कोई तरीका नहीं था कुकी के साथ अपने इंटेंट के बारे में साफ़ तौर पर बताएं. आपकी promo_shown कुकी को इन्हें सिर्फ़ पहले-पक्ष के कॉन्टेक्स्ट में भेजा जा सकता है, जबकि विजेट के लिए सेशन कुकी जिसे दूसरी साइटों पर एम्बेड करने के मकसद से बनाया गया हो, ताकि तीसरे पक्ष के कॉन्टेक्स्ट में साइन-इन होने की स्थिति में.

सही SameSite एट्रिब्यूट सेट करके, कुकी के साथ अपने इंटेंट के बारे में साफ़ तौर पर बताया जा सकता है.

पहले-पक्ष की कुकी की पहचान करने और सही एट्रिब्यूट सेट करने के लिए, पहले-पक्ष की कुकी की रेसिपी देखें.