एक ही ऑरिजिन से जुड़ी नीति, ब्राउज़र की सुरक्षा से जुड़ी एक सुविधा है. यह सुविधा, किसी एक ऑरिजिन पर मौजूद दस्तावेज़ों और स्क्रिप्ट को दूसरे ऑरिजिन पर मौजूद संसाधनों के साथ इंटरैक्ट करने से रोकती है.
कोई ब्राउज़र, एक साथ कई साइटों से रिसॉर्स लोड और डिसप्ले कर सकता है. ऐसा हो सकता है कि आपने एक ही समय पर कई टैब खोले हों या किसी साइट ने अलग-अलग साइटों से कई iframe एम्बेड किए हों. अगर इन रिसॉर्स के बीच इंटरैक्शन पर कोई पाबंदी नहीं है और किसी स्क्रिप्ट को हैकर ने हैक कर लिया है, तो वह स्क्रिप्ट उपयोगकर्ता के ब्राउज़र में मौजूद हर जानकारी को सार्वजनिक कर सकती है.
एक ही ऑरिजिन से जुड़ी नीति, किसी दूसरे ऑरिजिन से लोड किए गए संसाधनों को पढ़ने से रोकती है. "लेकिन रुकिए," आप कहते हैं, "मैं हर समय अन्य ऑरिजिन से इमेज और स्क्रिप्ट लोड करता हूं." ब्राउज़र, कुछ टैग को अलग-अलग ऑरिजिन से संसाधनों को एम्बेड करने की अनुमति देते हैं. यह नीति काफ़ी पुरानी है और इससे आपकी साइट को iframe का इस्तेमाल करके क्लिकजैकिंग जैसी कमज़ोरियों का खतरा हो सकता है. कॉन्टेंट की सुरक्षा के लिए नीति का इस्तेमाल करके, इन टैग की क्रॉस-ऑरिजिन रीडिंग पर पाबंदी लगाई जा सकती है.
सेम-ऑरिजिन किसे माना जाता है?
ऑरिजिन को स्कीम (इसे प्रोटोकॉल भी कहा जाता है, जैसे कि एचटीटीपी या एचटीटीपीएस), पोर्ट (अगर बताया गया हो), और होस्ट से तय किया जाता है. जब दो यूआरएल के लिए ये तीनों चीज़ें एक जैसी होती हैं, तो उन्हें एक ही ऑरिजिन का माना जाता है. उदाहरण के लिए,
http://www.example.com/foo का ऑरिजिन
http://www.example.com/bar जैसा ही है,
लेकिन https://www.example.com/bar जैसा नहीं है,
क्योंकि स्कीम अलग है.
किस तरह के कॉन्टेंट को अनुमति दी जाती है और किस तरह के कॉन्टेंट को ब्लॉक किया जाता है?
आम तौर पर, क्रॉस-ऑरिजिन रिसॉर्स को एम्बेड करने की अनुमति होती है. हालांकि, क्रॉस-ऑरिजिन रिसॉर्स को पढ़ने की अनुमति नहीं होती.
| iframe |
आम तौर पर, क्रॉस-ऑरिजिन एंबेड करने की अनुमति होती है. हालांकि, यह X-Frame-Options डायरेक्टिव पर निर्भर करता है. वहीं, क्रॉस-ऑरिजिन रीडिंग की अनुमति नहीं होती. जैसे, iframe में मौजूद किसी दस्तावेज़ को ऐक्सेस करने के लिए JavaScript का इस्तेमाल करना.
|
| सीएसएस |
क्रॉस-ऑरिजिन सीएसएस को <link> एलिमेंट या सीएसएस फ़ाइल में @import का इस्तेमाल करके एम्बेड किया जा सकता है. सही Content-Type हेडर की ज़रूरत पड़ सकती है.
|
| फ़ॉर्म |
क्रॉस-ऑरिजिन यूआरएल को फ़ॉर्म एलिमेंट के action एट्रिब्यूट की वैल्यू के तौर पर इस्तेमाल किया जा सकता है. कोई वेब ऐप्लिकेशन, फ़ॉर्म डेटा को क्रॉस-ऑरिजिन डेस्टिनेशन पर लिख सकता है.
|
| इमेज | क्रॉस-ऑरिजिन इमेज को एम्बेड करने की अनुमति है. हालांकि, क्रॉस-ऑरिजिन इमेज डेटा को पढ़ने की अनुमति नहीं है. जैसे, JavaScript का इस्तेमाल करके, क्रॉस-ऑरिजिन इमेज से बाइनरी डेटा को वापस पाना. |
| मल्टीमीडिया |
<video> और <audio> एलिमेंट का इस्तेमाल करके, क्रॉस-ऑरिजिन वीडियो और ऑडियो को एम्बेड किया जा सकता है.
|
| स्क्रिप्ट | क्रॉस-ऑरिजिन स्क्रिप्ट को एम्बेड किया जा सकता है. हालांकि, कुछ एपीआई का ऐक्सेस ब्लॉक किया जा सकता है. जैसे, क्रॉस-ऑरिजिन फ़ेच अनुरोध. |
TODO: DevSite - Think and Check assessment
क्लिकजैकिंग से कैसे बचें
"क्लिकजैकिंग" नाम का एक हमला, किसी साइट को iframe में एम्बेड करता है और पारदर्शी बटन ओवरले करता है, जो किसी दूसरी साइट से लिंक होते हैं. उपयोगकर्ताओं को धोखा देकर यह भरोसा दिलाया जाता है कि वे आपके ऐप्लिकेशन को ऐक्सेस कर रहे हैं. हालांकि, असल में वे हमलावरों को डेटा भेज रहे होते हैं.
अगर आपको अन्य साइटों को अपनी साइट को iframe में एम्बेड करने से रोकना है, तो एचटीटीपी हेडर में frame-ancestors डायरेक्टिव के साथ कॉन्टेंट की सुरक्षा के लिए नीति जोड़ें.
इसके अलावा, एचटीटीपी हेडर में X-Frame-Options को जोड़ा जा सकता है. विकल्पों की सूची देखने के लिए, एमडीएन पर जाएं.
आखिर में खास जानकारी
उम्मीद है कि आपको यह जानकर राहत मिली होगी कि ब्राउज़र, वेब पर सुरक्षा के गेटकीपर के तौर पर काम करते हैं. हालांकि, ब्राउज़र संसाधनों के ऐक्सेस को ब्लॉक करके सुरक्षित रहने की कोशिश करते हैं, लेकिन कभी-कभी आपको अपने ऐप्लिकेशन में क्रॉस-ऑरिजिन संसाधनों को ऐक्सेस करना होता है. अगली गाइड में, क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस) के बारे में जानें. साथ ही, ब्राउज़र को यह बताने का तरीका जानें कि भरोसेमंद सोर्स से क्रॉस-ऑरिजिन रिसॉर्स लोड करने की अनुमति है.