कोई डरावनी कुकी नहीं

कुकी को हमेशा ताज़ा रखना चाहिए. इसलिए, आपको नई-नई रेसिपी चाहिए, ताकि आप इस सीज़न में भी बिना किसी परेशानी के कुकी का आनंद ले सकें.

कुकी को हमेशा ताज़ा रखना चाहिए. इसलिए, आपको ऐसी नई रेसिपी चाहिए जिनसे आपको डराने-चौंकाने वाले सीज़न का आनंद, बिना किसी पुरानी कुकी के मिल सके.

हम वेब प्लैटफ़ॉर्म पर तीसरे पक्ष की कुकी का इस्तेमाल बंद करने की प्रोसेस पर काम कर रहे हैं. क्रॉस-साइट ट्रैकिंग को रोकने के लिए, यह एक अहम कदम है. हालांकि, यह एक लंबी प्रक्रिया का हिस्सा है. आइए, देखते हैं कि हमने अब तक कितनी तरक्की की है और आने वाले समय में हमें क्या-क्या मिलने वाला है…

कुकी, एक आसान कुंजी-वैल्यू स्टोर उपलब्ध कराती हैं, जिसे ब्राउज़र और सर्वर के बीच भेजा जाता है. इससे साइट पर काम की सुविधाएं मिल सकती हैं. जैसे, किसी सेटिंग को सेव करना: theme=bats या साइन इन किए हुए उपयोगकर्ता के लिए सेशन आईडी सेव करना.

तीसरे पक्ष की ऐसी कुकी जिसमें कोई सामान्य वैल्यू हो, जैसे कि theme=bats या fav_pumpkins=us-nyc

अगर उस कुकी का इस्तेमाल उसी साइट पर किया जा रहा है जिसने उसे सेट किया है, तो हम उसे पहले पक्ष की कुकी कहते हैं. अगर इसका इस्तेमाल, उसे सेट करने वाली साइट के बजाय किसी दूसरी साइट के हिस्से के तौर पर किया जा रहा है, तो हम उसे तीसरे पक्ष की कुकी कहते हैं. उदाहरण के लिए, अगर मैं उसी साइट पर जा रहा हूं जिसने मेरी theme=bats कुकी सेट की है, तो यह पहले पक्ष की कुकी होगी. हालांकि, अगर इसे किसी दूसरी साइट के हिस्से के तौर पर, iframe या दूसरी साइट के किसी अन्य रिसॉर्स में शामिल किया गया है, तो यह तीसरे पक्ष की कुकी होगी.

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

तीसरे पक्ष की कुकी, जिसमें एक यूनीक आईडी होता है. इससे तीसरे पक्ष की साइट, वेब पर किसी उपयोगकर्ता को ट्रैक कर सकती है

डिफ़ॉल्ट रूप से पहले पक्ष की कुकी

हमने इस दिशा में पहले ही काम शुरू कर दिया है! पहले, सिर्फ़ एक साधारण कुकी सेट करने पर: theme=pumpkins को सभी कॉन्टेक्स्ट में भेजा जाता था: एक ही साइट या क्रॉस-साइट! ज़्यादातर साइटें सिर्फ़ अपनी कुकी को एक ही साइट के कॉन्टेक्स्ट में भेजना चाहती हैं. इसे कुकी पर मौजूद SameSite एट्रिब्यूट की मदद से कंट्रोल किया जा सकता है. उदाहरण के लिए:

Set-Cookie: theme=bats; SameSite=Lax

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

इसलिए, अब SameSite=Lax डिफ़ॉल्ट है. अगर आपने सिर्फ़ theme=bats सेट किया है, तो इसे सिर्फ़ एक ही साइट के कॉन्टेक्स्ट में भेजा जाएगा.

SameSite=Lax की डिफ़ॉल्ट वैल्यू, तीसरे पक्ष के कॉन्टेक्स्ट में कुकी भेजने से रोकती है.

अगर आपको किसी दूसरी साइट या तीसरे पक्ष की कुकी चाहिए (शायद आपको एम्बेड किए गए विजेट में थीम दिखानी हो), तो आपको यह जानकारी देनी होगी:

