एक ही ऑरिजिन से जुड़ी नीति

Mariko Kosaka

एक ही ऑरिजिन से जुड़ी नीति, ब्राउज़र की सुरक्षा से जुड़ी एक सुविधा है. इससे यह तय होता है कि एक ऑरिजिन के दस्तावेज़ और स्क्रिप्ट, दूसरे ऑरिजिन के रिसॉर्स के साथ कैसे इंटरैक्ट कर सकती हैं.

ब्राउज़र एक साथ कई साइटों के संसाधन लोड और दिखा सकता है. ऐसा हो सकता है कि आपने एक ही समय पर कई टैब खोले हों या कोई साइट, अलग-अलग साइटों के कई iframe एम्बेड कर सकती है. अगर इन रिसॉर्स के बीच इंटरैक्शन पर कोई पाबंदी नहीं है और किसी हमलावर ने किसी स्क्रिप्ट को हैक कर लिया है, तो वह स्क्रिप्ट उपयोगकर्ता के ब्राउज़र में मौजूद सारी जानकारी को ज़ाहिर कर सकती है.

एक ही ऑरिजिन से जुड़ी नीति, किसी दूसरे ऑरिजिन से लोड किए गए संसाधनों को पढ़ने का ऐक्सेस ब्लॉक करके, ऐसा होने से रोकती है. "लेकिन रुकिए," आप कहें, "मैं हर समय दूसरे ऑरिजिन से इमेज और स्क्रिप्ट लोड करता/करती हूं." ब्राउज़र, कुछ टैग को किसी दूसरे ऑरिजिन से संसाधन एम्बेड करने की अनुमति देते हैं. यह नीति ज़्यादातर पुरानी है और इससे आपकी साइट को iframes का इस्तेमाल करके क्लिक जैकिंग जैसी समस्याओं का सामना करना पड़ सकता है. कॉन्टेंट की सुरक्षा से जुड़ी नीति का इस्तेमाल करके, इन टैग को क्रॉस-ऑरिजिन रीडिंग से रोका जा सकता है.

सेम-ऑरिजिन किसे माना जाता है?

ऑरिजिन को स्कीम (इसे प्रोटोकॉल भी कहा जाता है, उदाहरण के लिए एचटीटीपी या एचटीटीपीएस), पोर्ट (अगर यह तय किया गया है), और होस्ट से तय किया जाता है. जब दो यूआरएल के लिए ये तीनों एक जैसे हों, तो उन्हें एक ही ऑरिजिन माना जाता है. उदाहरण के लिए, http://www.example.com/foo और http://www.example.com/bar एक ही ऑरिजिन हैं, लेकिन https://www.example.com/bar नहीं, क्योंकि स्कीम अलग है.

क्या-क्या अनुमति है और क्या-क्या ब्लॉक है?

आम तौर पर, क्रॉस-ऑरिजिन रिसॉर्स को एम्बेड करने की अनुमति होती है, जबकि क्रॉस-ऑरिजिन रिसॉर्स को पढ़ने की अनुमति नहीं होती.

iframes आम तौर पर, क्रॉस-ऑरिजिन एम्बेड करने की अनुमति होती है. हालांकि, क्रॉस-ऑरिजिन रीडिंग (जैसे, iframe में किसी दस्तावेज़ को ऐक्सेस करने के लिए JavaScript का इस्तेमाल करना) की अनुमति नहीं होती.X-Frame-Options
सीएसएस क्रॉस-ऑरिजिन सीएसएस को सीएसएस फ़ाइल में <link> एलिमेंट या @import का इस्तेमाल करके एम्बेड किया जा सकता है. सही Content-Type हेडर की ज़रूरत पड़ सकती है.
फ़ॉर्म क्रॉस-ऑरिजिन यूआरएल का इस्तेमाल, फ़ॉर्म एलिमेंट के action एट्रिब्यूट की वैल्यू के तौर पर किया जा सकता है. कोई वेब ऐप्लिकेशन, फ़ॉर्म डेटा को क्रॉस-ऑरिजिन डेस्टिनेशन में लिख सकता है.
इमेज क्रॉस-ऑरिजिन इमेज को एम्बेड करने की अनुमति है. हालांकि, क्रॉस-ऑरिजिन इमेज का डेटा पढ़ने की सुविधा ब्लॉक की गई है. जैसे, JavaScript का इस्तेमाल करके क्रॉस-ऑरिजिन इमेज से बाइनरी डेटा हासिल करना.
मल्टीमीडिया क्रॉस-ऑरिजिन वीडियो और ऑडियो को <video> और <audio> एलिमेंट का इस्तेमाल करके एम्बेड किया जा सकता है.
स्क्रिप्ट क्रॉस-ओरिजिन स्क्रिप्ट एम्बेड की जा सकती हैं. हालांकि, कुछ एपीआई (जैसे, क्रॉस-ओरिजिन फ़ेच अनुरोध) का ऐक्सेस ब्लॉक किया जा सकता है.

TODO: DevSite - Think and Check assessment

क्लिकजैकिंग से बचने का तरीका

क्लिकजैकिंग
इमेज: क्लिक जैकिंग की सुविधा को तीन अलग-अलग लेयर (बेस साइट, iframe की गई साइट, पारदर्शी बटन) में दिखाया गया है.

"क्लिक जैकिंग" नाम का एक हमला, iframe में किसी साइट को एम्बेड करता है और पारदर्शी बटन को ओवरले करता है, जो किसी दूसरे डेस्टिनेशन से लिंक होते हैं. उपयोगकर्ताओं को यह भरोसा दिलाया जाता है कि वे आपके ऐप्लिकेशन को ऐक्सेस कर रहे हैं, जबकि वे हमलावरों को डेटा भेज रहे होते हैं.

अन्य साइटों को आपकी साइट को iframe में एम्बेड करने से रोकने के लिए, एचटीटीपी हेडर में frame-ancestors निर्देश के साथ कॉन्टेंट की सुरक्षा से जुड़ी नीति जोड़ें.

इसके अलावा, एचटीटीपी हेडर में X-Frame-Options जोड़ा जा सकता है. विकल्पों की सूची के लिए, MDN देखें.

आखिर में खास जानकारी

उम्मीद है कि आपको यह जानकर थोड़ी राहत मिली होगी कि ब्राउज़र, वेब पर सुरक्षा के रखवाले के तौर पर काम करते हैं. ब्राउज़र, संसाधनों को ऐक्सेस करने से रोककर सुरक्षित रहने की कोशिश करते हैं. हालांकि, कभी-कभी आपको अपने ऐप्लिकेशन में क्रॉस-ऑरिजिन संसाधनों को ऐक्सेस करना होता है. अगली गाइड में, क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस) के बारे में जानें. साथ ही, ब्राउज़र को यह बताने का तरीका जानें कि भरोसेमंद सोर्स से क्रॉस-ऑरिजिन रिसॉर्स लोड करने की अनुमति है.