Компания Google представи версия на уеб браузъра Chrome 105. Същевременно е наличен стабилен вариант на свободния проект Chromium, който служи като основа на Chrome. Браузърът Chrome се различава от Chromium по използването на логотипите на Google, наличието на система за уведомления при срив, модули за възпроизвеждане на защитено от копиране видео съдържание (DRM), автоматизирана система за актуализации, постоянна активност на изолацията Sandboxing, предоставяне на ключове за Google API и предаване на RLZ параметри при търсене. За тези, които се нуждаят от повече време за актуализация, отделно се поддържа клона Extended Stable, който е с продължителност 8 седмици. Следващата версия на Chrome 106 е планирана за 27 септември.
Основни промени в Chrome 105:
- Поддръжката на специализирани уеб приложения Chrome Apps е прекратена, като на тяхно място идват отделни уеб приложения, базирани на технологията Progressive Web Apps (PWA) и стандартни Web API. Първоначално Google обяви намерението си да се откаже от Chrome Apps още през 2016 година и планираше да прекрати тяхната поддръжка до 2018 година, но по-късно отложи този план. В Chrome 105 при опит за инсталиране на приложения Chrome Apps ще се показва предупреждение за прекратяване на поддръжката им, но самите приложения все още ще работят. В Chrome 109 възможността за изпълнение на Chrome Apps ще бъде деактивирана.
- Осигурена е допълнителна изолация на процеса 'renderer', който отговаря за рендеринга. Този процес сега се изпълнява в допълнителен контейнер (App Container), реализиран над съществуващата система за sandbox изолация. В случай на експлоатация на уязвимост в рендеринг кода, добавените ограничения няма да позволят на атакуващия да получи достъп до мрежата, благодарение на забраната за системни повици, свързани с мрежовите възможности.
- Реализирано е собствено унифицирано хранилище на коренни сертификати на удостоверяващи центрове (Chrome Root Store). Новото хранилище не е включено по подразбиране и до приключване на внедряването, сертификатите ще продължат да се проверяват с помощта на специфично за всяка операционна система хранилище. Тестваното решение напомня на подхода на компания Mozilla, която поддържа отделно независимо хранилище на коренни сертификати за Firefox, използвано като първо звено за проверка на веригата на доверие на сертификатите при отваряне на сайтове по HTTPS.
- Подготовката за прекратяване на поддръжката на API Web SQL, който не е стандартизиран, почти не се използва и се нуждае от преработка, за да отговаря на съвременните изисквания за сигурност, вече е започнала. В Chrome 105 достъпът до Web SQL от код, зареждан без използване на HTTPS, е забранен, а също така е добавено предупреждение за остаряване на технологията в DevTools. През 2023 г. API Web SQL планират да бъде премахнат. За разработчиците, на които им е необходима подобна функционалност, ще бъде предоставена замяна на базата на WebAssembly.
- В Chrome sync е прекратена поддръжката на синхронизация с версии Chrome 73 и по-ранни издания.
- За платформите macOS и Windows е активиран вграден преглед на сертификати, който замени извикването на интерфейса, предоставен от операционната система. По-рано вграденият преглед се използваше само в версиите за Linux и ChromeOS.
- В версията за платформата Android са добавени настройки за управление на API „Topics & Interest Group“, промотирани в рамките на инициативата Privacy Sandbox, което позволява определяне на категории интереси на потребителя и използването им вместо проследяващи бисквити за съставяне на групи потребители със сходни интереси без идентификация на отделни потребители. В предишното издание подобни настройки бяха добавени в версиите за Linux, ChromeOS, macOS и Windows.
- При активиране на разширената защита на браузера (Safe Browsing > Enhanced protection) е реализирано събиране на телеметрични данни за установени разширения, достъп до API и свързване с външни сайтове. Посочените данни се използват на сървърите на Google за откриване на злонамерена активност и нарушения, извършвани от браузърни разширения.
- Възможността за използване на не-ASCII символи в домейни, посочени в заглавието на бисквитките, е прехвърлена в категорията остарели и ще бъде блокирана в версия Chrome 106 (за IDN домейни следва да се посочват домейни в формат punycode). Това изменение ще приведe браузера в съответствие с изискванията на RFC 6265bis и поведението, реализирано във Firefox.
- Предложеният API Custom Highlight е предназначен за произволно изменение стила на избраните области от текста и позволява да не се ограничаваш до зададените от браузера фиксирани стилове за избраните области (::selection, ::inactive-selection) и подсветка на синтактични грешки (::spelling-error, ::grammar-error). В първата версия на API-то е предоставена поддръжка за промяна на цветовете на текста и фона чрез псевдоелементите color и background-color, но в бъдеще ще бъдат добавени и други възможности за настройка на стила.
Като пример за задачи, които могат да бъдат решени с новия API, се споменава добавянето в уеб-фреймворкове, предоставящи инструменти за редактиране на текст, на собствени механизми за подсветка на текста, различна подсветка при едновременно съвместно редактиране от няколко потребители, търсене в виртуализирани документи и маркиране на грешки при проверка на правописа. Ако преди за създаване на нестандартна подсветка бяха необходими сложни манипулации с DOM дървото, то API Custom Highlight предоставя готови операции за добавяне и премахване на подсветка, които не влияят на структурата на DOM и прилагат стилове в зависимост от обектите Range.
- В CSS е добавен заявката «@container», позволяваща формирование на стиловете на елементите в зависимост от размера на родителския елемент. «@container» напомня на заявките «@media», но се прилага в зависимост не от размера на цялото видимо пространство, а от размера на блока (контейнера), в който е поставен елементът, което позволява задаване на собствена логика за избора на стил за дъщерните елементи, независимо от мястото на страницата на разположение на елемента.