Set-Cookie: theme=bats; SameSite=None; Secure
SameSite=None की साफ़ तौर पर दी गई वैल्यू, कुकी को क्रॉस-साइट कॉन्टेक्स्ट में भेजने के लिए मार्क करती है.

इससे ब्राउज़र को पता चलता है कि आपको कुकी को किसी भी क्रॉस-साइट कॉन्टेक्स्ट में भेजना है, लेकिन हमें सिर्फ़ सुरक्षित कनेक्शन पर पाबंदी लगानी है.

पहले-पक्ष की ज़्यादा बेहतर कुकी

डिफ़ॉल्ट रेसिपी थोड़ी बेहतर हो गई है, लेकिन उसमें अब भी सुधार किया जा सकता है. यहां इस सुविधा के बारे में खास जानकारी दी गई है:

Set-Cookie:  __Host-theme=bats;
  Secure;
  Path=/;
  HttpOnly;
  Max-Age=7776000;
  SameSite=Lax;

इससे आपको एक ऐसी फ़र्स्ट पार्टी कुकी मिलेगी जो सिर्फ़ एक डोमेन, सुरक्षित कनेक्शन, और JavaScript के ऐक्सेस पर पाबंदी के साथ काम करती है. साथ ही, यह कुकी अपने-आप खत्म हो जाती है, इससे पहले कि वह अमान्य हो जाए. और हां, यह सिर्फ़ एक ही साइट के लिए इस्तेमाल की जा सकती है.

CHIPS की मदद से कुकीज़ का स्वाद बेहतर होता है!

वेब की सबसे खास बात यह है कि एक साथ कई साइटें बनाई जा सकती हैं. मान लें कि मुझे एक ऐसा मैप विजेट बनाना है जिसकी मदद से, अन्य साइटें सबसे अच्छे कद्दू के खेत के टूर या ट्रिक-ऑर-ट्रीट के रास्ते दिखा सकें. मेरी सेवा, कुकी का इस्तेमाल करती है, ताकि उपयोगकर्ता अपने सफ़र की जानकारी सेव कर सकें. समस्या यह है कि तीसरे पक्ष की वही कुकी, 'ट्रिक-ऑर-ट्रीट' वाली साइट पर भेजी जाएगी जो कि कद्दू के खेत वाली साइट पर भेजी गई थी. मुझे साइटों के बीच उपयोगकर्ताओं को ट्रैक नहीं करना है, लेकिन ब्राउज़र सिर्फ़ एक कुकी जर्स का इस्तेमाल करता है—इसका इस्तेमाल अलग करने का कोई तरीका नहीं है!

SameSite=None वाली क्रॉस-साइट कुकी अब भी शेयर की गई कुकी के डिब्बे में जाती हैं.

ऐसे में, कुकीज़ हैविंग इंडिपेंडेंट पार्टिशन्ड स्टेट या सीएचआईपीएस का प्रस्ताव काम आता है. एक शेयर किए गए कुकी जार के बजाय, हर टॉप-लेवल साइट के लिए एक अलग और अलग-अलग हिस्सों में बांटा गया कुकी जार होता है. साइटें अपनी कुकी पर Partitioned एट्रिब्यूट का इस्तेमाल करके, इसके लिए ऑप्ट-इन करेंगी.

Set-Cookie: __Host-route=123;
  SameSite=None;
  Secure;
  Path=/;
  Partitioned;
कुकी पर मौजूद 'पार्टिशन किया गया' एट्रिब्यूट, हर टॉप-लेवल साइट के लिए अलग-अलग कुकी जार बनाता है

अब सभी को कुकी का अपना अलग-अलग जार मिलता है! यह तरीका आसान, सुरक्षित, और ज़्यादा हाइजीनिक है.

