Chrome 50 में असुरक्षित ऑरिजिन से जियोलोकेशन एपीआई हटाया गया

पॉल किनलन
पॉल किनलन

Chrome का सार्वजनिक इंटेंट यह है कि वह असुरक्षित ऑरिजिन पर, जियोलोकेशन जैसी बेहतरीन सुविधाओं को बंद कर दे. हमें उम्मीद है कि अन्य लोग भी इस सुविधा का पालन करेंगे.

Chrome 50 और उसके बाद के वर्शन में, अब असुरक्षित कनेक्शन से डिलीवर किए गए पेजों से HTML5 जियोलोकेशन एपीआई इस्तेमाल करके, उपयोगकर्ता की जगह की जानकारी हासिल करना काम नहीं करता. इसका मतलब है कि जियोलोकेशन एपीआई कॉल करने वाले पेज को, एचटीटीपीएस जैसे सुरक्षित कॉन्टेक्स्ट से दिखाया जाना चाहिए.

यह एक महत्वपूर्ण समस्या है क्योंकि यह ऐसी किसी भी साइट को सीधे प्रभावित करेगा जिसे भौगोलिक स्थान API का उपयोग करने की आवश्यकता होती है और वह https पर उपलब्ध नहीं होती है, लेकिन यह एक ऐसा बदलाव है जिसके बारे में हमारा मानना है कि यह वेब पर सभी उपयोगकर्ताओं के लिए फ़ायदेमंद है. इस पोस्ट से आपको यह समझने में मदद मिलेगी कि आगे क्या करना है.

नाम कब बदलेगा?

यह बदलाव Chrome 50 (12PM PST) से 20 अप्रैल, 2016 को लागू होगा.

Chrome का डेवलपर टूल कंसोल वर्शन 44 (21 जुलाई 2015 को रिलीज़ किया गया) से चेतावनियां दे रहा है.
ऐसी कई सार्वजनिक सूचनाएं हैं जिनमें इस बदलाव की वजह और चर्चा की गई है.

इस जानकारी को कई सोर्स से हाइलाइट किया गया है: Mobiforge (26 जनवरी, 2016), वायर्ड (17 मार्च, 2016), VentureBeat (13 अप्रैल, 2016).

हम यह परिवर्तन क्यों कर रहे हैं?

जगह की जानकारी, संवेदनशील जानकारी है! उपयोगकर्ताओं की जगह की जानकारी के डेटा की निजता बनाए रखने के लिए, एचटीटीपीएस ज़रूरी है. अगर उपयोगकर्ता की जगह की जानकारी किसी असुरक्षित कॉन्टेक्स्ट से उपलब्ध है, तो नेटवर्क पर मौजूद हमलावरों को पता चल जाएगा कि वह उपयोगकर्ता कहां है. इससे उपयोगकर्ता की निजता खतरे में रहती है.

यह किसे प्रभावित करता है?

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

क्या मेरे पूरे वेब ऐप्लिकेशन को एचटीटीपीएस की ज़रूरत है?

