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

Arthur Sonzogni
Arthur Sonzogni

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

  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> में नेस्ट किए गए iframes की पहचान छिपी हुई है?

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

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

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

संसाधन