Wycofania i usunięcia w Chrome 58

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. W tym artykule opisano funkcje, które zostały wycofane lub usunięte w Chrome 58, która od 16 marca jest w wersji beta. Ta lista może ulec zmianie w każdej chwili.

Mysz na Androidzie przestaje wywoływać zdarzenia TouchEvents

Do Chrome 57 zdarzenia myszy na niskim poziomie w Chrome na Androida były obsługiwane głównie przez ścieżkę zdarzeń przeznaczoną do interakcji dotykowych. Na przykład przeciąganie myszy podczas naciśnięcia przycisku myszy generuje zdarzenie MotionEvents, które jest wysyłane przez View.onTouchEvent.

Ponieważ jednak zdarzenia dotyku nie obsługują najechania kursorem, ruchy kursora podczas najeżdżania na element śledzą osobną ścieżkę. Ta konstrukcja miała wiele efektów ubocznych, m.in. wywoływanie TouchEvents przez interakcje z myszą, wyświetlanie wszystkich przycisków myszy jako lewego oraz tłumienie MouseEvents przez TouchEvents.

Począwszy od wersji 58 Chrome mysz na Androidzie M lub nowszym:

  • Nie wywołuje już funkcji TouchEvents.
  • Wywoływanie spójnej sekwencji MouseEvents za pomocą odpowiednich przycisków i innych właściwości.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usuwanie z atrybutu usemap dopasowania bez rozróżniania wielkości liter

Atrybut usemap był wcześniej zdefiniowany jako nierozróżniający wielkości liter. Niestety wdrożenie tej funkcji było na tyle skomplikowane, że żadna przeglądarka nie wdrożyła jej prawidłowo. Badania wykazały, że tak skomplikowany algorytm nie jest potrzebny, a nawet dopasowanie ASCII z ignorowaniem wielkości liter nie jest konieczne.

W związku z tym specyfikacja została zaktualizowana, aby uwzględnić dopasowywanie z rozróżnianiem wielkości liter. Stare zachowanie zostało wycofane w Chrome 57 i nie jest już dostępne.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usuwanie inicjowanych przez treści przejść do adresów URL danych w górnym okienku

Ponieważ użytkownicy nietechniczni nie są z nimi zaznajmieni, coraz częściej obserwujemy, że schemat data: jest wykorzystywany w atakach spoofingowych i phishingowych. Aby temu zapobiec, blokujemy wczytywanie stron z adresami URL data: w ramce górnej. Dotyczy to tagów <a>, window.open, window.location i podobnych mechanizmów. Schemat data: nadal będzie działać w przypadku zasobów wczytywanych poniżej przez stronę.

Ta funkcja zostanie usunięta w Chrome 60.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usuwanie nieużywanych nazw właściwości ścieżki animacji

Właściwości CSS ścieżki animacji umożliwiają autorom animowanie dowolnego obiektu graficznego wzdłuż ścieżki określonej przez autora. Zgodnie ze specyfikacją w Chrome 45 zaimplementowano kilka właściwości. W połowie 2016 r. zmieniono nazwy tych usług w specyfikacji. Chrome wdrożył nowe nazwy w Chrome 55 i Chrome 56. Wprowadziliśmy też ostrzeżenia o wycofaniu konsoli.

W Chrome 58 stare nazwy właściwości są usuwane. Poniżej znajdziesz listę usług, których to dotyczy, oraz ich nowe nazwy.

Usunięta usługa Bieżąca nazwa
ścieżka animacji offset-path
motion-offset offset-distance
motion-rotation offset-rotate
ruch przesunięcie

Intencja usunięcia

Usuwanie szyfrowania na poziomie elementu z kontekstów niezabezpieczonych

Niektóre zastosowania zaszyfrowanych rozszerzeń multimediów (EME) ujawniają implementacje zarządzania prawami cyfrowymi, które nie są oparte na kodzie źródłowym, umożliwiają dostęp do trwałych identyfikatorów unikalnych lub są uruchamiane bez piaskownicy lub z uprzywilejowanym dostępem. Zagrożenia dla bezpieczeństwa zwiększają się w przypadku stron udostępnianych za pomocą niezabezpieczonego protokołu HTTP, ponieważ mogą one być atakowane przez każdego użytkownika na kanale. Dodatkowo, gdy wymagana jest zgoda użytkownika, przechowywanie zgody na niezabezpieczoną witrynę HTTP może zostać wykorzystane przez takiego atakującego.

Obsługa kontekstów niezabezpieczonych została usunięta ze specyfikacji EME w wersji 1 i nie jest obsługiwana w zalecanej specyfikacji ani w planowanej specyfikacji końcowej. Nie będzie też uwzględniona w przyszłej zalecanej specyfikacji ani w planowanej specyfikacji końcowej. Od wersji 44 Chrome (maj 2015 r.) interfejs API wyświetla komunikat o wycofaniu w przypadku niezabezpieczonych źródeł. W Chrome 58 został on usunięty. Ta zmiana jest częścią naszych szerszych działań mających na celu usunięcie zaawansowanych funkcji z niezabezpieczonych źródeł.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usuń wywołującego starszego typu w przypadku HTMLEmbedElement i HTMLObjectElement

Jeśli interfejs ma wywołanie starszego typu, oznacza to, że instancję można wywołać jako funkcję. Obecnie tę funkcję obsługują HTMLEmbedElement i HTMLObjectElement. W Chrome 57 ta funkcja została wycofana. Od wersji 58 Chrome wywołanie powoduje wyjątek.

Ta zmiana wprowadza do Chrome zgodność z niedawnymi specyfikacjami. Starsze zachowanie nie jest obsługiwane w Edge ani Safari i jest usuwane z Firefoxa.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usuń szyfry ChaCha20-Poly1305 zgodne ze standardem wstecz.

W 2013 r. w Chrome 31 wdrożyliśmy nowe zestawy szyfrów TLS oparte na algorytmach ChaCha20 i Poly1305 prof. Dana Bernsteina. Zostały one później z niewielkimi zmianami sformalizowane przez IETF w standardach RFC 7539 i RFC 7905. Wersja zestandaryzowana została wydana na początku 2016 r. w ramach Chrome 49. Obecnie usuwamy wersje wstępnie standardowe.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usunięcie obsługi dopasowywania nazwy wspólnej w certyfikatach

RFC 2818 opisuje 2 metody dopasowywania nazwy domeny do certyfikatu: za pomocą dostępnych nazw w rozszerzeniu subjectAlternativeName lub, w przypadku braku rozszerzenia SAN, z wykorzystaniem commonName. Użycie commonName zostało wycofane w specyfikacji RFC 2818 (opublikowanej w 2000 roku), ale nadal jest obsługiwane przez wielu klientów TLS, często nieprawidłowo.

Korzystanie z pol subjectAlternativeName sprawia, że nie ma wątpliwości, czy certyfikat jest powiązany z adresem IP czy nazwą domeny, oraz czy jest w pełni zdefiniowany pod kątem interakcji z ograniczeniami nazw. Jednak commonName jest niejednoznaczny, przez co jego obsługa była źródłem błędów zabezpieczeń w Chrome, bibliotekach, których używa, oraz w całym ekosystemie TLS.

Usunięcie commonName spowoduje niewielkie ryzyko niezgodności. Standard RFC 2818 został wycofany prawie 20 lat temu, a podstawowe wymagania (których muszą przestrzegać wszystkie publicznie zaufane urzędy certyfikacji) wymagają obecności subjectAltName od 2012 roku. Od wersji Firefoxa 48 Firefox wymaga już subjectAltName w przypadku nowo wydanych publicznie zaufanych certyfikatów.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Elementy interfejsu regions, addRegion() i removeRegion() zostały usunięte ze specyfikacji WebVTT i usunięte w Chrome 58, aby zachować zgodność z najnowszą specyfikacją. Spodziewamy się, że usunięcie tych elementów nie będzie miało większego wpływu, ponieważ funkcja nigdy nie była domyślnie włączona (była dostępna tylko po włączeniu flagi). Osoby, które potrzebują alternatywy, mogą użyć właściwości VTTCue.region, która jest dodawana w Chrome 58.

Chromestatus Tracker | Chromium Bug

WebAudio: usuń interfejs AudioSourceNode

Interfejs AudioSourceNode nie jest częścią specyfikacji Web Audio, nie można go tworzyć, nie ma atrybutów, więc nie ma żadnych funkcji dostępnych dla deweloperów. Dlatego został usunięty.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usuwanie atrybutu globalnego webkitdropzone

Atrybut globalny dropzone został wprowadzony w specyfikacji HTML5 dotyczącej przeciągania i upuszczania jako deklaratywna metoda określania, czy element HTML może być celem operacji przeciągania i upuszczania, typów treści, które można upuścić na element, oraz operacji przeciągania i upuszczania (kopiowanie/przenoszenie/linkowanie).

Atrybut nie zyskał popularności wśród dostawców przeglądarek. Blink i WebKit implementują tylko wersję z prefiksem atrybutu, webkitdropzone. Atrybut dropzone został usunięty ze specyfikacji na początku marca 2017 r., dlatego wersja z prefiksem jest usuwana z Chrome.

Intend to Remove | Chromestatus Tracker | Chromium Bug

wycofanie nieprawidłowego sposobu używania powiadomień;

Powiadomienia są potężną funkcją, ponieważ umożliwiają witrynom wywołanie interfejsu systemu w celu przesłania informacji prywatnych lub sygnału o zmianie tych informacji. Osoby przeprowadzające atak mogą podsłuchiwać lub kraść informacje wysyłane za pomocą powiadomienia przez niezabezpieczone połączenie. Powiadomienia web push wymagają bezpiecznego źródła, więc ta zmiana dopasuje powiadomienia niebędące powiadomieniami push do powiadomień push. Ta zmiana jest częścią naszych szerszych działań mających na celu usunięcie zaawansowanych funkcji z niezabezpieczonych źródeł.

Intend to Remove | Chromestatus Tracker | Chromium Bug

wycofanie obsługi powiadomień z niezabezpieczonych ramek iframe;

Prośby o przyznanie uprawnień z ramek iframe mogą wprowadzać użytkowników w błąd, ponieważ trudno jest odróżnić pochodzenie strony zawierającej od pochodzenia ramki iframe, która wysyła żądanie. Gdy zakres żądań jest niejasny, użytkownicy mają trudności z zadaniem, czy przyznać uprawnienia, czy też nie.

Zablokowanie powiadomień w ramkach iframe pozwoli też dostosować wymagania dotyczące zgody na powiadomienia do wymagań dotyczących powiadomień push, co ułatwi pracę deweloperom.

Deweloperzy, którzy potrzebują tej funkcji, mogą otworzyć nowe okno, aby poprosić o uprawnienia dotyczące powiadomień.

Został usunięty w Chrome 62.

Intend to Remove | Chromestatus Tracker | Chromium Bug

Usuń indexedDB.webkitGetDatabaseNames()

Dodaliśmy tę funkcję, gdy Indexed DB była stosunkowo nową w Chrome, a prefiksowanie było na topie. Interfejs API asynchronicznie zwraca listę nazw istniejących baz danych w źródle, co wydaje się rozsądne.

Niestety ta konstrukcja ma wadę polegającą na tym, że wyniki mogą być nieaktualne w momencie ich zwrócenia, więc można jej używać tylko do rejestrowania, a nie do poważnej logiki aplikacji. Problem na GitHubie zawiera informacje o poprzedniej dyskusji na temat alternatyw, które wymagają innego podejścia. Deweloperzy interesują się tym tematem, ale ze względu na brak postępów w rozwiązaniu tego problemu w różnych przeglądarkach autorzy bibliotek znaleźli sposób na obejście go.

Deweloperzy, którzy potrzebują tej funkcji, muszą opracować własne rozwiązanie. Biblioteki takie jak Dexie.js używają globalnej tabeli, która jest kolejną bazą danych służącą do śledzenia nazw baz danych.

Ta funkcja została usunięta w Chrome 60.

Zamierzamy wycofać | Chromestatus Tracker | Błąd w Chromium