पहचान छिपाने वाला 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 वर्शन में उपलब्ध करा रहे हैं.

अपनी वेबसाइट को अनाम आइफ़्रेम का इस्तेमाल करने की सुविधा देने के लिए, ऑरिजिन ट्रायल के लिए रजिस्टर करें:

  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 से संपर्क नहीं कर सकते.

संसाधन