Společnost Google představila verzi webového prohlížeče Chrome 94. Současně je k dispozici stabilní verze otevřeného projektu Chromium, který tvoří základ Chrome. Prohlížeč Chrome se odlišuje použitím logotypů Google, systémem odesílání oznámení v případě pádu, moduly pro přehrávání chráněného videa (DRM), systémem automatické instalace aktualizací a přenášením RLZ parametrů při vyhledávání. Další verze Chrome 95 je plánována na 19. října.
Od verze Chrome 94 byla vývojová práce převedena na nový cyklus přípravy vydání. Nové významné verze budou nyní publikovány každé 4 týdny, namísto každých 6 týdnů, což urychlí dostávání nových funkcí k uživatelům. Je pozorováno, že optimalizace procesu přípravy vydání a zlepšení testovacího systému umožňují častější vydání bez zhoršení kvality. Pro podniky a pro ty, kteří potřebují více času na aktualizaci, bude každých 8 týdnů vydávána samostatná edice Extended Stable, která umožní přechod na nové funkční vydání každých 8 týdnů místo každých 4 týdnů.
Hlavní změny v Chrome 94:
- Byl přidán režim HTTPS-First, který připomíná dříve zavedený režim HTTPS Only ve Firefoxu. Pokud je režim aktivován v nastavení, při pokusu o otevření zdroje bez šifrování přes HTTP se prohlížeč nejprve pokusí přistoupit na stránku přes HTTPS a pokud tato pokus selže, bude uživateli zobrazena zpráva o absenci podpory HTTPS a nabídnuto otevřít stránku bez šifrování. V budoucnu zvažuje Google možnost aktivace HTTPS-First ve výchozím nastavení pro všechny uživatele, omezení přístupu k některým funkcím webové platformy pro stránky otevřené přes HTTP a přidání dalších varování informujících uživatele o hrozbách spojených s přístupem na stránky bez šifrování. Režim se aktivuje v sekci nastavení „Soukromí a zabezpečení“ > „Zabezpečení“ > „Další“.

