Wycofania i usuwania interfejsów API w Chrome 56

Joe Medley
Joe Medley

W prawie każdej wersji Chrome wprowadzamy znaczną liczbę aktualizacji i ulepszeń dotyczących produktu, jego wydajności oraz możliwości platformy internetowej. Z tego artykułu dowiesz się, które funkcje są wycofywane i usuwane w Chrome 56, który 8 grudnia jest dostępny w wersji beta. Ta lista może w każdej chwili ulec zmianie.

Usuwanie obsługi certyfikatów SHA-1

Algorytm kryptograficzny SHA-1 po raz pierwszy wykazał oznaki słabości ponad 11 lat temu, a niedawne badania wskazują na zbliżającą się możliwość ataków, które mogą bezpośrednio wpłynąć na integralność infrastruktury kluczy publicznych (PKI) w internecie.

Aby chronić użytkowników przed takimi atakami, od wersji 56 Chrome (stabilna wersja z stycznia 2017 r.) nie obsługuje już certyfikatów SHA-1. Odwiedzenie witryny z takim certyfikatem powoduje wyświetlenie pełnoekranowego ostrzeżenia. Więcej informacji znajdziesz na blogu o bezpieczeństwie w Chrome.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usuwaj szyfry ECDSA w trybie CBC w TLS

Konstrukcja TLS w trybie CBC jest wadliwa, przez co jest niestabilna i bardzo trudna do bezpiecznego wdrożenia. Chociaż szyfry w trybie CBC są nadal powszechnie używane w przypadku RSA, w przypadku ECDSA są one praktycznie nieobecne. Inne przeglądarki nadal obsługują te szyfry, dlatego uważamy, że ryzyko jest niskie. Dodatkowo ECDSA w TLS jest używana przez niewiele organizacji i zwykle w ramach bardziej złożonej konfiguracji (niektórzy starsi klienci obsługują tylko RSA), więc oczekujemy, że witryny korzystające z ECDSA będą lepiej utrzymywane i szybciej reagować na problemy.

TLS 1.2 zawiera nowe szyfry oparte na AEAD, które eliminują te problemy, w tym AES_128_GCM, AES_256_GCM i CHACHA20_POLY1305. Chociaż obecnie wymagamy tego tylko w przypadku witryn opartych na algorytmie ECDSA, zalecamy, aby wszyscy administratorzy to zrobili. Mechanizmy szyfrowania AEAD nie tylko zwiększają bezpieczeństwo, ale i wydajność. AES-GCM ma obsługę sprzętową na najnowszych procesorach, a ChaCha20-Poly1305 umożliwia szybkie implementacje oprogramowania. Z drugiej strony szyfrowanie CBC wymaga stosowania skomplikowanych metod zapobiegania atakom i dostępu do generatora liczb pseudolosowych w przypadku każdego rekordu wychodzącego. Szyfry oparte na AEAD są też wymagane do optymalizacji HTTP/2 i False Start.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usuwanie gestów użytkownika z przewijania dotykiem

Zauważyliśmy wiele przykładów źle napisanych lub szkodliwych reklam, które uruchamiają nawigację w przypadku przewijania dotykiem w przypadku zdarzeń touchstart lub wszystkich zdarzeń touchend. Jeśli zdarzenie „koło” nie może otworzyć wyskakującego okienka, przewijanie dotykiem też nie powinno. Może to powodować nieprawidłowe działanie niektórych scenariuszy, np. niedziałające po dotknięciu multimedia lub nieotwierające się po dotknięciu wyskakujące okienka. Safari już teraz nie otwiera wyskakujących okienek w żadnym z tych scenariuszy.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Nie zezwalaj na pobieranie skryptów z nieprawidłowymi atrybutami typu lub języka

Obecnie skaner wstępnego wczytywania w Chrome pobiera elementy z elementów <scripts> niezależnie od wartości atrybutu type lub language, ale skrypt nie zostanie wykonany podczas analizowania. Wycofanie obsługi pobierania sprawi, że skaner wstępnego wczytywania i analizator będą miały tę samą semantykę, a my nie będziemy inicjować pobierania skryptów, których nie będziemy używać. Ma to na celu oszczędzanie danych użytkowników, którzy przechodzą do witryn z dużą liczbą niestandardowych tagów skryptu, które są poddawane dalszej obróbce (np. type="text/template").

Przypadek użycia nieprawidłowych skryptów do pingowania serwerów jest szczegółowo omówiony w interfejsie sendBeacon API.

Ta zmiana dopasowuje Chrome do Safari, ale Firefox nadal wysyła żądania skryptów niezależnie od typu lub języka.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usuń MediaStreamTrack.getSources()

Ta metoda nie jest już częścią specyfikacji i nie jest obsługiwana przez żadną inną główną przeglądarkę. Został on zastąpiony przez MediaDevices.enumerateDevices(), który jest obsługiwany przez Blink bez flag od wersji 47 i jest też obsługiwany przez inne przeglądarki. Przykład poniżej znajduje się poniżej. Ta hipotetyczna funkcja getCameras() najpierw używa wykrywania cech, aby znaleźć funkcję enumerateDevices() i ją wykorzystać. Jeśli wykrywanie funkcji się nie powiedzie, funkcja getSources() zostanie wyszukana w MediaStreamTrack. Jeśli interfejs API nie obsługuje żadnego rodzaju, zwraca pustą tablicę 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);
      }
    };

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usuwanie dyrektywy CSP reflected-xss

Wczesne wersje robocze specyfikacji Content Security Policy Level 2 zawierały dyrektywę reflected-xss, która oprócz nagłówka X-XSS-Protection ma inną składnię. Ta dyrektywa została usunięta ze specyfikacji w 2015 roku, ale nie wcześniej niż została zaimplementowana w Chrome. Obsługa tej dyrektywy jest obecnie usuwana.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Zastępowanie dyrektywy „referrer” w standardzie CSP

Dyrektywa CSP referrer pozwalała właścicielom witryn ustawiać zasady dotyczące stron odsyłających z nagłówka HTTP. Ta funkcja jest bardzo rzadko używana i nie jest już częścią specyfikacji W3C.

W przypadku witryn, które nadal potrzebują tej funkcji, należy użyć <meta name="referrer"> lub nowego nagłówka Referrer-Policy.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usuń pole PaymentAddress.careOf

Interfejs PaymentAddress zawiera pole careOf, które jest niestandardowe (nie są obsługiwane żadne dobrze znane standardy adresów). Pole careOf jest też niepotrzebne, ponieważ pola odbiorcy i organizacji wystarczająco obsługują wszystkie niezbędne przypadki użycia. Dodanie careOf stwarza poważne problemy w zakresie interoperacyjności z istniejącymi schematami adresów pocztowych i interfejsami API. Aby dowiedzieć się więcej, przeczytaj propozycję usunięcia specyfikacji w GitHub.

Zamiar usunięcia | Błąd Chromium

Usuń SVGViewElement.viewTarget

Atrybut SVGViewElement.viewTarget nie jest częścią specyfikacji SVG 2.0, a jego użycie jest niewielkie lub nie występuje. Ten atrybut został wycofany w Chrome 54 i teraz został usunięty.

Intend to Remove | Chromestatus Tracker | Chromium Bug