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

Natalia Markoborodova
Natalia Markoborodova

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

सैंडबॉक्स किया गया 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 वैल्यू वाली कुकी भेजी जा सकती हैं.

तीसरे पक्ष की कुकी ब्लॉक होने पर, सैंडबॉक्स किए गए ऐसे iframe में कोई कुकी नहीं भेजी जा सकती जिसमें allow-same-origin न हो. ऐसा तब तक नहीं किया जा सकता, जब तक 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 पर चर्चा में शामिल हों.