Chrome 56 में API को बंद करना और हटाना

जो मेडले
जो मेडली

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

SHA-1 सर्टिफ़िकेट के लिए सहायता हटाएं

SHA-1 क्रिप्टोग्राफ़िक हैश एल्गोरिदम 11 साल पहले में सबसे पहले कमज़ोरी के लक्षण दिखे और हाल ही की रिसर्च उन हमलों की संभावना के बारे में पता चला जो वेब पब्लिक की इन्फ़्रास्ट्रक्चर (पीकेआई) की इंटिग्रिटी पर सीधे तौर पर असर डाल सकते हैं.

उपयोगकर्ताओं को ऐसे हमलों से बचाने के लिए, Chrome अब Chrome 56 में शुरू होने वाले SHA-1 सर्टिफ़िकेट के साथ काम नहीं करता, जिसकी स्थायी रिलीज़ जनवरी 2017 में जारी हुई है. ऐसे सर्टिफ़िकेट का इस्तेमाल करके किसी साइट पर जाने पर, अचानक दिखने वाली चेतावनी दिखती है. ज़्यादा जानकारी के लिए, हमने Chrome सुरक्षा ब्लॉग पर जाएं.

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

TLS में, सीबीसी-मोड ईसीडीएसए साइफ़र हटाएं

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

TLS 1.2 में AEAD के आधार पर नए साइफ़र जोड़े गए हैं, जिससे इन समस्याओं से बचा जा सकता है, खास तौर पर AES_128_GCM, AES_256_GCM या CHACHA20_POLY1305. फ़िलहाल, हमें सिर्फ़ ईसीडीएसए पर आधारित साइटों के लिए ही इसकी ज़रूरत है, फिर भी हम सभी एडमिन को इसका इस्तेमाल करने का सुझाव देते हैं. AEAD-आधारित साइफ़र न सिर्फ़ सुरक्षा को बेहतर बनाते हैं, बल्कि परफ़ॉर्मेंस को भी बेहतर बनाते हैं. AES-GCM को हाल ही के सीपीयू पर हार्डवेयर तरीके से इस्तेमाल किया जा सकता है. वहीं, ChaCha20-Poly1305 पर यह काम तेज़ी से करता है. वहीं, सीबीसी को सिफ़र करने के लिए, हर आउटगोइंग रिकॉर्ड पर धीमी रफ़्तार से जोखिमों को कम करने और पीआरएनजी ऐक्सेस की ज़रूरत होती है. AEAD-आधारित साइफ़र, HTTP/2 और गलत स्टार्ट ऑप्टिमाइज़ेशन के लिए भी ज़रूरी होते हैं.

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

टच स्क्रोल से उपयोगकर्ता के जेस्चर हटाएं

हमने खराब तरीके से लिखे गए या नुकसान पहुंचाने वाले विज्ञापनों के कई उदाहरण देखे हैं, जो touchstart या सभी touchend इवेंट में, टच स्क्रोल के लिए नेविगेशन ट्रिगर करते हैं. अगर 'व्हील' इवेंट पॉप-अप नहीं खोल पा रहा है, तो टच स्क्रोलिंग में भी ऐसा नहीं होना चाहिए. इससे कुछ स्थितियों में रुकावट आ सकती है. उदाहरण के लिए, छूने पर मीडिया न चलना या पॉप-अप का टच करने पर न खुलना. Safari पहले से ही इन सभी स्थितियों में पॉप-अप नहीं खोल पाता है.

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

अमान्य टाइप/भाषा एट्रिब्यूट वाली सभी स्क्रिप्ट को फ़ेच करने की अनुमति न दें

फ़िलहाल, Chrome का प्रीलोड स्कैनर <scripts> एलिमेंट में आइटम फ़ेच करता है. भले ही, type या language एट्रिब्यूट की वैल्यू कुछ भी हो. हालांकि, पार्स किए जाने पर स्क्रिप्ट एक्ज़ीक्यूट नहीं की जाएगी. फ़ेच को रोकने से, प्रीलोड स्कैनर और पार्सर के सिमैंटिक एक जैसे होंगे. साथ ही, हम ऐसी स्क्रिप्ट के लिए फ़ेच शुरू नहीं करेंगे जिनका हम इस्तेमाल नहीं करेंगे. इसका मकसद उन उपयोगकर्ताओं का डेटा सेव करना है जो पोस्ट-प्रोसेस किए गए बहुत सारे कस्टम स्क्रिप्ट टैग वाली साइटों पर जाते हैं. उदाहरण के लिए, type="text/template".

पिंग सर्वर पर अमान्य स्क्रिप्ट का इस्तेमाल करने के मामले में, sendBeacon API पूरी तरह से काम करता है.

इस बदलाव से Chrome को Safari के साथ अलाइन किया जा सकता है. हालांकि, Firefox टाइप या भाषा पर ध्यान दिए बिना, स्क्रिप्ट के लिए अनुरोध करता है.

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

