إيقاف واجهات برمجة التطبيقات وإزالتها في Chrome 56

Joe Medley
Joe Medley

في كل إصدار من Chrome تقريبًا، نلاحظ عددًا كبيرًا من التحديثات والتحسينات على المنتج وأدائه وإمكانات Web Platform. توضّح هذه المقالة الميزات التي سيتم إيقافها نهائيًا أو إزالتها في الإصدار 56 من Chrome، الذي أصبح متاحًا في إصدار تجريبي اعتبارًا من 8 كانون الأول (ديسمبر). تخضع هذه القائمة للتغيير في أي وقت.

إيقاف الشهادات المستندة إلى معيار SHA-1

بدأت خوارزمية التجزئة التشفيرية SHA-1في إظهار علامات ضعف قبل أكثر من أحد عشر عامًا، وتشير الأبحاث الحديثة إلى احتمالية حدوث هجمات قريبة يمكن أن تؤثر بشكل مباشر في سلامة البنية الأساسية للمفتاح العام على الويب (PKI).

لحماية المستخدمين من هذه الهجمات، لم يعُد Chrome متوافقًا مع شهادات SHA-1 بدءًا من الإصدار 56 من Chrome، الذي تم إصداره في كانون الثاني (يناير) 2017. يؤدي الانتقال إلى موقع إلكتروني باستخدام شهادة مماثلة إلى ظهور تحذير بيني. يمكنك الاطّلاع على مزيد من التفاصيل في مدوّنة أمان Chrome.

Intent to Remove | Chromestatus Tracker | Chromium Bug

إزالة رموز خوارزمية ECDSA في وضع "التسلسل من جهة العميل إلى الخادم" في بروتوكول أمان طبقة النقل (TLS)

هناك عيوب في بنية وضع CBC في بروتوكول TLS، ما يجعله هشًا ويصعّب تنفيذه بأمان. على الرغم من أنّ رموز وضع CBC لا تزال تُستخدم على نطاق واسع مع RSA، لا يتم استخدامها تقريبًا مع ECDSA. لا تزال المتصفّحات الأخرى تتيح استخدام هذه الصعوبات، ونعتقد أنّ الخطر منخفض. بالإضافة إلى ذلك، لا تستخدم سوى بضع منظمات ECDSA في بروتوكول أمان طبقة النقل، وعادةً ما يكون الإعداد أكثر تعقيدًا (يتوافق بعض العملاء الأقدم مع RSA فقط)، لذلك نتوقع أن تكون المواقع الإلكترونية التي تستخدم ECDSA مُدارة بشكل أفضل وأكثر سرعة في الاستجابة في حال حدوث مشاكل.

أضاف بروتوكول TLS 1.2 رموز تشفير جديدة تستند إلى رموز AEAD التي تتجنّب هذه المشاكل، وتحديدًا AES_128_GCM أو AES_256_GCM أو CHACHA20_POLY1305. على الرغم من أنّنا نطلب ذلك فقط للمواقع الإلكترونية المستندة إلى ECDSA في هذا الوقت، ننصحك به لجميع المشرفين. لا تؤدي الرموز التشفيرية المستندة إلى AEAD إلى تحسين الأمان فحسب، بل تؤدي أيضًا إلى تحسين الأداء. يتوفّر لخوارزمية AES-GCM دعم الأجهزة على معالجات الوسائط المتعددة (CPU) الحديثة، وتتيح خوارزمية ChaCha20-Poly1305 عمليات التنفيذ السريعة للبرامج. في المقابل، تتطلّب شفرات CBC تخفيفات معقدة بطيئة وإمكانية الوصول إلى مولد الأرقام العشوائية في كل سجلّ خارجي. تشفير AEAD هو أيضًا شرط أساسي لتحسينات HTTP/2 وFalse Start.

Intent to Remove | Chromestatus Tracker | Chromium Bug

إزالة إيماءات المستخدم من الانتقال السريع باللمس

لقد رصدنا عدّة أمثلة على الإعلانات الضارّة أو المكتوبة بشكلٍ سيئ والتي تؤدي إلى التنقّل في صفحات التمرير باللمس إما في أحداث touchstart أو جميع أحداث touchend. إذا تعذّر على حدث "عجلة" فتح نافذة منبثقة، لن يتمكّن التمرير باستخدام اللمس أيضًا من فتحها. قد يؤدي ذلك إلى إيقاف بعض السيناريوهات، على سبيل المثال، عدم تشغيل الوسائط عند لمسها أو عدم فتح النوافذ المنبثقة عند لمسها. لا يفتح Safari النوافذ المنبثقة في جميع هذه السيناريوهات.

