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 पर चर्चा में शामिल हों.