एक ही ऑरिजिन से जुड़ी नीति, ब्राउज़र की सुरक्षा से जुड़ी सुविधा है. इससे यह तय होता है कि किसी एक ऑरिजिन पर मौजूद दस्तावेज़ों और स्क्रिप्ट, दूसरे ऑरिजिन पर मौजूद संसाधनों से कैसे इंटरैक्ट कर सकते हैं.
ब्राउज़र एक साथ कई साइटों के संसाधनों को लोड करके दिखा सकता है. यह मुमकिन है कि आपने एक ही समय पर कई टैब खोले हों या किसी साइट पर अलग-अलग साइटों से कई iframe एम्बेड किए गए हों. अगर इन संसाधनों के बीच इंटरैक्शन पर कोई पाबंदी नहीं है और किसी हमलावर ने स्क्रिप्ट से छेड़छाड़ की है, तो स्क्रिप्ट उपयोगकर्ता के ब्राउज़र में सब कुछ दिखा सकती है.
एक ही ऑरिजिन से जुड़ी नीति, किसी दूसरे ऑरिजिन से लोड किए गए रिसॉर्स के लिए पढ़ने का ऐक्सेस ब्लॉक करके ऐसा होने से रोकती है. "लेकिन इंतज़ार करें," आप कहते हैं, "मैं हमेशा अन्य ऑरिजिन से इमेज और स्क्रिप्ट लोड करता हूं." ब्राउज़र कुछ टैग को एक अलग ऑरिजिन से संसाधनों को एम्बेड करने की अनुमति देते हैं. यह नीति ज़्यादातर एक ऐतिहासिक आर्टफ़ैक्ट है, जिससे आपकी साइट को जोखिम की आशंकाओं का सामना करना पड़ सकता है, जैसे कि iframes का इस्तेमाल करके क्लिकजैकिंग. कॉन्टेंट की सुरक्षा से जुड़ी नीति का इस्तेमाल करके, इन टैग की क्रॉस-ऑरिजिन रीडिंग को प्रतिबंधित किया जा सकता है.
एक ही ऑरिजिन वाला किसे माना जाता है?
ऑरिजिन (जैसे, एचटीटीपी या एचटीटीपीएस), पोर्ट (अगर इसके बारे में बताया गया है), और होस्ट के आधार पर, ऑरिजिन को तय किया जाता है. इसे प्रोटोकॉल भी कहा जाता है. जब दो यूआरएल के लिए ये तीनों एक जैसे होते हैं, तो उन्हें एक ही मूल साइट माना जाता है. उदाहरण के लिए, प्लान अलग-अलग होने की वजह से, 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 - आकलन के बारे में सोचें और उसकी जांच करें
क्लिकजैकिंग से बचने का तरीका
"क्लिकजैकिंग" नाम की वजह से, किसी साइट को iframe
में एम्बेड किया जाता है. साथ ही, उस साइट पर किसी अलग डेस्टिनेशन पर ले जाने वाले पारदर्शी बटन लगाए जाते हैं. उपयोगकर्ताओं को गुमराह किया जाता है कि वे
आकलन करने वालों को डेटा भेजते समय
आपका ऐप्लिकेशन ऐक्सेस कर रहे हैं.
अगर आप चाहते हैं कि दूसरी साइटें आपकी साइट को किसी iframe में एम्बेड न कर पाएं, तो एचटीटीपी हेडर में frame-ancestors
डायरेक्टिव के साथ कॉन्टेंट की सुरक्षा नीति जोड़ें.
इसके अलावा, विकल्पों की सूची के लिए एमडीएन देखें और एचटीटीपी हेडर में X-Frame-Options
को जोड़ें.
आखिर में खास जानकारी
उम्मीद है कि आप इस बात से थोड़ा राहत महसूस कर रहे/रही हैं कि ब्राउज़र, वेब पर सुरक्षा की सुरक्षा का बुनियादी तरीके से काम करते हैं या नहीं. ब्राउज़र, संसाधनों का ऐक्सेस ब्लॉक करके सुरक्षित होने की कोशिश करते हैं, लेकिन कभी-कभी आपको अपने ऐप्लिकेशन में क्रॉस-ऑरिजिन रिसॉर्स ऐक्सेस करने होते हैं. अगली गाइड में, क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस) के बारे में जानें. साथ ही, ब्राउज़र को यह बताने का तरीका जानें कि क्रॉस-ऑरिजिन रिसॉर्स को भरोसेमंद सोर्स से लोड करने की अनुमति है.