MediaStreamTrack.getSources() हटाएं

यह तरीका अब स्पेसिफ़िकेशन का हिस्सा नहीं है और किसी दूसरे मुख्य ब्राउज़र पर काम नहीं करता. इसे MediaDevices.enumerateDevices() से बदल दिया गया है, जो Blink के साथ काम करता है. यह वर्शन 47 के बाद से ही काम करता है. यह दूसरे ब्राउज़र पर भी काम करता है. इसका एक उदाहरण नीचे दिखाया गया है. यह काल्पनिक getCameras() फ़ंक्शन, enumerateDevices() को ढूंढने और उसका इस्तेमाल करने के लिए सबसे पहले, सुविधा की पहचान करने की सुविधा का इस्तेमाल करता है. अगर सुविधा की पहचान नहीं हो पाती, तो यह MediaStreamTrack में getSources() ढूंढती है. आखिर में, अगर किसी भी तरह का एपीआई काम नहीं कर रहा है, तो खाली cameras कलेक्शन दिखाता है.

    function getCameras(camerasCallback) {
      var cameras = [];
      if('enumerateDevices' in navigator.mediaDevices) {
         navigator.mediaDevices.enumerateDevices()
          .then(function(sources) {
            return sources.filter(function(source) { 
              return source.kind == 'videoinput' 
            });
          })
          .then(function(sources) {
            sources.forEach(function(source) {
              if(source.label.indexOf('facing back') >= 0) {
                // move front facing to the front.
                cameras.unshift(source);
              }
              else {
                cameras.push(source);
              }
            });
            camerasCallback(cameras);
          });
      }
      else if('getSources' in MediaStreamTrack) {
        MediaStreamTrack.getSources(function(sources) {

          for(var i = 0; i < sources.length; i++) {
            var source = sources[i];
            if(source.kind === 'video') {

              if(source.facing === 'environment') {
                // cameras facing the environment are pushed to the front of the page
                cameras.unshift(source);
              }
              else {
                cameras.push(source);
              }
            }
          }
          camerasCallback(cameras);
        });
      }
      else {
        // We can't pick the correct camera because the API doesn't support it.
        camerasCallback(cameras);
      }
    };

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

Colorful-xss सीएसपी डायरेक्टिव हटाएं

कॉन्टेंट की सुरक्षा के बारे में दूसरी ज़रूरी जानकारी के शुरुआती ड्राफ़्ट में एक reflected-xss डायरेक्टिव था. इसमें किसी दूसरे सिंटैक्स के अलावा, X-XSS-Protection हेडर के अलावा और कुछ नहीं था. इस निर्देश को 2015 में स्पेसिफ़िकेशन से हटा दिया गया था, लेकिन Chrome में इसे लागू करने से पहले नहीं. अब इस डायरेक्टिव की सुविधा हटा दी गई है.

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

सीएसपी 'रेफ़रर' डायरेक्टिव बदलें

सीएसपी referrer डायरेक्टिव की मदद से, साइट के मालिक एचटीटीपी हेडर की मदद से रेफ़रर नीति सेट कर सकते हैं. इस सुविधा का न सिर्फ़ बहुत कम इस्तेमाल किया जाता है, बल्कि अब यह किसी W3C स्पेसिफ़िकेशन का हिस्सा भी नहीं है.

जिन साइटों को अब भी इस सुविधा की ज़रूरत है उन्हें <meta name="referrer"> या नए Referrer-Policy हेडर का इस्तेमाल करना चाहिए.

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

PaymentAddress.careOf फ़ील्ड हटाएं

PaymentAddress इंटरफ़ेस में careOf फ़ील्ड है, जो स्टैंडर्ड नहीं है. पते के किसी भी जाने-माने स्टैंडर्ड के साथ यह काम नहीं करता. careOf फ़ील्ड भी गैर-ज़रूरी है. डेटा पाने वाले और संगठन के फ़ील्ड, इस्तेमाल के सभी ज़रूरी उदाहरणों की ज़रूरत के मुताबिक सहायता करते हैं. careOf को जोड़ने से, डाक पते के मौजूदा स्कीमा और एपीआई के साथ इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना) के मामले में गंभीर समस्याएं आ सकती हैं. पूरी जानकारी के लिए, GitHub पर खास जानकारी हटाने का प्रस्ताव पढ़ें.

हटाएं | Chromium की गड़बड़ी

SVGViewElement.viewTarget को हटाएं

SVGViewElement.viewTarget एट्रिब्यूट, SVG2.0 की खास जानकारी का हिस्सा नहीं है और इसका इस्तेमाल कम है या मौजूद नहीं है. यह एट्रिब्यूट Chrome 54 में बहिष्कृत कर दिया गया था और अब निकाल दिया गया है.

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी