Компания Google представи версия 104 на уеб браузъра Chrome. Същевременно е наличен стабилен вариант на свободния проект Chromium, който е основата на Chrome. Браузърът Chrome се отличава от Chromium с използването на логотипи на Google, наличието на система за изпращане на уведомления при срив, модули за възпроизвеждане на защитено от копиране видео съдържание (DRM), автоматична инсталация на обновления, постоянно включена Sandbox изолация, предоставяне на ключове за Google API и предаване на RLZ параметри при търсене. За тези, които се нуждаят от повече време за актуализиране, отделно се поддържа клонът Extended Stable, който е с продължителност от 8 седмици. Следващото издание Chrome 105 е планирано за 30 август.
Основни промени в Chrome 104:
- Введен е лимит на съществуването на Cookie — всички нови или обновени Cookie ще бъдат автоматично изтривани след 400 дни съществуване, дори ако времето на изтичане, посочено чрез атрибутите Expires и Max-Age, надвишава 400 дни (за такива Cookie животът им ще бъде ограничен до 400 дни). Създадените преди въвеждането на ограниченията Cookie ще запазят времето си на съществуване, дори ако то надвишава 400 дни, но ще бъдат ограничени при обновление. Промяната отразява новите изисквания, посочени в черновика на новата спецификация.
- Включена е блокировка на заявките от iframe към URL адреси, които препращат към локалната файлова система ("filesystem://").
- За ускоряване на зареждането на страницата е добавена нова оптимизация, която осигурява установяване на връзка с целевия хост в момента на натискане на линка, без да се чака отпускането на бутона или отдръпването на пръста от сензорния екран.
- Добавени са настройки за управление на API "Topics & Interest Group", промотирано в рамките на инициативата Privacy Sandbox и позволяващо определяне на категории интереси на потребителя и използването им вместо проследяващи Cookie за сегментиране на групи потребители със сходни интереси без идентификация на отделни потребители. Освен това са добавени единични информационни диалози, обясняващи на потребителя основата на технологията и предлагащи активиране на нейното поддържане в настройките.
- Повишени са праговите стойности за ограничаване на вложените извиквания на таймерите setTimeout и setInterval, стартирани с интервал по-малък от 4 мс («setTimeout(…, <4ms)»). Общият лимит за подобни извиквания е увеличен от 5 на 100, което позволява агресивно да не се намаляват индивидуалните извиквания, но същевременно не допуска злоупотреби, способни да повлияят на производителността на браузера.
- Включено е изпращането на основния сайт на заявка за потвърждение на правомощията CORS (Cross-Origin Resource Sharing) с заглавие «Access-Control-Request-Private-Network: true» при обращение от страница към субресурс във вътрешна мрежа (192.168.x.x, 10.x.x.x, 172.16-31.x.x) или към localhost (127.x.x.x). При потвърждаване на операцията в отговор на тази заявка, сървърът трябва да върне заглавие «Access-Control-Allow-Private-Network: true». В версия Chrome 104 резултатът от потвърждението все още не влияе на обработката на заявката – в случай на липса на потвърждение в уеб конзолата се показва предупреждение, но самата заявка за субресурса не се блокира. Включването на блокировка при липса на потвърждение сървър се очаква не по-рано от версия Chrome 107. За включване на блокировката в по-ранни версии може да се активира настройката «chrome://flags/#private-network-access-respect-preflight-results».
Потвърждение на правомощията сървър е въведено за засилване на защитата срещу атаки, свързани с достъп до ресурси в локалната мрежа или на компютъра на потребителя (localhost) от скриптове, зареждани при отваряне на сайта. Подобни заявки се използват от злонамерени лица за извършване на CSRF атаки срещу рутери, точки за достъп, принтери, корпоративни уеб интерфейси и други устройства и услуги, които приемат заявки само от локалната мрежа. За защита от подобни атаки, при обращение към всякакви субресурси във вътрешната мрежа, браузерът ще изпраща явна заявка за потвърждение на правомощията за зареждане на тези субресурси.
- Добавен е механизъм Region Capture, позволяващ изрязване на излишното съдържание от видео, генерирано на базата на захващане на екрана. Например, с помощта на API getDisplayMedia уеб приложението може да организира предаване на видео с съдържанието на таба, а Region Capture позволява изрязване на част от съдържанието, включително елементи за управление на видеоконференцията.
- Добавена поддръжка на новия синтаксис за медийни заявки, определен в спецификация Media Queries Level 4, който определя минималния и максималния размер на видимата област (viewport). Новият синтаксис позволява използването на обикновени математически оператори за сравнение и логически оператори, като „not“, „or“ и „and“. Например, вместо „@media (min-width: 400px) { … }“ сега може да се указва „@media (width >= 400px) { … }“.
- В режима Origin Trials (експериментални функции, изискващи отделна активация) са добавени няколко нови API. Origin Trial предполага възможността за работа с определен API от приложения, заредени от localhost или 127.0.0.1, или след регистрация и получаване на специален токен, който е валиден за ограничен период от време за конкретен сайт.
- Добавено е CSS свойство „focusgroup“ за подобряване на навигацията между елементите с помощта на клавишите със стрелки на клавиатурата.
- В API Secure Payment Confirmation е предоставена възможност на потребителя да деактивира хранилището за параметри на кредитни карти. За изобразяване на диалог, позволяващ отказване от запазването на параметри на кредитни карти, в конструктора PaymentRequest() е предвиден флаг „showOptOut: true“.
- Добавен е API Shared Element Transitions, който позволява организация на плавен преход между различни представяния на съдържание в едностранични уеб приложения.
- Стабилизирана е поддръжката на спекулативни правила (Speculation rules), позволяващи на авторите на сайтове да предадат информация на браузъра относно най-вероятните страници, на които потребителят може да премине. Браузерът използва тази информация за предварително зареждане и визуализиране на съдържанието на страниците.
- Стабилизиран е механизмът за опаковане на подсубресурси в пакети в формат Web Bundle, позволяващ увеличение на ефективността на зареждането на голям брой свързани файлове (CSS стилове, JavaScript, изображения, iframe). За разлика от пакетите в формат Webpack, форматът Web Bundle притежава следните предимства: в HTTP кеша не остава самият пакет, а неговите съставни части; компилирането и изпълнението на JavaScript започва без да чака цялостното зареждане на пакета; допуска включването на допълнителни ресурси, като CSS и изображения, които в webpack трябваше да се кодиране под формата на JavaScript низове.
- Добавено е CSS свойство object-view-box, позволяващо определянето на част от изображението, която ще бъде изведена в областта вместо зададения елемент, което може да се използва, например, за добавяне на рамка или сянка.
- Добавен е API Fullscreen Capability Delegation, позволяващ на един обект Window да предаде на друг обект Window правото да извиква requestFullscreen().
- Добавен е API за режим на цял екран, позволяващ показването на съдържание на цял екран и изскачащи прозорци на друг екран след потвърждение от потребителя.
- CSS свойството overflow-clip-margin е допълнено с атрибут visual-box, който определя от къде да започне отрязването на съдържанието, надвишаващо границите на областта (може да приема стойности content-box, padding-box и border-box).
- В API Async Clipboard е добавена възможността за определяне на специализирани формати за данните, предавани през буфера, различни от текст, изображения и текст с разметка.
- В WebGL е предоставена поддръжка за указване на цветово пространство за буфера за рендериране и трансформация при внос от текстура.
- Поддръжката на платформите OS X 10.11 и macOS 10.12 е прекратена.
- Поддръжката на API U2F (Cryptotoken), който по-рано беше обявен за остарял и деактивиран по подразбиране, е прекратена. На негово място идва API Web Authentication.
- Внесени са подобрения в инструментите за уеб разработчици. В отладчика е добавена възможността за повторно стартиране на кода от началото на функцията, след като спирачната точка сработи в тялото на функцията. Добавена е поддръжка за разработване на добавки за панела Recorder. В панела за анализ на производителността е добавена поддръжка за визуализация на етикети, зададени в уеб приложението чрез извикване на метода performance.measure(). Подобрени са препоръките при автоматично допълване на свойства на обекти в JavaScript. При автоматично допълване на CSS променливи е осигурен предварителен преглед на стойностите, независимо от цветовете.

Освен нововъведенията и поправките на грешки, в новата версия са отстранени 27 уязвимости. Мнозинството от уязвимостите са открити в резултат на автоматизирано тестване с инструменти като AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Не са открити критични проблеми, които да заобикалят всички нива на защита на браузера и да изпълняват код в системата извън пясъчната среда. В рамките на програмата за финансово възнаграждение за откриване на уязвимости за текущото издание, компанията Google е изплатила 22 награди на обща стойност 84 хиляди долара (едно възнаграждение от $15000, едно от $10000, едно от $8000, едно от $7000, четири награди от $5000, едно от $4000, три награди от $3000, четири награди от $2000 и три награди от $1000). Размерът на всяко възнаграждение все още не е определен.
Източник: opennet.ru

