Компания Google представи версия 101 на уеб браузъра Chrome. Същевременно е налична стабилна версия на свободния проект Chromium, който служи за основа на Chrome. Браузърът Chrome се различава от Chromium с използването на логата на Google, наличието на система за уведомяване в случай на срив, модули за възпроизвеждане на защитено от копиране видео съдържание (DRM), автоматичен механизъм за инсталиране на актуализации, постоянно активирана изолация на Sandbox, предоставяне на ключове за Google API и предаване на RLZ параметри при търсене. За тези, които се нуждаят от повече време за обновление, отделно се поддържа версия Extended Stable, която предлага обновление за предишната версия Chrome 100, поддържана в продължение на 8 седмици. Следващото издание на Chrome 102 е планирано за 24 май.
Основни промени в Chrome 101:
- Добавена е функцията Side Search, която позволява да се видят резултатите от търсенето в страничната панел, докато се преглежда друга страница (в един прозорец едновременно може да се вижда както съдържанието на страницата, така и резултатите от търсачката). След преминаване към определен сайт от страницата с резултатите от търсенето в Google пред полето за въвеждане в адресната лента се появява икона с буква „G“, при клик върху която се отваря страничната панел с резултатите от предишното търсене. По подразбиране функцията не е активна на всички системи, за да я включите, можете да използвате настройката „chrome://flags/#side-search“.