यह ज़रूरी नहीं है कि पूरा ऐप्लिकेशन एचटीटीपीएस के ज़रिए दिखाया जाए, ताकि आप जियोलोकेशन का इस्तेमाल कर सकें. जियोलोकेशन का इस्तेमाल करने वाले पेज ही सुरक्षित जानकारी के साथ दिखाए जाने चाहिए. फ़िलहाल, सुरक्षित कॉन्टेक्स्ट का मतलब ऐसे कॉन्टेंट से है जो एचटीटीपीएस या localhost में टॉप लेवल पर होस्ट किया जाता है. उदाहरण के लिए, ऐसे iframe जो सुरक्षित ऑरिजिन पर ले जाता है, लेकिन असुरक्षित ऑरिजिन (http ://paul.kinlan.me/) पर होस्ट किया जाता है उसे जियोलोकेशन एपीआई को कॉल करने की अनुमति नहीं होगी.

हमारा सुझाव है कि आप एचटीटीपीएस पर माइग्रेट करें. ऐसा इसलिए, क्योंकि नई और मौजूदा ब्राउज़र सुविधाओं के लिए सुरक्षित ऑरिजिन की ज़रूरत होती है.

क्या इससे स्थानीय विकास पर असर पड़ता है?

ऐसा नहीं होना चाहिए. नियम में localhost को "संभावित सुरक्षित" घोषित किया गया है. हमारे मामले में, localhost की मदद से टॉप लेवल पर जियोलोकेशन के अनुरोध अब भी काम करेंगे.

क्या रनटाइम पर यह पता लगाया जा सकता है कि सुरक्षित कॉन्टेक्स्ट न होने की वजह से जियोलोकेशन को ब्लॉक किया गया या नहीं

हां. जियोलोकेशन की खास जानकारी में, PositionError ऑब्जेक्ट के बारे में पता चलता है. इसे जियोलोकेशन एपीआई के फ़ेलियर कॉलबैक में भेजा जाता है. यह ऑब्जेक्ट, code और message प्रॉपर्टी के बारे में बताता है.

सुरक्षित कॉन्टेक्स्ट की इस समस्या की वजह से होने वाली गड़बड़ियां, 1 में से code दिखाएंगे, जो कि "अनुमति नहीं मिलने से जुड़ी गड़बड़ी" है. आपको यह गड़बड़ी तब मिल सकती है, जब किसी उपयोगकर्ता ने ऐक्सेस देने से मना कर दिया हो या सिस्टम ने उपयोगकर्ता की जगहों की जानकारी को ऐक्सेस करने की अनुमति न दी हो. इसका मतलब है कि आपको मैसेज देखकर, पता करना होगा कि असल वजह क्या थी.

आने वाले समय में इस स्थिति में काफ़ी बदलाव आ सकता है. हालांकि, इस बात का मज़बूत संकेत है कि "सिर्फ़ सुरक्षित ऑरिजिन की अनुमति है" स्ट्रिंग को ढूंढना एक असुरक्षित कॉन्टेंट से जुड़ी समस्या है.

navigator.geolocation.getCurrentPosition(success => {
    /* Do some magic. */
}, failure => {
    if (failure.message.startsWith("Only secure origins are allowed")) {
    // Secure Origin issue.
    }
});

याद रखें, सिर्फ़ पेज के ऑरिजिन की जांच नहीं की जा सकती, क्योंकि हो सकता है कि आपका पेज एचटीटीपीएस पर हो, लेकिन वह ऐसे iframe में हो जिसे असुरक्षित कॉन्टेक्स्ट से होस्ट किया गया हो.

मुझे वाकई भौगोलिक स्थान का इस्तेमाल करना है; मुझे क्या करना चाहिए?

अगर आपको HTML5 जियोलोकेशन एपीआई इस्तेमाल करना है या आपकी साइट पहले से ही जियोलोकेशन एपीआई का इस्तेमाल कर रही है, तो कृपया उन पेजों को एचटीटीपीएस पर माइग्रेट करें जो जियोलोकेशन एपीआई का इस्तेमाल करते हैं. साथ ही, पक्का करें कि उनका इस्तेमाल सुरक्षित तरीके से किया जा रहा हो.

किसी उपयोगकर्ता की जगह की जानकारी पाने के लिए, ऐसे कई विकल्प मौजूद हैं जिन पर इस बदलाव का कोई असर नहीं होगा. जैसे, Google Maps का जियोलोकेशन एपीआई, GeoIP (उदाहरण के लिए, यहां इलाके के हिसाब से दिए गए अन्य समाधान हैं), और उपयोगकर्ता का डाला गया पिन कोड. हालांकि, हमारा सुझाव है कि किसी भौगोलिक स्थान का ऐक्सेस जारी रखने के लिए, एचटीटीपीएस पर माइग्रेट करना सबसे अच्छा तरीका है.