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

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

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

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

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

यह बदलाव, Chrome 50 (20 अप्रैल, 2016 को पौलीनेशियन स्टैंडर्ड टाइम (पीएसटी) के मुताबिक दोपहर 12 बजे) से लागू है.

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

इस बारे में कई अन्य सोर्स ने भी बताया है: Mobiforge (26 जनवरी, 2016), Wired (17 मार्च, 2016), VentureBeat (13 अप्रैल, 2016).

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

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

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

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

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

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

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

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

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

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

हां. जियोलोकेशन स्पेसिफ़िकेशन में PositionError ऑब्जेक्ट के बारे में बताया गया है. इसे Geolocation API के फ़ेल होने पर कॉलबैक में पास किया जाता है. ऑब्जेक्ट, code और message प्रॉपर्टी तय करता है.

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

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

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

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

मुझे ज़रूर से जियोलोकेशन का इस्तेमाल करना है. मुझे क्या करना चाहिए?

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

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