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 liste herhangi bir zamanda değişebilir.

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östermişti. Yakın zamanda yapılan 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 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 olduğu için bu modu güvenli bir şekilde uygulamak zordur. CBC modu şifreler 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 kullanılır (bazı eski istemciler yalnızca RSA'yı destekler). Bu nedenle, ECDSA sitelerinin daha iyi korunmasını ve sorun durumunda daha duyarlı olmasını bekleriz.

TLS 1.2, bu sorunları önleyen AEAD'lere dayalı yeni şifreler ekledi. Özellikle AES_128_GCM, AES_256_GCM veya CHACHA20_POLY1305 bu şifrelerdendir. Ş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 yanlış başlangıç optimizasyonları için de ön koşuldur.

Kaldırma Niyeti | Chromestatus İzleyici | 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, bu senaryoların hiçbirinde pop-up'ları sessizce açmaz.

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

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

Ş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 özelliğinin desteği sonlandırıldığında ön yükleme tarayıcı ve ayrıştırıcı aynı semantiklere sahip olacak ve kullanmayacağımızı bildiğimiz komut dosyaları için getirme işlemi başlatılmayacaktır. Bu, sonradan işlenmiş çok sayıda özel komut dosyası etiketi (ör. type="text/template" gibi) içeren sitelere giden kullanıcıların verilerini kaydetmeyi amaçlar.

Sunucuları pinglemek için geçersiz komut dosyaları kullanmanın kullanım alanı, sendBeacon API tarafından yeterince kapsanmaktadır.

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

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

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

Bu yöntem artık spesifikasyonun bir parçası değildir ve diğer büyük tarayıcılar tarafından desteklenmez. 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ı

reflected-xss CSP yönergesini kaldırma

İç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 yer alıyordu. 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 üst bilgisinden yönlendiren politikası ayarlamalarına olanak tanıdı. 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ı, gerekli tüm 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 Niyeti | Chromium Hatası

SVGViewElement.viewTarget özelliğini kaldırın.

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ı