पहचान छिपाने वाला iframe ऑरिजिन ट्रायल: सीओईपी एनवायरमेंट में आसानी से iframe जोड़ें

आर्थर सॉन्ज़ोनी
आर्थर सनज़ोनी

सीओईपी का इस्तेमाल करने वाले डेवलपर अब तीसरे पक्ष के ऐसे 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 इस्तेमाल करने की सुविधा देने के लिए, ऑरिजिन ट्रायल के लिए रजिस्टर करें:

  1. अपने ऑरिजिन के लिए टोकन का अनुरोध करें.
  2. इनमें से किसी एक तरीके से टोकन का इस्तेमाल करें:
    • आपके एचटीएमएल में: 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
  3. अपने पेज पर पहचान छिपाने वाला iframe जोड़ें: html <iframe anonymous src="https://example.com">

अगर इस सुविधा के बारे में आपका कोई सुझाव, शिकायत या राय है, तो GitHub रिपॉज़िटरी में समस्या की शिकायत करें.

तीसरे पक्ष का ऑरिजिन ट्रायल

ऑरिजिन ट्रायल, तीसरे पक्ष की स्क्रिप्ट के लिए भी उपलब्ध है. इसका मतलब है कि इसे पेज पर एम्बेड की गई स्क्रिप्ट की मदद से चालू किया जा सकता है.

लेरन ने तीसरे पक्ष के ऑरिजिन ट्रायल के लिए रजिस्टर करने के बारे में ज़्यादा जानकारी दी है.

अक्सर पूछे जाने वाले सवाल

क्या यह सुविधा दूसरे ब्राउज़र में काम करेगी?

क्या <iframe anonymous> में iframe मौजूद हैं?

हां. यह इनहेरिट किया गया है. अगर किसी iframe की पहचान छिपाई गई है, तो जो पूरे सबट्री के सभी iframe पर लागू होता है, भले ही anonymous एट्रिब्यूट न हो.

क्या <iframe anonymous> से बनाए गए पॉप-अप की पहचान भी नहीं की जाती?

पॉप-अप ऐसे खुलते हैं जैसे noopener को सेट किया गया हो. इन्हें एक नए सामान्य टॉप लेवल कॉन्टेक्स्ट से बनाया जाता है और यह पहचान छिपाने वाला नहीं होता है. वे बिना नाम वाले iframe से कम्यूनिकेशन नहीं कर सकते.

रिसॉर्स