Компания Google представи новата версия на уеб браузъра Chrome 101. В същото време е налична стабилна версия на свободния проект Chromium, който служи като основа за Chrome. Браузърът Chrome се отличава от Chromium с използването на логотипите на Google, наличието на система за изпращане на уведомления при срив, модули за възпроизвеждане на защитено видео съдържание (DRM), автоматично инсталиране на обновления, постоянно включена Sandbox изолация, предоставяне на ключове за Google API и предаване на RLZ параметри при търсене. За тези, които имат нужда от повече време за обновление, отделно се поддържа версията Extended Stable, която е съпроводена с 8 седмици, през които е създадено обновление за предходната версия Chrome 100. Следващата версия 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, до май 2023 г. е предоставена възможност за връщане на пълния User-Agent.
- Променено е поведението на функцията 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, което позволява създаването на комбинирани идентификационни услуги, осигуряващи конфиденциалност и функциониращи без механизми за между-сайтово проследяване, като обработката на чужди бисквитки. 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. Не са открити критични проблеми, които позволяват да се заобиколят всички нива на защита на браузъра и да се изпълни код в системата извън средата на песен. В рамките на програмата за награди за откритие на уязвимости, Google изплати 25 награди на обща стойност 81 хиляди долара (една награда от $10000, три награди от $7500, три награди от $7000, една награда от $6000, две награди от $5000, четири награди от $2000, три награди от $1000 и една награда от $500). Размерът на 6 награди все още не е определен.
Източник: opennet.ru


