Google heeft de release van webbrowser Chrome 89 gepresenteerd. Tegelijkertijd is er een stabiele release van het open source-project Chromium beschikbaar, dat de basis vormt voor Chrome. De browser Chrome kenmerkt zich door het gebruik van Google-logo's, een systeem voor het verzenden van meldingen bij crashes, modules voor het afspelen van beveiligde video-inhoud (DRM), een systeem voor automatische updates en het doorgeven van RLZ-parameters tijdens zoekopdrachten. De volgende release van Chrome 90 is gepland voor 13 april.
Belangrijkste wijzigingen in Chrome 89:
- De versie van Chrome voor Android kan voortaan alleen worden uitgevoerd op apparaten die zijn gecertificeerd in Play Protect. In virtuele machines en emulators van Chrome voor Android kan deze alleen worden gebruikt als het een erkend apparaat emuleert of de emulator is ontwikkeld door Google. Of een apparaat gecertificeerd is of niet, kan worden gecontroleerd in de Google Play-app in het instellingenmenu (de status 'Play Protect certification' wordt onderaan de instelling pagina weergegeven). Voor niet-gecertificeerde apparaten, bijvoorbeeld bij gebruik van aangepaste firmware, worden gebruikers aangeboden om hun apparaten te registreren om Chrome te kunnen uitvoeren.
- Voor een klein percentage gebruikers is de standaard instelling voor toegang tot sites via HTTPS ingevoerd wanneer hostnamen in de adresbalk worden ingevoerd. Bijvoorbeeld, wanneer de host example.com wordt ingevoerd, zal standaard de site https://example.com openen, en als er problemen optreden bij het openen, wordt omgeschakeld naar http://example.com. Voor het beheren van het standaard gebruik van 'https://' is er een instelling aangeboden: 'chrome://flags#omnibox-default-typed-navigations-to-https'.
- Ondersteuning voor profielen is ingeschakeld, waardoor verschillende gebruikers hun accounts kunnen splitsen wanneer ze één browser gebruiken. Met profielen kunnen bijvoorbeeld gezinsleden toegang krijgen of sessies voor werk en persoonlijke interesse scheiden. Een gebruiker kan een nieuw Chrome-profiel aanmaken en het activeren bij het inloggen op een bepaald Google-account, wat het mogelijk maakt voor verschillende gebruikers om bladwijzers, instellingen en browsegeschiedenis te delen. Wanneer geprobeerd wordt in te loggen op een account dat aan een ander profiel is gekoppeld, wordt de gebruiker gevraagd over te schakelen naar dit profiel. Als een gebruiker aan meerdere profielen is gekoppeld, kan hij het gewenste profiel kiezen. Het is mogelijk om verschillende kleurenschema's aan verschillende profielen te koppelen voor visuele scheiding van gebruikers.

- De weergave van miniaturen van inhoud is ingeschakeld wanneer de muis over tabbladen in de bovenste balk beweegt. Eerder was de inhoudsvoorvertoning van tabbladen standaard uitgeschakeld en moest de instelling ‘chrome://flags/#tab-hover-cards’ worden aangepast.