Intent to Remove | Chromestatus Tracker | Chromium Bug

عدم السماح بجميع عمليات الجلب للنصوص البرمجية التي تحتوي على سمات نوع/لغة غير صالحة

في الوقت الحالي، يُجلب الماسح الضوئي لميزة "التحميل المُسبَق" في Chrome العناصر في عناصر <scripts> بغض النظر عن قيمة السمة type أو language، إلا أنّه لن يتم تنفيذ النص البرمجي عند تحليله. من خلال إيقاف ميزة الجلب نهائيًا، سيكون للمحلّل وأداة فحص التحميل المُسبَق الدلالات نفسها، ولن نبدأ عمليات جلب للنصوص البرمجية التي لن نستخدمها. يهدف ذلك إلى حفظ بيانات المستخدمين الذين ينتقلون إلى مواقع إلكترونية تتضمّن الكثير من علامات النصوص البرمجية المخصّصة التي تتم معالجتها بعد ذلك (مثل type="text/template"، على سبيل المثال).

تتناول sendBeacon API بشكلٍ كافٍ حالة استخدام استخدام نصوص برمجية غير صالحة لإرسال إشارات إلى الخوادم.

يتوافق هذا التغيير مع Chrome وSafari، إلا أنّ Firefox لا يزال يطلب النصوص البرمجية بغض النظر عن النوع أو اللغة.

Intent to Remove | Chromestatus Tracker | Chromium Bug

إزالة MediaStreamTrack.getSources()

لم تعُد هذه الطريقة جزءًا من المواصفات ولا تتوافق مع أي متصفح هائل آخر. وتم استبداله بعلامة MediaDevices.enumerateDevices()، التي تتيحها Blink بدون استخدام علامات منذ الإصدار 47، وهي متوفرة أيضًا في المتصفّحات الأخرى. في ما يلي مثال على ذلك. تستخدِم الدالة الافتراضية getCameras() أولاً ميزة رصد العناصر للعثور على enumerateDevices() واستخدامها. إذا تعذّر رصد الميزة، يبحث عن getSources() في MediaStreamTrack. أخيرًا، في حال عدم توفّر أي نوع من دعم واجهة برمجة التطبيقات، يجب عرض المصفوفة الفارغة 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);
      }
    };

Intent to Remove | Chromestatus Tracker | Chromium Bug

إزالة توجيه CSP الخاص بـ reflected-xss

كانت المسودات الأولى لمواصفات المستوى 2 من سياسة أمان المحتوى تحتوي على توجيه reflected-xss لا يقدّم سوى X-XSS-Protection سوى بنية مختلفة. تمت إزالة هذه التوجيهات من المواصفات في عام 2015، ولكن ليس قبل تنفيذها في Chrome. تتم حاليًا إزالة هذا التوجيه.

Intent to Remove | Chromestatus Tracker | Chromium Bug

استبدال توجيه "المُحيل" في خدمة حماية المحتوى (CSP)

سمحت توجيهات CSP referrer لمالكي المواقع الإلكترونية بضبط سياسة المُحيل من عنوان HTTP. لا تُستخدَم هذه الميزة سوى بمعدل منخفض جدًا، ولم تعُد أيضًا جزءًا من أي مواصفات W3C.

يجب أن تستخدم المواقع الإلكترونية التي لا تزال بحاجة إلى هذه الوظيفة <meta name="referrer"> أو عنوان Referrer-Policy الجديد.

Intent to Remove | Chromestatus Tracker | Chromium Bug

إزالة حقل PaymentAddress.careOf

تحتوي واجهة PaymentAddress على حقل careOf غير عادي (لا تتيحه أي معايير عناوين معروفة). الحقل careOf ليس ضروريًا أيضًا، فحقلَا المستلِم والمؤسسة يتيحان بشكل كافٍ جميع حالات الاستخدام اللازمة. تؤدي إضافة careOf إلى حدوث مشاكل كبيرة من حيث التوافق مع مخطّطات واجهات برمجة التطبيقات الحالية للعناوين البريدية. للاطّلاع على مناقشة كاملة، يُرجى قراءة اقتراح إزالة المواصفات على GitHub.

النية في الإزالة | خطأ في Chromium

إزالة SVGViewElement.viewTarget

لا تشكّل السمة SVGViewElement.viewTarget جزءًا من مواصفات SVG2.0 ، واستخدامها قليل أو غير موجود. تم إيقاف هذه السمة نهائيًا في الإصدار 54 من Chrome، وتمّت إزالتها الآن.

Intent to Remove | Chromestatus Tracker | Chromium Bug