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

Paul Kinlan
Paul Kinlan

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

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

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

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

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

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

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

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

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

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

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

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

जियोलोकेशन का इस्तेमाल करने के लिए यह ज़रूरी नहीं है कि पूरे ऐप्लिकेशन को एचटीटीपीएस से दिखाया जाए. सिर्फ़ जियोलोकेशन का इस्तेमाल करने वाले पेजों को सुरक्षित कॉन्टेक्स्ट में दिखाना चाहिए. फ़िलहाल, सुरक्षित कॉन्टेक्स्ट का मतलब उन चीज़ों से है जिन्हें एचटीटीपीएस या लोकल होस्ट पर टॉप लेवल पर होस्ट किया जाता है. उदाहरण के लिए, ऐसे 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 Geolocation API का इस्तेमाल करना है या आपकी साइट पहले से Geolocation API का इस्तेमाल कर रही ����, ���� कृपया Geolocation API का इस्तेमाल करने वाले पेजों को एचटीटीपीएस पर माइग्रेट करें. साथ ही, यह पक्का करें कि उनका इस्तेमाल सुरक्षित तरीके से किया जाता हो.

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