हमने Chrome 109 में, अलग-अलग सेक्शन में बांटी गई कुकी (सीएचआईपीएस) के लिए, रिलीज़ करने का अनुरोध भेजा है. इसका मतलब है कि ये कुकी, दिसंबर में बीटा वर्शन में टेस्ट करने के लिए उपलब्ध होंगी. इसके बाद, जनवरी 2023 में ये कुकी स्टैबल वर्शन के लिए तैयार हो जाएंगी. इसलिए, अगर आपको नए साल के लिए कोई संकल्प लेना है, तो अपनी साइट की कुकी रेसिपी को बेहतर बनाएं. इसके लिए, देखें कि क्या आपके पास अलग-अलग साइटों पर काम करने वाली कुकी में CHIPS का इस्तेमाल करने का विकल्प है!

फ़र्स्ट-पार्टी सेट की मदद से, कुकी को पार्टी में शामिल करना

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

हम फ़र्स्ट-पार्टी सेट के प्रस्ताव पर काम कर रहे हैं, ताकि इसे उपलब्ध कराया जा सके. हमने एक ऑरिजिन ट्रायल और कम्यूनिटी की कई चर्चाओं के बाद, इस नए वर्शन को लॉन्च किया है. इसका मकसद ये है:

  • संगठनों को ऐसी साइटों के ग्रुप को तय करने का तरीका दें जो एक-दूसरे के लिए एक ही पक्ष की होनी चाहिए.
  • उस फ़र्स्ट-पार्टी सेट में मौजूद, अलग-अलग साइटों पर सेव की गई कुकी का ऐक्सेस पाने के लिए, Storage Access API का इस्तेमाल करें.
पहले पक्ष के सेट, सिर्फ़ मिलती-जुलती साइटों के बीच शेयर की गई कुकी के कंटेनर की अनुमति देते हैं

ये कुकी अब भी ओवन में बेक हो रही हैं. हालांकि, अगर आपको और टेस्ट करने हैं, तो फ़र्स्ट-पार्टी सेट डेवलपर गाइड पर जाएं. इसके अलावा, अगर आपको इस बारे में चर्चा में हिस्सा लेना है, तो WICG/first-party-sets के प्रस्ताव पर जाएं.

अपनी कुकी को पुराना न होने दें!

हमारा मकसद, 2024 के मध्य से Chrome में तीसरे पक्ष की कुकी के इस्तेमाल को बंद करना है. तैयारी करने के लिए समय है, लेकिन आपको अभी से योजना बनानी चाहिए.

  1. SameSite=None वाली किसी भी कुकी के लिए, अपने कोड का ऑडिट करें. ये ऐसी कुकी हैं जिन्हें अपडेट करना होगा.
  2. अगर आपके पास कोई तीसरे पक्ष की कुकी नहीं है, तो पक्का करें कि आपकी साइट पर मौजूद कुकी, पहले पक्ष की कुकी के लिए सबसे अच्छी रेसिपी का इस्तेमाल कर रही हों
  3. अगर उन कुकी का इस्तेमाल, पूरी तरह से एम्बेड किए गए कॉन्टेक्स्ट में किया जाता है, तो CHIPS के प्रस्ताव की जांच करें और उसकी जांच करें.
  4. अगर आपको एक ग्रुप बनाने वाली कई साइटों पर उन कुकी की ज़रूरत है, तो पहले पक्ष के सेट के प्रस्ताव की जांच करें.
  5. अगर आपका ऐप्लिकेशन इनमें से किसी भी विकल्प के दायरे में नहीं आता है, तो आपको Privacy Sandbox के अन्य प्रस्तावों की जांच करनी होगी. इनमें, हम अलग-अलग इस्तेमाल के उदाहरणों के लिए, मकसद के हिसाब से बनाए गए एपीआई डेवलप कर रहे हैं. ये एपीआई, क्रॉस-साइट ट्रैकिंग पर निर्भर नहीं करते.

यह सिर्फ़ खास जानकारी है. आगे काम करते समय, हम इस बारे में ज़्यादा जानकारी और दिशा-निर्देश शेयर करते रहेंगे. अगर आपका कोई सवाल है, कोई समस्या है या आपको अपने काम के नतीजे शेयर करने हैं, तो हमसे संपर्क करने के कई तरीके हैं.

इसलिए, याद रखें: कुकी बहुत स्वादिष्ट हो सकती हैं—लेकिन एक बार में सिर्फ़ कुछ ही खाएं और किसी और की कुकी ज़रूर न चुराएं!