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 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 olduğu için bu modu güvenli bir şekilde uygulamak zordur ve modun güvenliği kolayca ihlal edilebilir. 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'de ECDSA birkaç kuruluş tarafından kullanılır ve genellikle daha karmaşık bir kurulumla (bazı eski istemciler yalnızca RSA'yı destekler) kullanılır. 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 False Start 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 medyanın 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, son işleme tabi tutulan çok sayıda özel komut dosyası etiketi (ör. type="text/template") içeren sitelere giden kullanıcıların verilerini kaydetmek için tasarlanmıştır.

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 dile bakılmaksızın 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 özelliğin yerini, 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() aldı. 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 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 üst bilgisinden yönlendiren politikası ayarlamalarına olanak tanıdı. Bu özellik yalnızca çok az kullanılmıyor, artık W3C spesifikasyonlarının bir parçası da değil.

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ı