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

Joe Medley
Joe Medley

Chrome'un neredeyse her sürümünde üründe, performansında ve Web Platformu'nun özelliklerinde önemli 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'ta desteği sonlandırılan ve kaldırılan özellikler açıklanmaktadır. Bu listede herhangi bir zamanda değişiklik yapılabilir.

SHA-1 sertifikaları için desteği kaldırma

SHA-1 kriptografik karma algoritması ilk kez on bir yıl önce zayıflık belirtileri gösterdi ve son araştırmalar, web'in ortak anahtar altyapısının (PKI) bütünlüğünü doğrudan etkileyebilecek saldırıların yakın bir zamanda gerçekleşebileceğini gösteriyor.

Kullanıcıları bu tür saldırılara karşı korumak için Chrome, Ocak 2017'de kararlı sürümü yayınlanan Chrome 56'dan itibaren SHA-1 sertifikalarını desteklememektedir. Bu tür bir sertifika kullanan bir siteyi ziyaret ettiğinizde geçiş sayfası uyarısı gösterilir. Daha fazla bilgiyi Chrome Güvenlik Blogu'nda bulabilirsiniz.

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

TLS'de CBC modu ECDSA şifrelerini kaldırma

TLS'nin CBC modu yapısında kusur vardır. Bu da protokolün hassas olmasını ve güvenli bir şekilde uygulanmasını çok zorlaştırır. CBC modu şifreleri RSA ile hâlâ yaygın olarak kullanılsa da ECDSA ile neredeyse hiç kullanılmamaktadır. Diğer tarayıcılar bu şifreleri hâlâ desteklediğinden riskin düşük olduğunu düşünüyoruz. Ayrıca, TLS'deki ECDSA, birkaç kuruluş tarafından ve genellikle daha karmaşık bir kurulumla (bazı eski istemciler yalnızca RSA destekler) kullanılmaktadır. Bu nedenle, ECDSA sitelerinin daha iyi korunmasını ve sorun olması durumunda daha duyarlı olmasını bekliyoruz.

TLS 1.2, özellikle AES_128_GCM, AES_256_GCM veya CHACHA20_POLY1305 gibi bu sorunları önleyen AEADs'ye dayalı yeni şifreler eklemiştir. Şu anda bunu yalnızca ECDSA tabanlı siteler için zorunlu tutuyoruz ancak 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'larda 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 azaltma işlemleri ve PRNG erişimi gerektirir. AEAD tabanlı şifreler, HTTP/2 ve False Start optimizasyonları için de ön koşuldur.

Intent to Remove | Chromestatus Tracker | Chromium Hatası

Dokunma kaydırma özelliğinden kullanıcı hareketlerini kaldırma

touchstart veya tüm touchend etkinliklerinde dokunma kaydırma için gezinmeyi tetikleyen kötü yazılmış ya da kötü amaçlı reklamlarla ilgili birden fazla örnek gördük. "Tekerlek" etkinliği bir pop-up açamıyorsa dokunmatik kaydırma da açamaz. Bu durum, dokunulduğunda medya oynatılmaması veya pop-up'ların açılmaması gibi bazı senaryoları bozabilir. Safari tüm bu senaryolarda pop-up'ları zaten sessizce açmıyor.

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

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

Şu anda Chrome'un ön yükleme tarayıcı, type veya language özelliğinin değerinden bağımsız olarak <scripts> öğelerindeki öğeleri getirir. Ancak komut dosyası ayrıştırıldığında yürütülmez. Getirme işlemi sonlandırıldığında, önceden yükleme tarayıcısı ve ayrıştırıcı aynı anlama sahip olur ve kullanmayacağımız komut dosyaları için getirme işlemi başlatmayız. Bunun amacı, son işleme tabi tutulan (örneğin, type="text/template") çok sayıda özel komut dosyası etiketinin bulunduğu sitelere giden kullanıcıların verilerini kaydetmektir.

Ping sunucuları için geçersiz komut dosyaları kullanmanın kullanım alanı, sendBeacon API'nin kapsamındadır.

Bu değişiklik Chrome'u Safari ile uyumlu hale getirir ancak Firefox tür veya dilden bağımsız olarak komut dosyası istemeye devam eder.

Intent to Remove | Chromestatus Tracker | Chromium Hatası

MediaStreamTrack.getSources() işlevini kaldırın

Bu yöntem artık spesifikasyonun bir parçası değildir ve diğer ana tarayıcılar tarafından desteklenmemektedir. Bu özellik, Blink'in 47 sürümünden beri işaret olmadan desteklediği ve diğer tarayıcılar tarafından da desteklenen MediaDevices.enumerateDevices() ile değiştirildi. Aşağıda buna örnek bir durum gösterilmektedir. Bu varsayımsal getCameras() işlevi, enumerateDevices()'u bulup kullanmak için önce özellik algılamayı kullanır. Özellik algılama başarısız olursa MediaStreamTrack içinde getSources() arar. Son olarak, herhangi bir 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 Niyeti | Chromestatus İzleyici | Chromium Hatası

Yansıtılanxss İGP yönergesini kaldır

İçerik Güvenliği Politikası 2. Katman spesifikasyonunun ilk taslaklarında, farklı bir söz dizimi dışında X-XSS-Protection başlığından başka bir şey sunmayan bir reflected-xss yönergesi vardı. Bu yönerge, 2015'te spesifikasyondan kaldırıldı ancak Chrome'da uygulanmadan önce kaldırılmadı. Bu yönerge için destek artık kaldırılıyor.

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

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

CSP referrer yönergesi, site sahiplerinin bir HTTP başlığından yönlendiren politikası belirlemesine olanak tanıyordu. Bu özellik yalnızca çok düşük bir kullanıma sahip olmakla kalmaz, artık hiçbir W3C spesifikasyonunun parçası değildir.

Bu işleve hâlâ ihtiyaç duyan siteler <meta name="referrer"> veya yeni Referrer-Policy başlığını kullanmalıdır.

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

PaymentAddress.careOf alanını kaldırın

PaymentAddress arayüzünde standart olmayan bir careOf alanı var (bilinen adres standartları bunu desteklemez). careOf alanı da gereksizdir, alıcı ve kuruluş alanları tüm gerekli kullanım alanlarını yeterince destekler. careOf eklemek, mevcut posta adresi şemalarıyla ve API'leriyle birlikte çalışabilirlik açısından önemli sorunlara yol açar. Daha ayrıntılı bir tartışma için GitHub'daki özellik kaldırma önerisini 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 hiç kullanılmaz. Bu özellik Chrome 54'te desteği sonlandırıldı ve artık kaldırıldı.

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