Компания Google представи версия на уеб браузъра Chrome 91. Паралелно с това е налична стабилна версия на свободния проект Chromium, който служи за основа на Chrome. Браузърът Chrome се отличава с логотипите на Google, наличието на система за известяване при срив, модули за възпроизвеждане на защитено видео съдържание (DRM), система за автоматично инсталиране на актуализации и предаване на RLZ параметри при търсене. Следващата версия на Chrome 92 е планирана за 20 юли.
Основни промени в Chrome 91:
- Внедрена е възможността за спиране на изпълнението на JavaScript в свивките на групи от табове. В Chrome 85 беше добавена поддръжка за групиране на табовете, които могат да бъдат свързани с определен цвят и етикет. При клик на етикета на групата, свързаните с нея табове се свиват и вместо тях остава само един етикет (повторен клик на етикета разкрива групата). В новия ъпдейт, с цел намаляване на натоварването на CPU и икономия на енергия, е въведено спиране на активността в свитите табове. Изключение правят само табовете, в които се възпроизвежда звук, използва се API Web Locks или IndexedDB, осъществява се свързване към USB устройство, извършва се запис на видео, звук или съдържание на прозорци. Промяната ще се внедрява постепенно, започвайки с малък процент потребители.
- Включена е поддръжка на метод за съгласуване на ключове, устойчив на подбиране от квантови компютри. Квантовите компютри решават задачата за факторизация на естествени числа значително по-бързо, а тази задача е в основата на съвременните асиметрични алгоритми за криптиране и е практически нерешима на класическите процесори. За употреба в TLSv1.3 е предоставен плъгин CECPQ2 (Combined Elliptic-Curve and Post-Quantum 2), който комбинира класическия механизъм за обмен на ключове X25519 с схемата HRSS, основана на алгоритъма NTRU Prime, разработен за постквантови криптосистеми.
- Пълната поддръжка на протоколите TLS 1.0 и TLS 1.1 е прекратена, тъй като те са класифицирани от комитета IETF (Internet Engineering Task Force) като остарели. Включително е премахната възможността за връщане към TLS 1.0/1.1 чрез промяна на политиката SSLVersionMin.
- В сборките за платформата Linux е включено използването на режима „DNS над HTTPS“ (DoH, DNS over HTTPS), който преди това беше предоставен на потребителите на Windows, macOS, ChromeOS и Android. DNS-over-HTTPS автоматично ще бъде активиран за потребители, в настройките на които са посочени DNS-доставчици, поддържащи тази технология (за DNS-over-HTTPS се използва същият доставчик, който е бил използван за DNS). Например, ако в системните настройки на потребителя е указан DNS 8.8.8.8, в Chrome ще бъде активиран DNS-over-HTTPS услугата на Google („https://dns.google.com/dns-query“), ако DNS е 1.1.1.1, то DNS-over-HTTPS услугата на Cloudflare („https://cloudflare-dns.com/dns-query“) и т.н.
- В списъка на забранените мрежови портове е добавен порт 10080, който се използва в Amanda backup и VMWare vCenter. Преди това бяха блокирани портовете 69, 137, 161, 554, 1719, 1720, 1723, 5060, 5061 и 6566. За портовете в черния списък се блокира изпращането на HTTP, HTTPS и FTP-заявки с цел защита от атака NAT slipstreaming, позволяваща при отваряне на специално подготвена от атакуващия уеб-страница в браузъра да се установи мрежова връзка от сървъра на атакуващия към всеки UDP или TCP порт на системата на потребителя, независимо от използването на вътрешен диапазон адреси (192.168.x.x, 10.x.x.x).
- Предоставена е възможност за настройка на автоматичното стартиране на отделни уеб-приложения (PWA — Progressive Web Apps) при влизане на потребителя в системата (Windows и macOS). Автозапускът се настройва на страницата chrome://apps. Функционалността все още се тестира на малък процент потребители, а за останалите изисква активиране на настройката „chrome://flags/#enable-desktop-pwas-run-on-os-login“.
- В контекста на работата по прехода на браузера към включваща терминология, файлът „master_preferences“ е преименуван на „initial_preferences“. За запазване на съвместимостта поддръжката на „master_preferences“ за известно време ще остане в браузера. По-рано браузерът вече се беше освободил от използването на термини като „whitelist“, „blacklist“ и „native“.
- В разширения режим за защита от опасни сайтове (Enhanced Safe Browsing), в който се активират допълнителни проверки за защита от фишинг, зловредна активност и други заплахи в мрежата, е реализирана възможността за изпращане на качени файлове за проверка на страната на Google. Освен това, в Enhanced Safe Browsing е реализирано отчитането на токени, свързани с профила в Google, при установяване на опити за фишинг, както и изпращането на стойности на заглавката Referrer към сървърите на Google за проверка на пренос от зловреден сайт.
- В редакцията за платформата Android е подобрен дизайнът на елементите на уеб формите, които са оптимизирани за използване на сензорни екрани и системи за хора с увреждания (за настолни системи оформлението беше преобработено в Chrome 83). Целта на преосмислянето е унификация на оформлението на формите и отстраняване на несъответствието в стиловете — по-рано част от елементите на формите бяха проектирани съобразно елементите на интерфейсите на оперативните системи, а част — съобразно най-популярните стилове. Поради това различните елементи подходиха по различен начин за сензорни екрани и системи за хора с увреждания.


- Добавен е анкета за мнение на потребителите, показвана при отваряне на настройките за Privacy Sandbox (chrome://settings/privacySandbox).
- При стартиране на Android версията на Chrome на таблети с голям екран е осигурен запитване за версията за десктоп, а не за редакцията за мобилни устройства. Поведението може да се промени чрез настройка "chrome://flags/#request-desktop-site-for-tablets".
- Кодът за рисуване на таблици е преосмислен, което позволи решаването на проблеми с несъответствието на поведението при извеждане на таблици в Chrome и Firefox/Safari.
- Прекратена е обработката на сървърните сертификати на испанския удостоверяващ орган Camerfirma поради повтарящи се от 2017 година инциденти, свързани с нарушения при издаването на сертификати. Поддръжката на клиентски сертификати остава запазена, блокировката се прилага само за сертификатите, използвани на сайтовете за HTTPS.
- Продължава реализирането на поддръжка на сегментиране на мрежата за защита от методи за проследяване на движението на потребителите между сайтовете, основани на съхраняването на идентификатори в области, не предназначени за постоянно съхранение на информация („Supercookies“). Тъй като ресурсите в кеша се съхраняват в общо пространство от имена, независимо от оригиналния домейн, един сайт може да определи зареждането на ресурси от друг сайт чрез проверка на наличието на този ресурс в кеша. Защитата е основана на прилагане на сегментиране на мрежата (Network Partitioning), чиято същност е добавяне на допълнителна привързаност на записите към домейн, от който е отворена основната страница, което ограничава обхвата на кеша за скриптове за проследяване на движението само до текущия сайт (скриптът от iframe няма да може да провери дали ресурсът е зареждан от друг сайт).
Цената на сегментиране е намаляване на ефективността на кеширането, което води до незначително увеличение на времето за зареждане на страницата (максимум с 1.32%, но за 80% от сайтовете с 0.09-0.75%). За тестване на режима на сегментиране може да се стартира браузър с опция „—enable-features=PartitionConnectionsByNetworkIsolationKey, PartitionExpectCTStateByNetworkIsolationKey, PartitionHttpServerPropertiesByNetworkIsolationKey, PartitionNelAndReportingByNetworkIsolationKey, PartitionSSLSessionsByNetworkIsolationKey, SplitHostCacheByNetworkIsolationKey“.
- Добавен е външен REST API VersionHistory (https://versionhistory.googleapis.com/v1/chrome), чрез който можете да получите информация за версиите на Chrome, свързани с платформи и клонове, както и история на актуализациите на браузъра.
- В iframe, заредени от домейни, различни от домейна на основната страница, е забранено извеждането на JavaScript диалозите alert(), confirm() и prompt(), което ще защити потребителите от опити на външни скриптове да извеждат съобщения под предлог, че уведомлението е извлечено от основния сайт.
- Стабилизиран и предложен по подразбиране API WebAssembly SIMD за използване на векторни SIMD инструкции в приложения в формат WebAssembly. За осигуряване на платформено независимост се предлагат нов 128-битов тип, който може да представя различни типове опаковани данни, и няколко основни векторни операции за обработка на опаковани данни. SIMD позволява повишаване на производителността чрез паралелна обработка на данни и ще бъде полезен при компилиране на нативен код в WebAssembly.
- В режим на Origin Trials (експериментални функции, изискващи специално активиране) бяха добавени няколко нови API. Origin Trial означава възможност за работа с посочения API от приложения, натоварени от localhost или 127.0.0.1, или след регистрация и получаване на специален токен, който действа за ограничен период на конкретен сайт.
- WebTransport — протокол и свързан JavaScript API за изпращане и получаване на данни между браузъра и сървъра.. Каналът за връзка се организира върху HTTP/3, използвайки протокола QUIC за транспорт, който от своя страна е надстройка на UDP, поддържаща мултиплексиране на няколко връзки и предлагаща методи за криптиране, еквивалентни на TLS/SSL.
WebTransport може да се използва вместо механизмите WebSockets и RTCDataChannel, предлагайки допълнителни възможности като организиране на предаване в множество потоци, еднопосочни потоци, доставка без оглед на реда на изпращане на пакетите (out-of-order), надеждни и ненадеждни режими на доставка. Освен това, WebTransport може да бъде приложен вместо механизма Server Push, от който Google се отказа в Chrome.
- Декларативен интерфейс за определяне на връзки към самостоятелни уеб-приложения (PWA), включен чрез параметъра capture_links в манифеста на уеб-приложението и позволяващ на сайтoвете автоматично да отварят ново PWA-прозорец при кликване върху връзка на приложението или да преминават в едноекранен режим, подобно на мобилните приложения.
- Добавен е API WebXR Plane Detection, предоставящ информация за плоски повърхности в виртуалната 3D-среда. Този API позволява да се избегне ресурсно натоварващата обработка на данни, получени чрез MediaDevices.getUserMedia(), използвайки собствени реализации на алгоритми за машинно зрение. Напомняме, че API WebXR позволява да се унифицира работата с различни класове устройства за виртуална реалност, от стационарни 3D-очки до решения на базата на мобилни устройства.
- WebTransport — протокол и свързан JavaScript API за изпращане и получаване на данни между браузъра и сървъра.. Каналът за връзка се организира върху HTTP/3, използвайки протокола QUIC за транспорт, който от своя страна е надстройка на UDP, поддържаща мултиплексиране на няколко връзки и предлагаща методи за криптиране, еквивалентни на TLS/SSL.
- Реализирана е поддръжка на работа с WebSockets върху HTTP/2 (RFC 8441), която действа само за защитени заявки към WebSockets и при наличие на вече установено сесийно HTTP/2 съединение, в което е анонсирана поддръжка на разширението «WebSockets over HTTP/2».
- Ограниченията на точността на стойностите на таймера, получавани чрез performance.now(), са унифицирани за всички поддържани платформи и адаптирани с оглед на възможната изолация на обработчиците в отделни процеси. Например, на десктоп системи точността в неизолирани контексти е намалена от 5 до 100 микросекунди.
- В сборките за настолни системи е реализирана възможност за четене на файлове от буфера за обмен (записът на файлове в буфера за обмен все още е забранен). async function onPaste(e) { let file = e.clipboardData.files[0]; let contents = await file.text(); }
- В CSS е внедрено правило @counter-style, позволяващо определяне на собствен стил на броячи и етикети в номерираните списъци.
- В CSS псевдо-класовете «:host()» и «:host-context()» е добавена възможност за предаване на единични стойности на комплексни селектори () в допълнение към списъците от селектори ().
- Добавен е интерфейсът GravitySensor за определяне на обемни (по трите оси на координатите) данни от датчика за гравитация.
- В API за достъп до файловата система е предоставена възможност за определяне на препоръки за избор на име на файл и директория, предлагани в диалоговия прозорец за създаване или отваряне на файл.
- Разрешено е достъпът до API WebOTP в iframe-та, заредени от други домейни, при предоставяне на съответните права от страна на потребителя. WebOTP позволява четене на еднократни кодове за потвърждение, изпращани чрез SMS.
- Разрешено е предоставянето на споделен достъп до идентификационни данни за сайтове, свързани чрез механизма DAL (Digital Asset Links), който позволява асоцииране на приложения за Android със сайтове за опростяване на входа.
- В Service worker е разрешено използването на модули JavaScript. При задаване на типа 'module' по време на извикване на конструктора, посочените скриптове ще бъдат заредени под формата на модули и достъпни за внос в контекста на worker-а. Поддръжката на модули опростява споделянето на код на уеб страници и в Service worker-и.
- В JavaScript е предоставена възможност за проверка на съществуването на закрити полета в обект, с помощта на синтаксиса «#foo in obj». class A { static test(obj) { console.log(#foo in obj); } #foo = 0; } A.test(new A()); // true A.test({}); // false
- В JavaScript по подразбиране е разрешено използването на ключовата дума await на най-високо ниво в модулите, което позволява по-нежна интеграция на асинхронни извиквания в процеса на зареждане на модулите, без да е необходимо опаковане в "async function". Например, вместо (async function() { await Promise.resolve(console.log(‘test’)); }()); сега може да се пише await Promise.resolve(console.log(‘test’));
- В JavaScript двигателя V8 е увеличена ефективността на кеширането на шаблони, което е позволило да се увеличи скоростта на теста Speedometer2-FlightJS с 4.5%.
- Внесени са множество подобрения в инструментите за уеб разработчици. Добавен е нов режим за инспекция на паметта (Memory inspector), предоставящ инструменти за изучаване на данни ArrayBuffer и памет WASM.

В панела Performance е добавен обобщен индикатор за производителността, позволяващ да се прецени дали сайтът изисква оптимизация или не.

При предварителен преглед на изображенията в панела Elements и в анализа на мрежовите заявки е предоставена информация за съотношението на страните на изображението, параметрите на визуализация и размера на файла.

В панела за инспекция на мрежата се появи възможност за промяна на приеманите стойности на заглавката Content-Encoding.

В панела за работа с стиловете се появи възможност за бърз преглед на изчислената стойност при навигация през параметрите на CSS, като изберете "View computed value" в контекстното меню.

Освен нововъведенията и корекциите на грешки, в новата версия са отстранени 32 уязвимости. Много от тях са установени чрез автоматизирано тестване с инструментите AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Не са установени критични проблеми, които да позволят заобикаляне на всички нива на защита на браузъра и изпълнение на код в системата извън средата на sandbox. В рамките на програмата за награди за откритие на уязвимости за текущото издание, компанията Google е изплатила 21 премии на обща стойност 92000 долара (една премия от 20000 долара, една премия от 15000 долара, четири премии от 7500 долара, три премии от 5000 долара, три премии от 3000 долара, две премии от 1000 долара и две премии от 500 долара). Размерът на 5 от наградите все още не е определен.
Източник: opennet.ru







