सीओईपी का इस्तेमाल करने वाले डेवलपर, अब तीसरे पक्ष के ऐसे 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 वर्शन में उपलब्ध करा रहे हैं.
अपनी वेबसाइट को अनाम आइफ़्रेम का इस्तेमाल करने की सुविधा देने के लिए, ऑरिजिन ट्रायल के लिए रजिस्टर करें:
- अपने ऑरिजिन के लिए टोकन का अनुरोध करें.
- टोकन का इस्तेमाल इनमें से किसी एक तरीके से करें:
- अपने एचटीएमएल में:
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 टैग की मदद से, रैंकिंग के लिए अनुरोध करना: पूरा हो गया
क्या <iframe anonymous>
में नेस्ट किए गए iframes की पहचान छिपी हुई है?
हां. यह इनहेरिट किया जाता है. किसी iframe की पहचान छिपाने के बाद, यह पूरे सबट्री में मौजूद सभी iframe पर लागू होता है. भले ही, उनमें anonymous
एट्रिब्यूट न हो.
क्या <iframe anonymous>
से बनाए गए पॉप-अप भी गुमनाम होते हैं?
पॉप-अप ऐसे खुलते हैं जैसे noopener
सेट किया गया हो. ये नए सामान्य टॉप-लेवल कॉन्टेक्स्ट से बनाए जाते हैं और इनमें उपयोगकर्ता की पहचान ज़ाहिर होती है. वे गुमनाम iframe से संपर्क नहीं कर सकते.
संसाधन
- COOP और COEP का इस्तेमाल करके, अपनी वेबसाइट को "क्रॉस-ऑरिजिन आइसोलेट" करना
- बेहतर सुविधाओं के लिए, आपको "अलग-अलग सोर्स से मिले डेटा को अलग-अलग सेव करना" सुविधा की ज़रूरत क्यों है
- क्रॉस-ऑरिजिन आइसोलेशन चालू करने के लिए गाइड
- Android के लिए Chrome 88 और डेस्कटॉप के लिए Chrome 92 में, SharedArrayBuffer से जुड़े अपडेट
COEP: credentialless
का इस्तेमाल करके, सीओआरपी हेडर के बिना क्रॉस-ऑरिजिन रिसॉर्स लोड करना