सीओईपी का इस्तेमाल करने वाले डेवलपर, अब तीसरे पक्ष के ऐसे iframe एम्बेड कर सकते हैं जो सीओईपी का इस्तेमाल नहीं करते.
हमें सीओईपी की ज़रूरत क्यों है
कुछ वेब एपीआई, साइड-चैनल हमलों का खतरा बढ़ाते हैं. जैसे, Spectre. इस जोखिम को कम करने के लिए, ब्राउज़र क्रॉस-ऑरिजिन आइसोलेशन नाम के ऑप्ट-इन-आधारित आइसोलेशन एनवायरमेंट की सुविधा देते हैं. इसमें सीओईपी को डिप्लॉय करना ज़रूरी होता है. इससे वेबसाइटों को खास सुविधाओं का इस्तेमाल करने की अनुमति मिलती है. इनमें SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
, और बेहतर रिज़ॉल्यूशन वाले ज़्यादा सटीक टाइमर शामिल हैं.
क्रॉस-ऑरिजिन आइसोलेशन की सुविधा चालू करने के लिए, वेबसाइटों को ये दो एचटीटीपी हेडर भेजने होंगे:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
सीओईपी चालू करने से जुड़ी चुनौतियां
क्रॉस-ऑरिजिन आइसोलेशन की मदद से, वेबपेजों को बेहतर सुरक्षा मिलती है. साथ ही, इसमें बेहतर सुविधाएं चालू करने की सुविधा भी मिलती है. हालांकि, सीओईपी को डिप्लॉय करना मुश्किल हो सकता है. सबसे बड़ी चुनौती यह है कि सभी क्रॉस-ऑरिजिन iframe को भी COEP और CORP को डिप्लॉय करना होगा. ब्राउज़र, उन हेडर के बिना iframe लोड नहीं करेगा.
आम तौर पर, iframe किसी तीसरे पक्ष की ओर से दिखाए जाते हैं. ऐसे में, हो सकता है कि उनके लिए सीओईपी को डिप्लॉय करना आसान न हो.
पहचान छिपाने वाले iframe की मदद से
ऐसे में, पहचान छिपाकर विज्ञापन दिखाने वाला iframe काम आता है. <iframe>
एलिमेंट में anonymous
एट्रिब्यूट जोड़ने पर, iframe को किसी दूसरे, कुछ समय के लिए इस्तेमाल होने वाले स्टोरेज से लोड किया जाता है. साथ ही, अब उस पर सीओईपी की पाबंदियां लागू नहीं होतीं.
उदाहरण:
<iframe anonymous src="https://example.com">
इफ़्रेम, एक नए इफ़ेमरल कॉन्टेक्स्ट में बनाया जाता है. साथ ही, उसके पास टॉप लेवल वेबसाइट से जुड़ी किसी भी कुकी का ऐक्सेस नहीं होता. यह खाली कुकी jar से शुरू होता है. इसी तरह, स्टोरेज एपीआई, जैसे कि
LocalStorage
,
CacheStorage
, IndexedDB
वगैरह, नए इफ़ेमरल पार्टीशन में डेटा लोड और स्टोर कर रहे हैं. बंटवारे का दायरा, मौजूदा टॉप लेवल दस्तावेज़ और iframe के ऑरिजिन तक है. टॉप-लेवल दस्तावेज़ को अनलोड करने के बाद, स्टोरेज खाली हो जाएगा.
बिना पहचान वाले iframe पर, सीओईपी के एम्बेड करने के नियम लागू नहीं होते. हालांकि, यह तरीका अब भी सुरक्षित है, क्योंकि हर बार उन्हें नए खाली कॉन्टेक्स्ट से लोड किया जाता है. उन्हें उनके डेटा को निजी बनाने के बिना डाउनलोड किया जाएगा. इनमें सिर्फ़ सार्वजनिक डेटा होता है, जो किसी हमलावर के लिए ज़्यादा अहम नहीं होता.
डेमो
पहचान छिपाने वाला iframe देखने के लिए यहां जाएं: https://anonymous-iframe.glitch.me/
ऑरिजिन ट्रायल के लिए रजिस्टर करें
यह पक्का करने के लिए कि पहचान छिपाने वाले iframe, क्रॉस ऑरिजिन आइसोलेशन को अपनाने में डेवलपर की मदद कर रहे हैं, हम उन्हें Chrome में ऑरिजिन ट्रायल के तौर पर वर्शन 106 से 108 तक उपलब्ध करा रहे हैं.
अपनी वेबसाइट को अनाम iframes का इस्तेमाल करने की सुविधा देने के लिए, ऑरिजिन ट्रायल के लिए रजिस्टर करें:
- अपने ऑरिजिन के लिए टोकन का अनुरोध करें.
- टोकन का इस्तेमाल इनमें से किसी एक तरीके से करें:
- आपके एचटीएमएल में:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- अपने JavaScript में:
js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
- एचटीटीपी हेडर में:
text Origin-Trial: TOKEN_GOES_HERE
- आपके एचटीएमएल में:
- अपने पेज पर अनाम iframe जोड़ें:
html <iframe anonymous src="https://example.com">
अगर आपको इस सुविधा के बारे में कोई सुझाव/राय देनी है, शिकायत करनी है या कोई समस्या बतानी है, तो GitHub रिपॉज़िटरी में समस्या दर्ज करें.
तीसरे पक्ष का ऑरिजिन ट्रायल
ऑरिजिन ट्रायल, तीसरे पक्ष की स्क्रिप्ट के लिए भी उपलब्ध है. इसका मतलब है कि पेज पर एम्बेड की गई स्क्रिप्ट की मदद से, इसे चालू किया जा सकता है.
तीसरे पक्ष के ऑरिजिन ट्रायल के लिए रजिस्टर करने के तरीके के बारे में ज़्यादा जानें.
अक्सर पूछे जाने वाले सवाल
क्या यह सुविधा अन्य ब्राउज़र में भी इस्तेमाल की जाएगी?
- Mozilla से पोज़िशन के लिए अनुरोध: मंज़ूरी बाकी है
- जगह की जानकारी के लिए वेबवर्क का अनुरोध: कोई सिग्नल नहीं
- W3C TAG पोज़िशन के लिए अनुरोध: संतुष्ट
क्या <iframe anonymous>
में नेस्ट किए गए iframes की पहचान छिपी हुई है?
हां. इसे इनहेरिट किया जाता है. किसी iframe की पहचान छिपाने के बाद, यह पूरे सबट्री में मौजूद सभी iframe पर लागू होता है. भले ही, उनमें anonymous
एट्रिब्यूट न हो.
क्या <iframe anonymous>
से बनाए गए पॉप-अप भी गुमनाम होते हैं?
पॉप-अप ऐसे खुलते हैं जैसे noopener
सेट किया गया हो. ये नए सामान्य टॉप-लेवल कॉन्टेक्स्ट से बनाए जाते हैं और इनमें उपयोगकर्ता की पहचान ज़ाहिर होती है. वे बिना नाम वाले iframe से
कम्यूनिकेशन नहीं कर सकते.
संसाधन
- COOP और COEP का इस्तेमाल करके, अपनी वेबसाइट को "क्रॉस-ऑरिजिन आइसोलेटेड" बनाना
- बेहतर सुविधाओं के लिए, आपको "क्रॉस-ऑरिजिन आइसोलेटेड" की ज़रूरत क्यों है
- क्रॉस-ऑरिजिन आइसोलेशन चालू करने के लिए गाइड
- Android Chrome 88 और डेस्कटॉप Chrome 92 के लिए SharedArrayBuffer के अपडेट
COEP: credentialless
का इस्तेमाल करके, सीओआरपी हेडर के बिना क्रॉस-ऑरिजिन रिसॉर्स लोड करना