पॉप-अप के साथ इंटरैक्ट करते समय, क्रॉस-ऑरिजिन आइसोलेशन और क्रॉस-साइट लीक से सुरक्षा पाएं.
क्रॉस-ओरिजिन ओपनर पॉलिसी (COOP) के लिए एक नई वैल्यू उपलब्ध है: restrict-properties
. इससे सुरक्षा से जुड़े फ़ायदे मिलते हैं. साथ ही, क्रॉस-ऑरिजिन आइसोलेशन को अपनाना आसान हो जाता है. साथ ही, आपकी साइट को पेमेंट, पुष्टि करने या अन्य इस्तेमाल के उदाहरणों के लिए, तीसरे पक्ष के पॉप-अप के साथ इंटरैक्ट करने की अनुमति मिलती है.
restrict-properties
को आज़माने के लिए, Chrome 116 से शुरू होने वाले ऑरिजिन ट्रायल में हिस्सा लें.
restrict-properties
का इस्तेमाल क्यों करें
restrict-properties
के इस्तेमाल के दो मुख्य उदाहरण हैं:
- बिना किसी रुकावट के क्रॉस-साइट लीक को रोकना.
- अपनी साइट को क्रॉस-ऑरिजिन आइसोलेटेड बनाएं.
बिना किसी रुकावट के, एक साइट से दूसरी साइट पर डेटा लीक होने से रोकना
डिफ़ॉल्ट रूप से, कोई भी वेबसाइट आपके ऐप्लिकेशन को पॉप-अप में खोल सकती है और उसका रेफ़रंस पा सकती है.
नुकसान पहुंचाने वाली कोई वेबसाइट, इसका फ़ायदा उठाकर क्रॉस-साइट लीक जैसे हमले कर सकती है.
इस जोखिम को कम करने के लिए, Cross-Origin-Opener-Policy
(COOP) हेडर का इस्तेमाल किया जा सकता है.
अब तक, Cross-Origin-Opener-Policy
के लिए आपके विकल्प सीमित थे. आपके पास इनमें से कोई एक विकल्प है:
same-origin,
सेट करें. इससे पॉप-अप के साथ सभी क्रॉस-ऑरिजिन इंटरैक्शन ब्लॉक हो जाते हैं.same-origin-allow-popups
सेट करें. इससे आपकी साइट को पॉप-अप में खोलने वाले सभी क्रॉस-ऑरिजिन इंटरैक्शन ब्लॉक हो जाएंगे.unsafe-none
सेट करें. यह पॉप-अप के साथ सभी क्रॉस-ऑरिजिन इंटरैक्शन की अनुमति देता है.
इस वजह से, उन वेबसाइटों के लिए सीओओपी लागू करना मुश्किल हो गया था जिन्हें पॉप-अप में खोलने की ज़रूरत होती है और जिन्हें खोलने वाले उपयोगकर्ता के साथ इंटरैक्ट करना होता है. इस वजह से, एक बार साइन इन करने की सुविधा और पेमेंट जैसे मुख्य इस्तेमाल के उदाहरणों को क्रॉस-साइट लीक से सुरक्षित नहीं रखा जा सका.
Cross-Origin-Opener-Policy: restrict-properties
से यह समस्या हल हो जाती है.
restrict-properties
में ऐसी प्रॉपर्टी उपलब्ध नहीं हैं जिनका इस्तेमाल फ़्रेम की गिनती करने और दूसरी जगहों पर लीक होने वाले हमलों के लिए किया जा सकता है. हालांकि, विंडो के बीच postMessage
और closed
से होने वाले बुनियादी कम्यूनिकेशन की अनुमति है.
इससे साइट की सुरक्षा बेहतर होती है. साथ ही, इस्तेमाल के मुख्य उदाहरणों को भी बनाए रखा जाता है. उदाहरण के लिए:
- अगर आपने पॉप-अप में कोई सेवा दी है, तो
Cross-Origin-Opener-Policy: restrict-properties
सेट करने पर, आपको क्रॉस-साइट लीक के कई तरह के हमलों से सुरक्षा मिलेगी. अब भी वे सभी पेज खोले जा सकते हैं जो पहले खोले जा सकते थे. - अगर आपको किसी क्रॉस-ऑरिजिन पॉप-अप को ऐक्सेस करना है, तो
Cross-Origin-Opener-Policy: restrict-properties
सेटिंग से आपकी साइट को iframe की गिनती से बचाया जा सकता है. आपको वही पॉप-अप दिखेंगे जो आज दिख रहे हैं. - अगर पेज को खोलने वाला और खोलने वाला, दोनों हेडर सेट करते हैं और पेज क्रॉस-ऑरिजिन हैं, तो यह उसी तरह काम करता है जैसे कि उनमें से किसी एक ने हेडर सेट किया हो. अगर वे एक ही ऑरिजिन के हैं, तो उन्हें पूरा ऐक्सेस दिया जाता है.
अपनी साइट के क्रॉस-ऑरिजिन को आइसोलेटेड बनाएं
हमें क्रॉस-ऑरिजिन आइसोलेशन की ज़रूरत क्यों है
कुछ वेब एपीआई, Spectre जैसे साइड-चैनल हमलों का खतरा बढ़ाते हैं. इस खतरे को कम करने के लिए, ब्राउज़र ऑप्ट-इन के आधार पर अलग-अलग एनवायरमेंट उपलब्ध कराते हैं. इसे क्रॉस-ऑरिजिन आइसोलेशन कहा जाता है. क्रॉस-ओरिजन आइसोलेटेड स्टेटस की मदद से, वेबपेज बेहतर रिज़ॉल्यूशन के साथ SharedArrayBuffer, performance.measureUserAgentSpecificMemory(), और हाई-प्रिसिज़न टाइमर जैसी खास सुविधाओं का इस्तेमाल कर सकता है. साथ ही, ओरिजिन को तब तक दूसरे ओरिजिन से अलग रखता है, जब तक वे ऑप्ट इन नहीं कर लेते.
अब तक, इन एपीआई का इस्तेमाल करने के लिए, आपको Cross-Origin-Opener-Policy:
same-origin
सेट करना पड़ता था. हालांकि, इससे किसी भी क्रॉस-ऑरिजिन पॉप-अप फ़्लो में रुकावट आएगी. जैसे, सिंगल साइन-ऑन और पेमेंट.
क्रॉस-ऑरिजिन आइसोलेशन चालू करने के लिए, अब Cross-Origin-Opener-Policy: same-origin
के बजाय Cross-Origin-Opener-Policy: restrict-properties
का इस्तेमाल किया जा सकता है.
यह ओपनर के साथ संबंध को खत्म करने के बजाय, उसे window.postMessage()
और window.closed
के कम से कम कम्यूनिकेशन सबसेट तक सीमित कर देता है.
इन दो हेडर की मदद से, क्रॉस-ऑरिजिन आइसोलेशन की सुविधा चालू की जा सकती है:
Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: require-corp
या
Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: credentialless
credentialless
के बारे में ज़्यादा जानने के लिए, COEP: credentialless
का इस्तेमाल करके, सीओआरपी हेडर के बिना क्रॉस-ऑरिजिन रिसॉर्स लोड करें पर जाएं.
डेमो
क्रॉस-ऑरिजिन आइसोलेशन डेमो में, हेडर के अलग-अलग विकल्प आज़माएं.
ऑरिजिन ट्रायल को आज़माना
Cross-Origin-Opener-Policy: restrict-properties
को आज़माने के लिए, ओरिजिन ट्रायल के लिए ऑप्ट इन करें.
ब्राउज़र समर्थन
फ़िलहाल, Cross-Origin-Opener-Policy: restrict-properties
की सुविधा सिर्फ़ Chrome पर काम करती है. अन्य ब्राउज़र, स्टैंडर्ड बनाने के लिए चर्चा में सक्रिय रूप से शामिल हैं.
अक्सर पूछे जाने वाले सवाल
मेरी वेबसाइट को एक ही ऑरिजिन के पॉप-अप के साथ कम्यूनिकेट करना है. क्या मुझे क्रॉस-ऑरिजिन आइसोलेशन की सुविधा चालू करने के लिए, COOP: restrict-properties
का इस्तेमाल करना चाहिए?
पॉप-अप और मुख्य पेज, दोनों पर COOP: restrict-properties
सेट करने से पाबंदियां नहीं लगेंगी. इसे या तो सिर्फ़ पॉप-अप या सिर्फ़ मुख्य पेज पर सेट करने से, ओपनर पर postMessage
और closed
के अलावा, कोई भी अन्य प्रॉपर्टी ऐक्सेस नहीं की जा सकेगी. भले ही, वे एक ही ऑरिजिन से हों.
क्या अनुमति वाली प्रॉपर्टी का सेट तय है?
अब तक मिले सुझावों के आधार पर, हमें लगता है कि window.postMessage
और window.closed
, ज़्यादातर वर्कफ़्लो के लिए काफ़ी हैं. हालांकि, हम इसे अन्य प्रॉपर्टी के लिए भी उपलब्ध कराने पर विचार कर रहे हैं. अगर आपके पास ऐसा इस्तेमाल का उदाहरण है जिसे सिर्फ़ postMessage
और closed
का इस्तेमाल करके हल नहीं किया जा सकता, तो प्रयोग करने के इंटेंट वाली थ्रेड पर अपना सुझाव/राय दें या शिकायत करें.
संसाधन
- COOP और COEP का इस्तेमाल करके, अपनी वेबसाइट को "क्रॉस-ऑरिजिन आइसोलेटेड" बनाना
- बेहतर सुविधाओं के लिए, "अलग-अलग सोर्स से आने वाले अनुरोधों को अलग-अलग सेशन में रखना" सुविधा की ज़रूरत क्यों है
- क्रॉस-ऑरिजिन आइसोलेशन चालू करने के लिए गाइड
- Android के लिए Chrome 88 और डेस्कटॉप के लिए Chrome 92 में SharedArrayBuffer से जुड़े अपडेट
COEP: credentialless
का इस्तेमाल करके, CORP हेडर के बिना क्रॉस-ऑरिजिन संसाधन लोड करना - Chrome डेवलपर- अनाम iframe ऑरिजिन ट्रायल: सीओईपी (क्लाइंट-ऑन-एंड-प्रॉक्सी) एनवायरमेंट में आसानी से iframe एम्बेड करना - Chrome Developers