- Voor een deel van de gebruikers is de functie 'Lezenlijst' (Reading List, ‘chrome://flags#read-later’) ingeschakeld, waarbij, wanneer op de ster in de adresbalk wordt geklikt, naast de knop 'Bladwijzer toevoegen' een tweede knop 'Toevoegen aan lezenlijst' verschijnt. In de rechterhoek van de bladwijzerbalk verschijnt een menu 'Lezenlijst', waarin alle eerder aan de lijst toegevoegde pagina's worden vermeld. Wanneer een pagina uit de lijst wordt geopend, wordt deze gemarkeerd als gelezen. Pagina's in de lijst kunnen ook handmatig als gelezen of ongelezen worden gemarkeerd of uit de lijst worden verwijderd.

- Voor gebruikers die zijn ingelogd op hun Google-account, zonder Chrome Sync in te schakelen, is toegang verleend tot betaalmethoden en wachtwoorden die in hun Google-account zijn opgeslagen. Deze mogelijkheid is voor een deel van de gebruikers ingeschakeld en zal geleidelijk aan de overige gebruikers worden aangeboden.
- Ondersteuning voor snelle tabbladenzoekfunctie is ingeschakeld, die eerder moest worden geactiveerd via de vlag ‘chrome://flags/#enable-tab-search’. De gebruiker kan een lijst van alle geopende tabbladen bekijken en snel het gewenste tabblad filteren, ongeacht of deze zich in het huidige venster of een ander venster bevindt.

- Voor alle gebruikers is de verwerking van afzonderlijke woorden in de adresbalk stopgezet als een poging om interne websites te openen. Voorheen probeerde de browser, bij invoer van één woord in de adresbalk, eerst in DNS te bepalen of er een host met die naam bestond, in de veronderstelling dat de gebruiker een subdomein probeerde te openen, en leidde daarna de aanvraag door naar de zoekmachine. Hierdoor kreeg de eigenaar van de DNS-server, zoals ingesteld door de gebruiker, informatie over zoekopdrachten bestaande uit één woord, wat werd beschouwd als een schending van de privacy. Voor bedrijven die internethosts zonder subdomein gebruiken (bijvoorbeeld "https://helpdesk/") is de optie gegeven om het oude gedrag te herstellen.
- Er is een mogelijkheid toegevoegd om de versie van een extensie of applicatie vast te zetten. Bijvoorbeeld, om alleen goedgekeurde extensies op het bedrijf te gebruiken, kan de beheerder met behulp van het nieuwe beleid ExtensionSettings Chrome configureren om een eigen URL voor het downloaden van updates te gebruiken, in plaats van de URL die in de manifest van de extensie is opgegeven.
- Op x86-systemen is het nu verplicht dat de processor instructies SSE3 ondersteunt voor de werking van de browser, welke worden ondersteund door Intel-processors sinds 2003, en door AMD-processors sinds 2005.
- Er zijn extra API's toegevoegd, gericht op het bieden van functionaliteit die kan vervangen wat derde partijen gebruiken om cookies te gebruiken voor het volgen van gebruikersbewegingen tussen websites in de code van advertentienetwerken, sociale media-widgets en webanalyzesystemen. De volgende API's zijn voor testen aangeboden:
- Trust Token voor het scheiden van gebruikers zonder gebruik te maken van cross-site-identificatie.
- First party sets – stelt gekoppelde domeinen in staat zichzelf als primair te verklaren zodat de browser deze relatie kan meenemen in cross-site-aanroepen.
- Schemeful Same-Site voor het uitbreiden van het concept same-site naar verschillende URL-schema's, dat wil zeggen http://website.example en https://website.example zullen worden behandeld als één site bij cross-site-aanroepen.
- Floc voor het bepalen van de interesses van de gebruiker zonder persoonlijke identificatie en zonder koppeling aan de geschiedenis van specifieke websites.
- Conversion Measurement voor het evalueren van gebruikersactiviteit na het klikken op advertenties.
- User-Agent Client Hints voor het vervangen van User-Agent en selectieve afgifte van gegevens over specifieke parameters van de browser en het systeem (versie, platform, enz.).
- API Serial toegevoegd, waardoor websites gegevens kunnen lezen en schrijven via de seriële poort. De aanleiding voor het ontstaan van deze API is de mogelijkheid om webapplicaties te creëren voor directe besturing van apparaten zoals microcontrollers en 3D-printers. Toegang tot het randapparaat vereist een expliciete toestemming van de gebruiker.
- API WebHID toegevoegd voor low-level toegang tot HID-apparaten (Human Interface Device, zoals toetsenborden, muizen, gamepads, touchpads), wat het mogelijk maakt om logica voor het werken met HID-apparaten in JavaScript te implementeren, zodat zeldzame HID-apparaten zonder specifieke stuurprogramma's in het systeem kunnen worden gebruikt. De nieuwe API is vooral gericht op ondersteuning voor gamepads.
- API Web NFC toegevoegd, waarmee webapplicaties NFC-tags kunnen lezen en schrijven. Voorbeelden van toepassingen van de nieuwe API in webapplicaties zijn het verstrekken van informatie over museumobjecten, het uitvoeren van inventarisatie, het verkrijgen van gegevens van badges van conferentiedeelnemers, enzovoorts. Het verzenden en scannen van labels gebeurt met behulp van de objecten NDEFWriter en NDEFReader.
- API Web Share (object navigator.share) is nu uitgebreid naar desktopgebruikers en is nu beschikbaar voor gebruikers van desktopbrowser (momenteel alleen voor Windows en Chrome OS). API Web Share biedt middelen voor het delen van informatie op sociale netwerken, bijvoorbeeld het genereren van een uniforme knop voor publicatie op sociale media die de bezoeker gebruikt of het organiseren van het verzenden van gegevens naar andere applicaties.
- In de Android-versies en de WebView-component is ondersteuning toegevoegd voor het decoderen van het AVIF-afbeeldingsformaat (AV1 Image Format), waarbij gebruik wordt gemaakt van intra-frame compressietechnologieën uit het videocodeerformaat AV1 (in desktopversies werd de ondersteuning voor AVIF al in Chrome 85 ingeschakeld). De container voor de verspreiding van gecomprimeerde gegevens in AVIF is volledig vergelijkbaar met HEIF. AVIF ondersteunt zowel beelden in HDR (High Dynamic Range) en een breed kleurenspectrum als in standaard dynamisch bereik (SDR).
- Een nieuwe Reporting API is toegevoegd voor het verkrijgen van informatie over schendingen van de regels voor veilig gebruik op de pagina met bevoorrechte operaties, vastgesteld via de COOP (Cross-Origin-Opener-Policy) header, die ook toestaat om COOP in debugmodus te zetten, die werkt zonder het blokkeren van regelschendingen.
- De functie performance.measureUserAgentSpecificMemory() is toegevoegd, die het geheugen bepaalt dat is verbruikt tijdens de verwerking van de pagina.
- Om te voldoen aan de webstandaard worden alle 'data:' URL's nu behandeld als potentieel betrouwbaar, d.w.z. maken deel uit van een veilige context.
- In de Streams API is ondersteuning voor byte streams toegevoegd, die speciaal zijn geoptimaliseerd voor efficiënte overdracht van willekeurige byteverzamelingen en het aantal gegevenskopieeroperaties minimaliseren. De uitvoer van de stream kan worden geschreven naar primitieve waarden zoals strings of ArrayBuffer.
- In SVG-elementen is de volledige syntaxis van de eigenschap 'filter' geïmplementeerd, waardoor gelijktijdig functies voor filtering zoals blur(), sepia() en grayscale() op zowel SVG- als niet-SVG-elementen kunnen worden toegepast.
- In CSS is de pseudo-element '::target-text' geïmplementeerd, dat kan worden gebruikt om een fragment te markeren dat is bereikt via scroll-to-text met een andere stijl dan die de browser gebruikt bij het markeren van wat is gevonden.
- CSS-eigenschappen zijn toegevoegd voor het beheersen van het afronden van hoeken: border-start-start-radius, border-start-end-radius, border-end-start-radius, border-end-end-radius.
- CSS-eigenschap forced-colors is toegevoegd om te bepalen of de browser op de pagina een door de gebruiker opgegeven beperkte kleurenpalet toepast.
- De CSS-eigenschap forced-color-adjust is toegevoegd om de gedwongen kleurbeperkingen voor specifieke elementen uit te schakelen, zodat ze volledige controle over kleuren via CSS behouden.
- In JavaScript is het gebruik van het sleutelwoord await op het hoogste niveau van modules toegestaan, waardoor asynchrone aanroepen gemakkelijker kunnen worden geïntegreerd in het laadproces van modules en kan worden volstaan zonder in een 'async function' te wikkelen. Bijvoorbeeld, in plaats van (async function() { await Promise.resolve(console.log('test')); }()); kan nu worden geschreven await Promise.resolve(console.log('test'));
- In de JavaScript-engine V8 is de aanroep van functies versneld in situaties waarin het aantal doorgegeven argumenten niet overeenkomt met de gedefinieerde parameters van de functie. Bij het niet overeenkomen van het aantal argumenten in de modus zonder JIT is de prestaties met 11,2% verbeterd, en bij gebruik van JIT TurboFan met 40%.
- Er is een grote hoeveelheid kleine verbeteringen aangebracht in de tools voor webontwikkeling.
Naast de nieuwe functies en bugfixes zijn er 47 kwetsbaarheden opgelost in de nieuwe versie. Veel van deze kwetsbaarheden zijn ontdekt door geautomatiseerd testen met tools zoals AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer en AFL. Er zijn geen kritieke problemen gevonden die alle lagen van browserbeveiliging kunnen omzeilen en code buiten de sandbox-omgeving kunnen uitvoeren. Het wordt opgemerkt dat een van de verholpen kwetsbaarheden (CVE-2021-21166), gerelateerd aan de levensduur van objecten in de geluidscomponent, van het type 0-day probleem is en vóór de oplossing in een van de exploits werd gebruikt. In het kader van het programma voor beloningen voor het ontdekken van kwetsbaarheden heeft Google voor deze release 33 prijzen uitgereikt ter waarde van 61.000 dollar (twee prijzen van $10.000, twee prijzen van $7.500, drie prijzen van $5.000, twee prijzen van $3.000, vier prijzen van $1.000 en twee prijzen van $500). De grootte van 18 beloningen is nog niet bepaald.
Bron: opennet.ru