- Добавен CSS псевдокласът «:has()» за проверка, взимаща предвид наличието на дъщерен елемент в родителския. Например, «p:has(span)» обхваща елементите. <p>, в които има елемент <span>.
- Добавен е API HTML Sanitizer, позволяващ изрязването на елементи от съдържанието, влияещи на показването и изпълнението при извеждане чрез метода setHTML(). API-то може да бъде полезно за почистване на постъпващите данни отвън по отношение на изрязване на HTML тагове, които могат да се използват за извършване на XSS атаки.
- Предоставена е възможност за използване на API Streams (ReadableStream) за изпращане на fetch заявка преди да бъде заредено тялото на отговора, т.е. можете да започнете изпращането на данни, без да чакате завършването на генерирането на страницата.
- За инсталирани отделни уеб приложения (PWA, Progressive Web App) е предоставена възможност за промяна на оформленията на заглавната част на прозореца чрез компоненти Window Controls Overlay, които разширяват екрана на уеб приложението на цялото прозоречно пространство и позволяват на уеб приложението да изглежда като обикновено настолно приложение. Уеб приложението може да управлява рисуването и обработката на въвеждането в цялото прозоречно пространство, с изключение на наложения блок с вградените бутони за управление на прозореца (затваряне, минимизиране, максимизиране).

- Стабилизирана е възможността за достъп до Media Source Extensions от отделни worker-и (в контекста на DedicatedWorker), което може да се използва, например, за повишаване на производителността на буферираното възпроизвеждане на мултимедийни данни чрез създаването на обект MediaSource в отделен worker и транслация на резултатите в HTMLMediaElement в основния поток.
- В API Client Hints, който се развива като заместител на заглавието User-Agent и позволява селективно предоставяне на данни за конкретни параметри на браузъра и системата (версия, платформа и т.н.) само след запитване, добавена е поддръжка на свойството Sec-CH-Viewport-Height, позволяващо получаване на информация за височината на видимата област. сървъра.Променен е форматът на разметката за задаване в таг «meta» параметрите Client Hints за външни ресурси: Беше: Стана:
- Добавена е възможност за създаване на глобални обработчици на събития onbeforeinput (document.documentElement.onbeforeinput), чрез които уеб приложенията могат да преработят поведението при редактиране на текст в елементи ,
- Разширени са възможностите на API Navigation, позволяващи на уеб приложенията да прихващат навигационни операции в прозореца, да инициират преходи и да анализират историята на действията с приложението. Добавени са нови методи intercept() за прихващане на прехода и scroll() за превъртане до определена позиция.
- Добавен е статичен метод Response.json(), позволяващ генерирането на тялото на отговора на базата на данни от тип JSON.
- Внедрени подобрения в инструментите за уеб разработчици. При задействането на точка за спиране в отладчика разрешено е редактирането на горната част от стека с функции, без да се прекъсва отладъчната сесия. В панела Recorder, с помощта на който можете да записвате, воспроизводите и анализирате действията на потребителя на страницата, е реализирана поддръжка на точки за спиране, стъпково воспроизводство и запис на събития при наведени мишки.
В панела за анализ на производителността са добавени метрики LCP (Largest Contentful Paint) за идентифициране на закъснения при рендирането на големи (видими за потребителя) елементи в видимата област, като изображения, видео и блочни елементи. В панела Elements е реализирано означаване на горните слоеве, изкарвани над друго съдържание, със специална икона. За WebAssembly е предоставена възможност за зареждане на отладъчни данни във формат DWARF.
В допълнение към нововъведенията и корекциите в новата версия са отстранени 24 уязвимости. Много от уязвимостите са открити в резултат на автоматизирано тестване с инструменти AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Не са открити критични проблеми, които да позволят заобикаляне на всички нива на защита на браузера и изпълнение на код в системата извън sandbox обкръжението. В рамките на програмата за изплащане на парични награди за открития на уязвимости, компанията Google е изплатила 21 награда на обща стойност 60500 долара (една награда от $10000, една награда от $9000, една награда от $7500, една награда от $7000, две награди от $5000, четири награди от $3000, две награди от $2000 и една награда от $1000). Размерът на седем награди все още не е определен.
Източник: opennet.ru