- В адресната лента Omnibox е внедрено предварително рисуване (prerendering) на съдържанието на предложенията, които се предоставят при въвеждане. По-рано, за да се ускори прехода от адресната лента, най-вероятните за кликване предложения се зареждаха, без да се чака клик на потребителя, използвайки захвата Prefetch. Сега, освен зареждането, те също така се рисуват в буфера (включително се изпълняват скриптове и се формира дърво на DOM), което позволява незабавното показване на предложенията след клик. За управление на предварителното рисуване са предложени настройки „chrome://flags/#enable-prerender2“, „chrome://flags/#omnibox-trigger-for-prerender2“ и „chrome://flags/#search-suggestion-for-prerender2“.
- Съкратена информация в HTTP заглавката User-Agent и JavaScript параметрите navigator.userAgent, navigator.appVersion и navigator.platform. В заглавката са оставени само данни за името на браузера, значителна версия на браузера (съставните версии MINOR.BUILD.PATCH са заменени с 0.0.0), платформата и типа устройство (мобилен телефон, ПК, таблет). За получаване на допълнителни данни, като точната версия и разширени данни за платформата, е необходимо да се използва API User Agent Client Hints. За сайтовете, на които новата информация не е достатъчна и които все още не са готови да преминат на User Agent Client Hints, е предоставена възможността да се върне пълният User-Agent до май 2023 г.
- Променено е поведението на функцията setTimeout при предаване на нулев аргумент, дефиниращ забавяне на извикването. Започвайки от Chrome 101, при указване на „setTimeout(…, 0)“ кодът ще бъде извикан веднага, без забавяне от 1мс, както изисква спецификацията. За повторни вложени извиквания на setTimeout се прилага забавяне от 4 мс.
- В версията за платформата Android е реализирана поддръжка на заявката за права за извеждане на известия (в Android 13, за да може приложението да показва известия, то трябва да има правото „POST_NOTIFICATIONS“, без което изпращането на известия ще бъде блокирано). При стартиране на Chrome в среда Android 13 браузерът сега ще извежда заявка за получаване на права за извеждане на известия.
- Премахната е възможността за използване на API WebSQL в чужди скриптове. По подразбиране блокировка на WebSQL в скриптове, заредени не от текущия сайт, беше включена в Chrome 97, но беше оставена опция за деактивиране на това поведение. В Chrome 101 тази опция е премахната. В бъдеще се планира постепенно напълно да се прекрати поддръжката на WebSQL, независимо от контекста на използване. Вместо WebSQL се препоръчва да се използва API Web Storage и Indexed Database. Обработчикът на WebSQL е базиран на кода SQLite и можеше да се използва от злонамерени лица за експлоатация на уязвимости в SQLite.
- Премахнати са имената на политики за предприятия (chrome://policy), които съдържат неинклузивни термини. Започвайки от Chrome 86, за посочените политики са предложени замени, в които се използва инклузивна терминология. Проведена е чистка на термини като „whitelist“, „blacklist“, „native“ и „master“. Например, политиката URLBlacklist е преименувана на URLBlocklist, AutoplayWhitelist на AutoplayAllowlist, а NativePrinters на Printers.
- В режима Origin Trials (експериментални възможности, които изискват отделно активиране) тестовете на API Federated Credential Management (FedCM) започнаха единствено в билдовете за платформата Android, позволявайки създаването на обединени идентификационни услуги, които осигуряват запазване на конфиденциалността и функционират без механизми за междусайтово проследяване, като обработка на трети страни Cookie. Origin Trial предполага възможността за работа с посочения API от приложения, заредени от localhost или 127.0.0.1, или след регистрация и получаване на специален токен, който действа за ограничен период от време за конкретен сайт.
- Стабилизиран и предложен на всички желаещи механизмът Priority Hints, позволяващ задаването на важността на определен ресурс, който да бъде зареден, чрез указание на допълнителен атрибут „importance“ в таговете като iframe, img и link. Атрибутът може да приема стойности „auto“, „low“ и „high“, които влияят на реда на зареждане на външни ресурси от браузъра.
- Добавено свойството AudioContext.outputLatency, чрез което може да се научат сведения за прогнозираното забавяне преди изхода на звука (забавяне между заявка за звук и началото на обработката на получените данни от устройството за изход на звук).
- Добавено CSS-свойството font-palette и правилото @font-palette-values, позволяващи избор на палитра от цветен шрифт или определяне на собствена палитра. Например, посочената възможност може да се използва за настройка на цветни символните шрифтове или emoji на цвета на оформлението на съдържанието или за включване на тъмен или светъл режим за шрифта.
- Добавена CSS-функцията hwb(), предлагаща алтернативен метод за указване на цветове sRGB в формат HWB (Hue, Whiteness, Blackness), подобен на формата HSL (Hue, Saturation, Lightness), но по-прост за човешкото възприятие.
- В метода window.open() указването на свойството popup в низ windowFeatures, без присвояване на стойност (т.е. просто посочен popup, а не popup=true) вече се обработва като включване на отваряне на миниатюрно изскачащо прозорче (аналогично на „popup=true“) вместо присвояване по подразбиране на стойност „false“, което беше нелогично и объркваше разработчиците.
- В API MediaCapabilities, предоставящем информация за възможностите на устройството и браузъра относно декодирането на мултимедийно съдържание (поддържани кодеци, профили, битрейти и резолюции), беше добавена поддръжка на WebRTC потоци.
- Предложена е трета версия на API Secure Payment Confirmation, предоставящ инструментариум за допълнително потвърждение на извършваните платежни операции. В новата версия е добавена поддръжка на идентификатори, изискващи въвеждане на данни, определяне на пиктограма за индикация на неуспешна проверка, както и опционално свойство payeeName.
- В API USBDevice е добавен методът forget() за оттегляне на предишно предоставени от потребителя разрешения за достъп до USB устройство. Освен това, инстанциите на USBConfiguration, USBInterface, USBAlternateInterface и USBEndpoint вече са равни при строго сравнение ("===", указват на един и същи обект), ако са върнати за един и същи обект USBDevice.
- Направени са подобрения в инструментите за уеб разработчици. Предоставена е възможност за импорт и експорт на записи на действия на потребителя в JSON формат (пример). В уеб конзолата и интерфейса за преглед на кода е подобрено изчисляването и показването на частните свойства. Добавена е поддръжка на цветова модел HWB. В CSS панела е добавена опция за преглед на каскадни слоеве, зададени чрез правилото @layer.

Освен нововъведенията и поправките, в новата версия са отстранени 30 уязвимости. Много от уязвимостите са открити чрез автоматизирано тестване с инструментите AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Не са открити критични проблеми, които позволяват заобикаляне на всички нива на защита на браузъра и изпълнение на код в системата извън sandbxo околната среда. В рамките на програмата за изплащане на парични награди за откритие на уязвимости за текущия релиз, компания Google е изплатила 25 награди на обща стойност 81 хиляди долара САЩ (една награда $10000, три награди $7500, три награди $7000, една награда $6000, две награди $5000, четири награди $2000, три награди $1000 и една награда $500). Размерът на 6 награди все още не е определен.
Източник: opennet.ru


