Chrome 56'da API'lerin Kullanımdan Kaldırılması ve Kaldırılması

Ali Poşet
Ali Polat

Chrome'un hemen hemen her sürümünde üründe, performansında ve Web Platformu'nun özelliklerinde çok sayıda güncelleme ve iyileştirme görüyoruz. Bu makalede, 8 Aralık itibarıyla beta sürümünde olan Chrome 56'daki desteği sonlandırma ve kaldırma işlemleri açıklanmaktadır. Bu liste herhangi bir zamanda değiştirilebilir.

SHA-1 sertifikalarına yönelik desteği kaldırma

SHA-1 kriptografik karma algoritması, ilk olarak on bir yıldan uzun bir süre önce zayıf noktaları gösterdi. Yakın zamanda yapılan araştırmalar ise web ortak anahtar altyapısının (PKI) bütünlüğünü doğrudan etkileyebilecek saldırılar olasılığına işaret ediyor.

Kullanıcıları bu tür saldırılara karşı korumak için Chrome, kararlı sürümü Ocak 2017'de olan Chrome 56'dan itibaren SHA-1 sertifikalarını artık desteklememektedir. Böyle bir sertifika kullanan bir siteyi ziyaret edildiğinde bir ara sayfa uyarısı verilir. Chrome Güvenlik Blogu'nda daha fazla ayrıntı bulabilirsiniz.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

TLS'de CBC modu ECDSA şifrelerini kaldırma

TLS'nin CBC-mod yapısı hatalıdır, bu yüzden kırılgan ve güvenli bir şekilde uygulanması çok zordur. CBC modundaki şifreler RSA ile yaygın olarak kullanılmaya devam etse de ECDSA ile neredeyse yoktur. Diğer tarayıcılar bu şifreleri desteklemeye devam ettiğinden, riskin düşük olduğuna inanıyoruz. Buna ek olarak, TLS'de ECDSA birkaç kuruluş tarafından ve genellikle daha karmaşık bir kurulumla kullanılmaktadır (bazı eski istemciler yalnızca RSA'yı destekler). Bu nedenle, ECDSA sitelerinin daha iyi korunmasını ve sorun yaşandığında daha hızlı yanıt vermesini bekliyoruz.

TLS 1.2, bu sorunları önleyen AEAD'leri temel alan yeni şifreler (özellikle AES_128_GCM, AES_256_GCM veya CHACHA20_POLY1305) ekledi. Şu an için bunu yalnızca ECDSA tabanlı siteler için zorunlu kılsak da tüm yöneticiler için önerilir. AEAD tabanlı şifreler yalnızca güvenliği değil, performansı da artırır. AES-GCM, son CPU'lar için donanım desteğine sahiptir ve ChaCha20-Poly1305 hızlı yazılım uygulamalarını kabul eder. Bu arada, CBC şifreleri, her giden kayıtta yavaş ve karmaşık risk azaltma yöntemleri ve PRNG erişimi gerektirir. AEAD tabanlı şifreler de HTTP/2 ve Yanlış Başlatma optimizasyonları için ön koşuldur.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

Dokunmatik kaydırmadan kullanıcı hareketlerini kaldır

touchstart veya tüm touchend etkinliklerinde, dokunma kaydırmalarında gezinmeyi tetikleyen kötü yazılmış veya kötü amaçlı reklamlara ilişkin birçok örnek gördük. "Tekerlek" etkinliğinde bir pop-up açılamıyorsa dokunarak kaydırma da açılmaz. Bu durum, dokunulduğunda medya oynatılmaması veya dokunulduğunda açılmayan pop-up'lar gibi bazı senaryoları bozabilir. Safari, tüm bu senaryolarda pop-up'ları sessizce alamıyor.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

Geçersiz tür/dil özelliklerine sahip komut dosyaları için hiçbir getirme işlemine izin verme

Şu anda Chrome'un önceden yükleme tarayıcısı, type veya language özelliğinin değerinden bağımsız olarak <scripts> öğelerindeki öğeleri getirmektedir, ancak komut dosyası ayrıştırıldığında yürütülmez. Getirme işleminin kullanımdan kaldırılmasıyla, ön yükleme tarayıcısı ve ayrıştırıcı aynı anlamlara sahip olacak ve kullanmayacağımız komut dosyaları için getirme işlemi başlatmayacağız. Buradaki amaç, işlenmiş (örneğin, type="text/template" gibi) çok sayıda özel komut dosyası etiketinin bulunduğu sitelere giden kullanıcılar için veri kaydetmektir.

Sunuculara ping atmak için geçersiz komut dosyaları kullanma durumu, sendBeacon API'si kapsamındadır.

Bu değişiklik, Chrome ile Safari'yi uyumlu hale getirse de Firefox, tür veya dilden bağımsız olarak komut dosyaları istemeye devam etmektedir.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

MediaStreamTrack.getSources() öğesini kaldırma

Bu yöntem artık spesifikasyonun bir parçası değildir ve başka hiçbir ana tarayıcı tarafından desteklenmemektedir. Bu sürüm, Blink'in 47 sürümünden beri bayrak olmadan ve diğer tarayıcılar tarafından da desteklenen MediaDevices.enumerateDevices() ile değiştirilmiştir. Bunun bir örneği aşağıda gösterilmiştir. Bu varsayımsal getCameras() işlevi, ilk olarak enumerateDevices() öğesini bulup kullanmak için özellik algılamayı kullanır. Özellik algılama başarısız olursa MediaStreamTrack içinde getSources() araması yapılır. Son olarak, hiçbir türde API desteği yoksa boş cameras dizisini döndürün.

    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);
      }
    };

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

Yansıtılan-xss CSP yönergesini kaldır

İçerik Güvenliği Politikası Düzey 2 spesifikasyonunun ilk taslakları, farklı bir söz dizimi dışında X-XSS-Protection üstbilgisinden başka hiçbir şey sunmayan bir reflected-xss yönergesi içeriyordu. Bu yönerge 2015'te spesifikasyondan kaldırılmış, ancak Chrome'da uygulanmadan önce kaldırılmamıştır. Bu yönergeyle ilgili destek şu anda kaldırılıyor.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

CSP "yönlendiren" yönergesini değiştirin

CSP referrer yönergesi, site sahiplerinin HTTP başlığından yönlendiren politikası belirlemesine olanak tanıyordu. Bu özellik sadece çok düşük kullanım sağlamakla kalmaz, aynı zamanda artık herhangi bir W3C spesifikasyonunda da yer almaz.

Bu işleve ihtiyaç duyan siteler, <meta name="referrer"> veya yeni Referrer-Policy üst bilgisini kullanmalıdır.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

PaymentAddress.careOf alanını kaldır

PaymentAddress arayüzünde standart olmayan bir careOf alanı var (iyi bilinen adres standartları tarafından desteklenmez). careOf alanı da gerekli değildir. Alıcı ve kuruluş alanları, gerekli tüm kullanım alanlarını yeterince destekler. careOf etiketinin eklenmesi, mevcut posta adresi şemaları ve API'leriyle birlikte çalışabilme açısından önemli sorunlar oluşturur. Daha ayrıntılı bilgi için GitHub'daki özellik kaldırma teklifini okuyun.

Kaldırma Amacı | Chromium Hatası

SVGViewElement.viewTarget öğesini kaldır

SVGViewElement.viewTarget özelliği, SVG2.0 spesifikasyonunun bir parçası değildir ve kullanımı azdır veya yoktur. Bu özellik Chrome 54'te kullanımdan kaldırıldı ve artık kaldırılmış durumda.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası