Zaczynamy wdrażać Chrome 83 w wersji stabilnej.
Oto, co musisz wiedzieć na ten temat:
- Typy zaufane pomagają unikać luk w zabezpieczeniach związanych ze skryptami cross-site scripting.
- Elementy formularzy otrzymują ważne zmiany.
- Pojawił się nowy sposób wykrywania wycieków pamięci.
- Interfejs API natywnego systemu plików uruchamia nowy test źródła z dodatkowymi funkcjami.
- Nowe zasady dotyczące witryn z innych domen
- Wprowadziliśmy program Wskaźniki internetowe, aby zapewnić spójne wskazówki dotyczące sygnałów dotyczących jakości, które według nas są niezbędne do zapewnienia użytkownikom dobrych wrażeń z korzystania z internetu.
- I inne.
Jestem Pete LePage. Pracuję i nagrywam z domu. Sprawdźmy, co nowego dla deweloperów w Chrome 83.
Zaufane typy
Skrypty krzyżowe oparte na modelu DOM to jedna z najpowszechniejszych luk w zabezpieczeniach w internecie. Łatwo jest przypadkowo wprowadzić nazwę użytkownika na stronie. Typy zaufane pomagają zapobiegać tego typu lukom w zabezpieczeniach, ponieważ wymagają one przetworzenia danych przed przekazaniem ich do potencjalnie niebezpiecznej funkcji.
Weźmy na przykład innerHTML
z włączonymi zaufanymi typami. Jeśli spróbuję przekazać ciąg znaków, spowoduje to błąd typu TypeError, ponieważ przeglądarka nie wie, czy może go zaufać.
// Trusted types turned on
const elem = document.getElementById('myDiv');
elem.innerHTML = `Hello, world!`;
// Will throw a TypeError
Zamiast tego muszę użyć bezpiecznej funkcji, takiej jak textContent
, przekazać zaufany typ lub utworzyć element i użyć appendChild()
.
// Use a safe function
elem.textContent = ''; // OK
// Pass in a trusted type
import DOMPurify from 'dompurify';
const str = `Hello, world!`;
elem.innerHTML = DOMPurify.sanitize(str, {RETURN_TRUSTED_TYPE: true});
// Create an element
const img = document.createElement('img');
img.src = 'xyz.jpg';
elem.appendChild(img);
Zanim włączysz zaufane typy, musisz wykryć i naprawić wszelkie naruszenia przy użyciu nagłówka CSP report-only
.
Content-Security-Policy-Report-Only: require-trusted-types-for 'script'; report-uri //example.com
Gdy już wszystko będzie gotowe, możesz włączyć go prawidłowo. Szczegółowe informacje znajdziesz w artykule o zapobieganiu lukom w zabezpieczeniach opartych na DOM przy użyciu zaufanych typów na web.dev.
Aktualizacje elementów sterujących formularza
Codziennie wykorzystujemy elementy sterujące formularza HTML i są one kluczem do interakcji w internecie. Są łatwe w użyciu, mają wbudowane ułatwienia dostępu i są dobrze znane naszym użytkownikom. Styl elementów sterujących formularza może być niespójny w różnych przeglądarkach i systemach operacyjnych. Często musimy wysyłać pewne reguły CSS, by zachować spójny wygląd na różnych urządzeniach.
Byłem pod ogromnym wrażeniem pracy Microsoftu, która ma na celu modernizację elementów sterujących formularza. Oprócz ładniejszego wyglądu zapewniają lepszą obsługę dotykową i lepsze ułatwienia dostępu, w tym udoskonaloną obsługę klawiatury.
Nowe elementy sterujące formularza są już dostępne w Microsoft Edge, a teraz są dostępne w Chrome 83. Więcej informacji znajdziesz w artykule na temat aktualizacji elementów sterujących i zaznaczenia formularza na blogu Chromium.
Testowanie origin
Zmierz pamięć za pomocą funkcji measureMemory()
Rozpoczynamy testowanie origin w Chrome 83 performance.measureMemory()
to nowy interfejs API, który umożliwia mierzenie wykorzystania pamięci strony i wykrywanie wycieków pamięci.
Wyciek pamięci można łatwo wprowadzić:
- zapominanie wyrejestrować detektora zdarzeń,
- Przechwytywanie obiektów z elementu iframe
- Nie zamykam instancji roboczej
- Zbieram obiekty w tablicach
- i tak dalej.
Wyciek pamięci powoduje, że strony, które wyglądają wolno, są rozładowane i przeznaczone dla użytkowników.
if (performance.measureMemory) {
try {
const result = await performance.measureMemory();
console.log(result);
} catch (err) {
console.error(err);
}
}
Informacje o nowym interfejsie API znajdziesz w artykule Monitorowanie całkowitego wykorzystania pamięci przez Twoją stronę internetową za pomocą narzędzia measureMemory()
na web.dev.
Aktualizacje interfejsu Native File System API
W przypadku interfejsu Native File System API rozpoczęto w Chrome 83 nowy test źródła, który umożliwił dostęp do strumieni z możliwością zapisu i umożliwił zapisywanie uchwytów plików.
async function writeURLToFile(fileHandle, url) {
// Create a FileSystemWritableFileStream to write to.
const writable = await fileHandle.createWritable();
// Make an HTTP request for the contents.
const response = await fetch(url);
// Stream the response into the file.
await response.body.pipeTo(writable);
// pipeTo() closes the destination pipe automatically.
}
Strumienie z możliwością zapisu znacznie ułatwiają zapisywanie w pliku, a ponieważ jest to strumień, można łatwo przesyłać odpowiedzi potokami z jednego strumienia do drugiego.
Zapisanie uchwytów plików w IndexedDB umożliwia przechowywanie ich stanu lub zapamiętywanie, nad którymi plikami pracował użytkownik. Na przykład może to być lista ostatnio edytowanych plików, otwieranie ostatniego pliku, nad którym pracował użytkownik itd.
Aby korzystać z tych funkcji, musisz mieć nowy token próbny origin. Zapoznaj się więc ze zaktualizowanym artykułem The Native File System API: Uproszczony dostęp do plików lokalnych na web.dev. Znajdziesz w nim wszystkie szczegóły i dowiedzieć się, jak uzyskać nowy token próbny origin.
Testowanie innych origin
Sprawdź pełną listę funkcji dostępnych w wersji próbnej origin.
Nowe zasady dotyczące innych domen
Niektóre internetowe interfejsy API zwiększają ryzyko ataków typu side-channel, np. Spectre.
Aby ograniczyć to ryzyko, przeglądarki oferują izolowane środowisko (akceptowalne) nazywane izolowanym od zasobów z innych domen. Stan izolowany od zasobów z innych domen uniemożliwia też modyfikowanie parametru document.domain
. Możliwość zmodyfikowania pliku document.domain
umożliwia komunikację między dokumentami znajdującymi się w tej samej witrynie i jest uznawana za lukę w zasadach dotyczących tej samej domeny.
Szczegółowe informacje znajdziesz w poście Eiji na temat koncentrowania się na odizolowaniu witryny od zasobów z innych domen za pomocą COOP i COEP.
Wskaźniki internetowe
Pomiar jakości wrażeń użytkownika ma wiele aspektów. Niektóre aspekty wrażeń użytkownika są zależne od witryny i kontekstu, ale istnieje wspólny zestaw sygnałów – „podstawowe wskaźniki internetowe” – kluczowe dla wszystkich działań w internecie. Te podstawowe potrzeby związane z wrażeniami użytkownika obejmują wygodę wczytywania, interaktywność i stabilność wizualną zawartości strony. Podstawą tych wskaźników są Podstawowe wskaźniki internetowe z 2020 roku.
- Największe wyrenderowanie treści mierzy postrzeganą szybkość ładowania i oznacza na osi czasu wczytywania strony punkt, w którym prawdopodobnie załadowano jej główną zawartość.
- Opóźnienie przy pierwszym działaniu mierzy responsywność i określa wrażenia użytkowników, którzy próbują po raz pierwszy wejść w interakcję ze stroną.
- Skumulowane przesunięcie układu mierzy stabilność wizualną i określa nieoczekiwane przesunięcie układu widocznej zawartości strony.
Wszystkie te wskaźniki rejestrują ważne wyniki dotyczące użytkownika, są wymierne w polu i mają odpowiadające im dane diagnostyczne oraz narzędzia. Na przykład, największe wyrenderowanie treści to wskaźnik wczytywania najwyższego poziomu, ale jest on również w dużym stopniu zależny od pierwszego wyrenderowania treści (FCP) i czasu do pierwszego bajtu (TTFB), które mają kluczowe znaczenie w monitorowaniu i ulepszaniu.
Więcej informacji znajdziesz na blogu Chromium w artykule o wskaźnikach internetowych: kluczowych danych, które pozwalają tworzyć dobrą witrynę.
I nie tylko
- Chrome obsługuje teraz interfejs Barcode Detection API, który umożliwia wykrywanie i dekodowanie kodów kreskowych.
- Nowa funkcja CSS
@supports
umożliwia wykrywanie funkcji selektorów arkusza CSS. - Nowe adnotacje ARIA obsługują ułatwienia dostępu czytnika ekranu w przypadku komentarzy, sugestii i wyróżnień tekstu o znaczeniu (podobnie jak
<mark>
). - Zapytanie o multimedia
prefers-color-scheme
pozwala autorom stosować własny ciemny motyw i mieć pełną kontrolę nad ich tworzeniem. - JavaScript obsługuje teraz moduły w współdzielonych instancjach roboczych.
Chcesz wiedzieć więcej o przyszłości? Sprawdź to w narzędziu do śledzenia interfejsu Fugu API.
Więcej informacji
Obejmuje to tylko niektóre z najważniejszych momentów. Aby dowiedzieć się więcej o nowych zmianach w Chrome 83, kliknij poniższe linki.
- Nowości w Narzędziach deweloperskich w Chrome (83)
- Wycofywanie i usuwanie Chrome 83
- Aktualizacje ChromeStatus.com dla Chrome 83
- Nowości w JavaScript w Chrome 83
- Lista zmian repozytorium źródłowego Chromium
Zasubskrybuj
Jeśli chcesz być na bieżąco z naszymi filmami, zasubskrybuj kanał dla deweloperów Chrome w YouTube, a za każdym razem, gdy opublikujemy nowy film, otrzymasz e-maila z powiadomieniem.
Nazywam się Pete LePage i chcę obciąć włosy, ale zaraz gdy tylko wprowadzimy Chrome 84, chętnie opowiem Ci, co nowego w Chrome.