Chrome 135 से, सैंडबॉक्स की allow-same-site-none-cookies की नई वैल्यू

Chrome 135 से, नई sandbox वैल्यू का इस्तेमाल किया जा सकता है: allow-same-site-none-cookies. अगर इस नीति को लागू किया जाता है और तीसरे पक्ष की कुकी उपलब्ध नहीं होती हैं, तो ब्राउज़र सिर्फ़ SameSite=None कुकी भेजेगा. ये कुकी, पहले पक्ष के सैंडबॉक्स किए गए iframe से जनरेट होने वाले एचटीटीपी अनुरोधों में भेजी जाएंगी.

सैंडबॉक्स किया गया iframe क्या होता है?

सैंडबॉक्स किए गए iframe ऐसे iframe होते हैं जिन पर खास पाबंदियां लागू होती हैं. इन्हें null, ओपेक ऑरिजिन के तौर पर माना जाता है. डिफ़ॉल्ट रूप से, सैंडबॉक्स किए गए iframe में स्क्रिप्ट, फ़ॉर्म, और पॉप-अप जैसी संभावित रूप से नुकसान पहुंचाने वाली सुविधाएं उपलब्ध नहीं होती हैं.

sandbox एट्रिब्यूट का इस्तेमाल करके, यह तय करें कि सैंडबॉक्स किए गए iframe में कौनसी सुविधाएं उपलब्ध होनी चाहिए. उदाहरण के लिए:

 <iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>

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

हमें इस नई नीति की ज़रूरत क्यों है?

allow-same-site-none-cookies के लॉन्च होने से पहले, सैंडबॉक्स किए गए iframe में कुकी के दो तरह के इस्तेमाल को कॉन्फ़िगर किया जा सकता था:

  • sandbox एट्रिब्यूट में allow-same-origin टोकन न होने पर, iframe के ऑरिजिन को null के तौर पर सीरियलाइज़ किया जाता है. इससे सैंडबॉक्स किए गए पेज से किए गए सभी अनुरोध, दूसरी साइट के अनुरोध बन जाते हैं. इस मामले में, अनुरोधों में सिर्फ़ SameSite=None वाली कुकी शामिल की जाएंगी.
  • sandbox एट्रिब्यूट में allow-same-origin टोकन का इस्तेमाल करने पर, अनुरोधों को iframe के असली ऑरिजिन से आने वाले अनुरोधों के तौर पर माना जाता है. इससे, SameSite की किसी भी वैल्यू वाली कुकी भेजी जा सकती हैं.

तीसरे पक्ष की कुकी ब्लॉक होने पर, allow-same-origin के बिना सैंडबॉक्स किए गए iframe से कोई भी कुकी नहीं भेजी जा सकती. हालांकि, allow-same-site-none-cookies को चालू करने पर ऐसा किया जा सकता है.

allow-same-origin वाला iframe, एक ही साइट से किए गए अनुरोधों में अब भी कुकी शामिल कर पाएगा. भले ही, तीसरे पक्ष की कुकी ब्लॉक कर दी गई हों. हालांकि, इससे पूरे ऑरिजिन का कुकी जार, संभावित रूप से नुकसान पहुंचाने वाली वेब गतिविधि के संपर्क में आ जाएगा.

allow-same-site-none-cookies की मदद से, कोई iframe एचटीटीपी अनुरोधों में SameSite=None कुकी भेज सकता है. हालांकि, संभावित रूप से संवेदनशील SameSite=Strict और SameSite=Lax कुकी शामिल नहीं की जाएंगी.

प्रैक्टिकल उदाहरण

मान लें कि practice-coding.example एक ऐसी साइट है जो लोगों को कस्टम कोडिंग प्रोजेक्ट बनाने और चलाने की सुविधा देती है. साथ ही, उन्हें अन्य लोगों के कोड को एम्बेड करने की सुविधा भी देती है. इस सेवा का इस्तेमाल करने के लिए, उपयोगकर्ताओं को साइन इन करना होगा. इससे SameSite=Strict सेशन कुकी सेट हो जाएगी.

कोई दूसरा उपयोगकर्ता, practice-coding.example/cookie-theft नाम का प्रोजेक्ट बनाता है. अन्य उपयोगकर्ता, इस प्रोजेक्ट को बिना जानकारी के अपने प्रोजेक्ट में iframe के तौर पर एम्बेड कर सकते हैं. अगर SameSite=Strict और SameSite=Lax कुकी, practice-coding.example/cookie-theft iframe को दिखती हैं, तो नुकसान पहुंचाने वाला व्यक्ति, अन्य लोगों की सेशन कुकी चुरा सकता है.

इस स्थिति में, साइट का मालिक ऐसी कुकी के ऐक्सेस पर पाबंदी लगा सकता है जो संवेदनशील हो सकती हैं. हालांकि, वे सैंडबॉक्स किए गए iframe में SameSite=None कुकी को अनुमति देना चाहें. उदाहरण के लिए, practice-coding.example/coding-interview सैंडबॉक्स किए गए iframe को SameSite=None कुकी की ज़रूरत पड़ सकती है, ताकि उम्मीदवार अपने कोड पर फिर से जा सकें. allow-same-site-none-cookies से पूरे कुकी जार को दिखाने से रोका जाता है. हालांकि, इससे ज़रूरी SameSite=None कुकी को अनुमति दी जाती है.

मैं पहले पक्ष के सैंडबॉक्स फ़्रेम में सिर्फ़ SameSite=None की अनुमति कैसे दूं?

पहले पक्ष के सैंडबॉक्स वाले पेजों से किए गए अनुरोधों में SameSite=None कुकी चालू करने के लिए, iframe टैग में allow-same-site-none-cookies टोकन डालें. उदाहरण के लिए:

 <iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>

Content-Security-Policy एचटीटीपी हेडर की मदद से, allow-same-site-none-cookies नीति भी सेट की जा सकती है:

Content-Security-Policy: sandbox allow-same-site-none-cookies;

हमारे डेमो के साथ, इसे खुद आज़माकर देखें.

उपयोग करना और सुझाव/राय देना या शिकायत करना

सुझाव/राय देने या समस्याओं की शिकायत करने के लिए, समस्या फ़ाइल करें. इसके अलावा, GitHub पर चर्चा में शामिल हों.