सीओईपी का इस्तेमाल करने वाले डेवलपर अब तीसरे पक्ष के ऐसे iframe एम्बेड कर सकते हैं जो खुद COEP का इस्तेमाल नहीं करते.
हमें सीओईपी की ज़रूरत क्यों है
कुछ वेब एपीआई से साइड-चैनल हमले का खतरा बढ़ जाता है, जैसे कि
Spectre. इस जोखिम को कम करने के लिए, ब्राउज़र क्रॉस-ऑरिजिन आइसोलेशन नाम के ऑप्ट-इन-आधारित आइसोलेटेड एनवायरमेंट की सुविधा देते हैं. इसके अलावा, सीओईपी को डिप्लॉय करना ज़रूरी होता है. इससे वेबसाइटों को कुछ खास सुविधाओं का इस्तेमाल करने की अनुमति मिल जाती है. इनमें SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
, और बेहतर रिज़ॉल्यूशन वाले ज़्यादा सटीक टाइमर शामिल हैं.
क्रॉस-ऑरिजिन आइसोलेशन चालू करने के लिए, वेबसाइटों को ये दो एचटीटीपी हेडर भेजने होंगे:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
सीओईपी को चालू करने में आने वाली चुनौतियां
क्रॉस-ऑरिजिन आइसोलेशन से, वेबपेजों को बेहतर सुरक्षा मिलती है और इसमें असरदार सुविधाओं को चालू किया जा सकता है. हालांकि, सीओईपी को डिप्लॉय करना मुश्किल हो सकता है. सबसे बड़ी चुनौतियों में से एक यह है कि सभी क्रॉस-ऑरिजिन iframe को भी COEP और CORP डिप्लॉय करना होगा. बिना हेडर वाले Iframe को ब्राउज़र लोड नहीं करेगा.
iframe आम तौर पर ऐसे तीसरे पक्ष की ओर से दिए जाते हैं जिनके लिए COEP को डिप्लॉय करना आसान नहीं होता.
बचाव के लिए छिपाई गई पहचान वाला iframe
ऐसी ही स्थिति में अनाम iframe का काम आता है. <iframe>
एलिमेंट में anonymous
एट्रिब्यूट जोड़ने पर, iframe को एक अलग और इफ़ेमरल स्टोरेज पार्टीशन से लोड किया जाता है. साथ ही, इस पर सीओईपी से जुड़ी पाबंदियां लागू नहीं होती हैं.
उदाहरण:
<iframe anonymous src="https://example.com">
Iframe को कुछ समय के लिए नए संदर्भ में बनाया गया है और उसके पास टॉप लेवल की वेबसाइट
से जुड़ी किसी भी कुकी का ऐक्सेस नहीं है. यह खाली कुकी जार से शुरू होता है. इसी तरह, LocalStorage
, CacheStorage
, IndexedDB
वगैरह जैसे स्टोरेज एपीआई, कुछ समय के लिए बनाए गए नए पार्टीशन में डेटा को लोड और सेव कर रहे हैं. यह हिस्सा, मौजूदा टॉप लेवल के दस्तावेज़ और iframe के ऑरिजिन तक सीमित है. टॉप-लेवल का दस्तावेज़ अनलोड होने के बाद, स्टोरेज को खाली कर दिया जाएगा.
बिना नाम वाले iframe पर, COEP एम्बेड करने से जुड़े नियम लागू नहीं होते. यह अब भी सुरक्षित है, क्योंकि इन्हें हर बार एक नए खाली कॉन्टेक्स्ट से लोड किया जाता है. उन्हें उनके हिसाब से बनाए गए डेटा के बिना लोड किया जाएगा. इनमें सिर्फ़ सार्वजनिक डेटा होता है, जो किसी हमलावर के लिए अहम नहीं होता.
डेमो
पहचान छिपाने वाला iframe देखने के लिए, यहां जाएं: https://anonymous-iframe.glitch.me/
ऑरिजिन ट्रायल के लिए रजिस्टर करना
यह पक्का करने के लिए कि पहचान छिपाने वाले iframe, क्रॉस ऑरिजिन आइसोलेशन अपनाने में डेवलपर की मदद कर रहे हैं, हम उन्हें Chrome में वर्शन 106 से 108 तक के वर्शन के लिए ऑरिजिन ट्रायल के तौर पर उपलब्ध करा रहे हैं.
अपनी वेबसाइट को पहचान छिपाने वाले iframe इस्तेमाल करने की सुविधा देने के लिए, ऑरिजिन ट्रायल के लिए रजिस्टर करें:
- अपने ऑरिजिन के लिए टोकन का अनुरोध करें.
- इनमें से किसी एक तरीके से टोकन का इस्तेमाल करें:
- आपके एचटीएमएल में:
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>
में iframe मौजूद हैं?
हां. यह इनहेरिट किया गया है. अगर किसी iframe की पहचान छिपाई गई है, तो जो पूरे सबट्री के सभी iframe पर लागू होता है, भले ही anonymous
एट्रिब्यूट न हो.
क्या <iframe anonymous>
से बनाए गए पॉप-अप की पहचान भी नहीं की जाती?
पॉप-अप ऐसे खुलते हैं जैसे noopener
को सेट किया गया हो. इन्हें एक नए सामान्य टॉप लेवल कॉन्टेक्स्ट से बनाया जाता है और यह पहचान छिपाने वाला नहीं होता है. वे बिना नाम वाले iframe से
कम्यूनिकेशन नहीं कर सकते.
रिसॉर्स
- सीओओपी और सीओईपी का इस्तेमाल करके, अपनी वेबसाइट को "क्रॉस-ऑरिजिन आइसोलेटेड" बनाना
- बेहतरीन सुविधाओं के लिए, आपको "क्रॉस-ऑरिजिन आइसोलेटेड" की ज़रूरत क्यों है
- क्रॉस-ऑरिजिन आइसोलेशन चालू करने के लिए गाइड
- Android Chrome 88 और डेस्कटॉप Chrome 92 में SharedArrayBuffer के अपडेट
COEP: credentialless
का इस्तेमाल करके, सीओआरपी हेडर के बिना क्रॉस-ऑरिजिन रिसॉर्स लोड करें