- Pro stránky otevřené bez HTTPS je zakázáno odesílání žádostí (stahování zdrojů) na místní URL (např. „http://router.local“ a localhost) a interní adresní rozsahy (127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8 atd.). Výjimka je povolena pouze pro stránky načtené z servery, které mají interní IP. Například stránka načtená z serveru 1.2.3.4 se může připojit k prostředku umístěnému na IP 192.168.0.1 nebo IP 127.0.0.1, zatímco stránka načtená ze serveru 192.168.1.1 – může. Změna zavádí další úroveň ochrany proti zneužívání zranitelností v obslužných programech, které přijímají dotazy na místní IP, a také ochrání před útoky typu „DNS rebinding“.
- Byla přidána funkce „Sharing Hub“, která umožňuje snadno sdílet odkaz na aktuální stránku s ostatními uživateli. Je možné generovat QR kód s URL, uložit stránku, poslat odkaz na jiná zařízení připojená k uživatelskému účtu, a předávat odkaz na externí webové stránky jako Facebook, WhatsApp, Twitter a VK. Tato funkce zatím není dostupná pro všechny uživatele. Pro vynucení zobrazení tlačítka „Share“ v menu a adresním řádku lze použít nastavení „chrome://flags/#sharing-hub-desktop-app-menu“ a „chrome://flags/#sharing-hub-desktop-omnibox“.

- Byla provedena restrukturalizace v rozhraní nastavení prohlížeče. Každá sekce nastavení je nyní zobrazena na samostatné stránce, nikoliv na jedné společné.

- Byla implementována podpora dynamické aktualizace logu vydaných a odvolaných certifikátů (Certificate Transparency), který bude nyní aktualizován nezávisle na aktualizaci prohlížeče.
- Byla přidána stránka „chrome://whats-new“ s přehledem viditelných změn pro uživatele v novém vydání. Stránka se automaticky zobrazuje hned po aktualizaci nebo je dostupná prostřednictvím tlačítka „Co je nového“ (What’s New) v menu Nápověda (Help). V tuto chvíli se na stránce zmiňuje vyhledávání podle záložek, schopnost rozdělení profilů a funkce změny barvy pozadí, které nejsou specifické pro Chrome 94 a objevily se v předchozích verzích. Zobrazení stránky není zatím zapnuto pro všechny uživatele: pro správu aktivace lze použít nastavení „chrome://flags#chrome-whats-new-ui“ a „chrome://flags#chrome-whats-new-in-main-menu-new-badge“.

- Volání na API WebSQL z obsahu načítaného z externích webů (např. prostřednictvím iframe) bylo označeno za zastaralé. V Chromu 94 se při pokusu o použití WebSQL z externích skriptů zobrazí varování, ale od Chromu 97 budou tato volání blokována. V budoucnu je plánováno postupné úplné ukončení podpory WebSQL bez ohledu na kontext použití. Zpracovatel WebSQL je založen na kódu SQLite a mohl být zneužit k exploataci zranitelností v SQLite.
- Z bezpečnostních důvodů a k prevenci škodlivých aktivit byla zahájena blokace používání zastaralého protokolu MK (URL:MK), který se dříve používal v Internet Exploreru a umožňoval webovým aplikacím extrahovat informace ze zkomprimovaných souborů.
- Byla ukončena podpora synchronizace se starými verzemi Chromu (Chrome 48 a starší).
- Do HTTP hlavičky Permissions-Policy, určené pro aktivaci určitých funkcí a řízení přístupu k API, byla přidána podpora příznaku "display-capture", který umožňuje řídit používání API Screen Capture na stránce (ve výchozím nastavení je možnost zachytávání obsahu obrazovky z externích iframe blokována).
- V režimu Origin Trials (experimentální funkce vyžadující samostatnou aktivaci) bylo přidáno několik nových API. Origin Trial zahrnuje možnost práce se specifikovaným API z aplikací načítaných z localhost nebo 127.0.0.1, nebo po registraci a získání speciálního tokenu, který platí omezenou dobu pro konkrétní web.
- Bylo přidáno API WebGPU, které nahrazuje API WebGL a poskytuje prostředky pro vykonávání operací na GPU, jako je rendering a výpočty. Koncepčně je WebGPU blízké API Vulkan, Metal a Direct3D 12. WebGPU se od WebGL liší přibližně tak, jak se grafické API Vulkan liší od OpenGL, ale není založeno na konkrétním grafickém API; představuje univerzální vrstvu, která využívá stejné nízkoúrovňové primitivy, které existují ve Vulkan, Metal a Direct3D 12.
WebGPU poskytuje aplikacím v JavaScriptu prostředky pro nízkoúrovňovou kontrolu nad organizací, zpracováním a přenosem příkazů na GPU, a také umoňuje spravovat související zdroje, paměť, buffery, objekty textur a zkompilované grafické shadery. Tento přístup umožňuje dosáhnout vyšší výkonnosti grafických aplikací tím, že se sníží režijní náklady a zlepší efektivita práce s GPU. API také nabízí možnost vytvářet pro web složité 3D projekty, které fungují stejně dobře jako samostatné programy, ale nejsou vázány na konkrétní platformy.
- Pro izolované PWA aplikace byla implementována možnost registrace jako zpracovatelé URL. Například aplikace music.example.com se může zaregistrovat jako zpracovatel URL https://*.music.example.com a všechny přechody z externích aplikací na tyto odkazy, například z messengerů a e-mailových klientů, povedou k otevření této PWA aplikace, nikoli nové záložky v prohlížeči.
- Byla zavedena podpora nového kódu HTTP — 103, který může být používán pro proaktivní poskytování hlaviček. Kód 103 umožňuje informovat klienta o obsahu některých HTTP hlaviček okamžitě po požadavku, aniž by čekal, až server dokončí všechny operace související s požadavkem a začne poskytovat obsah. Takto lze sdělit tipy o souvisejících prvcích s poskytovanou stránkou, které lze přednačíst (například mohou být uvedeny odkazy na CSS a JavaScript použité na stránce). Přijetím informací o takových zdrojích začne prohlížeč s jejich načítáním, aniž by čekal na dokončení dodání hlavní stránky, což umožňuje zkrátit celkový čas zpracování požadavku.
- Bylo přidáno API WebGPU, které nahrazuje API WebGL a poskytuje prostředky pro vykonávání operací na GPU, jako je rendering a výpočty. Koncepčně je WebGPU blízké API Vulkan, Metal a Direct3D 12. WebGPU se od WebGL liší přibližně tak, jak se grafické API Vulkan liší od OpenGL, ale není založeno na konkrétním grafickém API; představuje univerzální vrstvu, která využívá stejné nízkoúrovňové primitivy, které existují ve Vulkan, Metal a Direct3D 12.
- Byl přidán API WebCodecs pro manipulaci s multimediálními streamy na nízké úrovni, doplňující vysoce úrovňové API HTMLMediaElement, Media Source Extensions, WebAudio, MediaRecorder a WebRTC. Nové API se může ukázat jako žádané v oblastech jako je streamování her, aplikace efektů na straně klienta, pře*kódování streamů a podpora nestandardních multimediálních kontejnerů. Místo implementace jednotlivých kodeků v JavaScriptu nebo WebAssembly poskytuje API WebCodecs přístup k hotovým vysoce výkonným komponentám integrovaným v prohlížeči. Konkrétně API WebCodecs zahrnuje dekodéry a enkodéry zvuku a videa, dekodéry obrázků a funkce pro práci s jednotlivými snímky videa na nízké úrovni.
- Stabilizováno API Insertable Streams, které poskytuje možnost manipulovat s nekomprimovanými (raw) multimediálními streamy přenášenými přes API MediaStreamTrack, jako jsou data z kamery a mikrofonu, výstup zachycení obrazovky nebo mezipaměť dekódování kodekem. Pro reprezentaci nekomprimovaných snímků se používají rozhraní WebCodec, po kterých je vytvořen stream podobný tomu, co generuje API WebRTC Insertable Streams na základě RTCPeerConnections. Z praktického hlediska nové API umožňuje implementaci funkcionality, jako je použití metod strojového učení pro identifikaci nebo anotaci objektů v reálném čase nebo pro přidání efektů, jako je odřezání pozadí, před kodováním nebo po dekódování kodekem.
- Byl stabilizován метод scheduler.postTask(), který umožňuje spravovat plánování provádění úloh (callbacků JavaScriptu) s různými úrovněmi priority. Jsou k dispozici tři úrovně priority: 1 - provádění jako první, i když mohou být blokovány akce uživatele; 2 - změny viditelné pro uživatele jsou povoleny; 3 - provádění na pozadí). Pro změnu priority a zrušení úloh lze použít objekt TaskController.
- Byl stabilizován a nyní je k dispozici mimo Origin Trials API Idle Detection pro zjišťování neaktivity uživatele. API umožňuje stanovit dobu, kdy uživatel neinteraguje s klávesnicí/myší, běží spořič obrazovky, obrazovka je zamčená nebo se práce provádí na jiném monitoru. Informace o neaktivitě aplikaci se poskytují prostřednictvím odeslání oznámení po dosažení stanoveného prahu neaktivity.
- Byl formalizován proces správy barev v objektech CanvasRenderingContext2D a ImageData a jejich používání v barevném prostoru sRGB. Byla dána možnost vytvářet objekty CanvasRenderingContext2D a ImageData v barevných prostorech jiných než sRGB, jako je Display P3, pro využití pokročilých funkcí moderních monitorů.
- API VirtualKeyboard přidalo metody a vlastnosti pro správu zobrazení a skrytí virtuální klávesnice, stejně jako pro získání informací o velikosti zobrazené virtuální klávesnice.
- V JavaScriptu pro třídy byla umožněna aplikace statických inicializačních bloků pro seskupení kódu, který se provádí jednou při zpracování třídy: class C { // Blok bude spuštěn při zpracování samotné třídy static { console.log(„C’s static block“); } }
- V CSS vlastnostech flex-basis a flex byly implementovány klíčová slova content, min-content, max-content a fit-content pro flexibilnější řízení velikosti hlavní oblasti Flexboxu.
- Bylo přidáno CSS vlastnost scrollbar-gutter pro řízení rezervace místa na obrazovce pod posuvník. Například, když není potřeba posouvání obsahu, lze rozšířit výstup a obsadit oblast posuvníku.
- Byl přidán API Self Profiling s realizací systém profilu, který umožňuje měřit čas provádění JavaScriptu na straně uživatele pro ladění problémů s výkonem v JavaScriptovém kódu, aniž by bylo třeba provádět ruční manipulace v rozhraní pro webové vývojáře.
- Po odstranění Flash pluginu bylo rozhodnuto vracet prázdné hodnoty ve vlastnostech navigator.plugins a navigator.mimeTypes, ale ukázalo se, že některé aplikace je používaly k ověření přítomnosti pluginů pro zobrazení PDF souborů. Jelikož Chrome obsahuje vestavěný prohlížeč PDF, nyní vlastnosti navigator.plugins a navigator.mimeTypes budou vracet pevně stanovený seznam standardních pluginů a MIME typů pro zobrazení PDF — „PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer a WebKit built-in PDF“.
- Byly provedeny vylepšení nástrojů pro webové vývojáře. Do seznamu simulovaných obrazovek byly přidány zařízení Nest Hub a Nest Hub Max. Do rozhraní pro inspekci síťové aktivity byla přidána tlačítko pro inverzi filtrů (například při nastavení filtru „status-code: 404“ můžete rychle zobrazit všechny ostatní požadavky), a také byla poskytnuta možnost zobrazení původních hodnot hlaviček Set-Cookie (umožňuje posoudit přítomnost nesprávných hodnot, které jsou odstraňovány při normalizaci). Boční panel v webové konzole byl označen za zastaralý a bude odstraněn v některém z následujících vydání. Byla přidána experimentální funkce pro skrytí problémů na záložce Issues. V nastavení byla přidána možnost výběru jazyka rozhraní.

Kromě novinek a oprav chyb byla v nové verzi odstraněna 19 zranitelností. Mnohé z zranitelností byly odhaleny v rámci automatizovaného testování nástroji AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer a AFL. Nebyly zjištěny kritické problémy, které by umožnily obcházet všechny úrovně ochrany prohlížeče a provádět kód v systému mimo sandboxové prostředí. V rámci programu na vyplácení finančních odměn za odhalení zranitelností pro tuto verzi společnost Google vyplatila 17 odměn v celkové výši 56 500 USD (jedna odměna 15 000 USD, dvě odměny 10 000 USD, jedna odměna 7 500 USD, čtyři odměny 3 000 USD a dvě odměny 1 000 USD). Výše 7 odměn zatím nebyla určena.
Zdroj: opennet.ru





