Компания Google представи версията на уеб браузъра Chrome 104. Паралелно с това е налична стабилната версия на свободния проект Chromium, който служи като основа за Chrome. Браузърът Chrome се различава от Chromium с използването на логото на Google, с наличието на система за уведомления при срив, модули за възпроизвеждане на защитено съдържание (DRM), автоматична инсталация на актуализации, постоянно активирана Sandbox изолация, предоставяне на ключове за Google API и предаване на RLZ параметри при търсене. За тези, които се нуждаят от повече време за актуализация, отделно се поддържа клонът Extended Stable, който е с продължителност от 8 седмици. Следващото издание на Chrome 105 е планирано за 30 август.
Основни промени в Chrome 104:
- Въведено е ограничение за срок на живот на Cookies - всички нови или обновени Cookies ще бъдат автоматично изтривани след 400 дни, дори ако зададеното чрез атрибутите Expires и Max-Age време за изтичане надвишава 400 дни (за такива Cookies срокът на живот ще бъде ограничен до 400 дни). Cookies, създадени преди въвеждането на ограничението, ще запазят своя срок на живот, дори ако той надвишава 400 дни, но ще бъдат ограничени при обновление. Тази промяна отразява новите изисквания, посочени в проектоспецификацията.
- Включена е блокировка на достъпа от iframe до URL адреси, насочващи се към локалната файлова система ("filesystem://").
- За ускоряване на зареждането на страницата е добавена нова оптимизация, която осигурява установяване на връзка с целевия хост в момента на натискане на връзката, без да се изчаква отпускането на бутона или свалянето на пръста от сензорния екран.
- Добавени са настройки за управление на API „Topics & Interest Group“, промотиран в рамките на инициативата Privacy Sandbox, позволяваща да се определят категориите интереси на потребителя и да се използват вместо проследяващи Cookies за групиране на потребители с подобни интереси без идентифициране на отделни потребители. Освен това са добавени информационни диалози, показвани само веднъж, които обясняват на потребителя същността на технологията и предлагат активиране на нейното поддържане в настройките.
- Прагът за ограничаване на вложените извиквания на таймери 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 да позволи изрязване на част от съдържанието, която включва елементи за управление на видеоконференциите.
- например, при помощта на 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 Fullscreen Companion Window, който позволява разполагане на съдържание на цял екран и изскачащи прозорци на друг екран след получаване на разрешение от потребителя.
- В 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. Не са открити критични проблеми, които да позволяват заобикаляне на всички нива на защита на браузера и изпълнение на код в системата извън sandbox средата. В рамките на програмата за възнаграждение за откритие на уязвимости, компанията Google е изплатила 22 премии на обща стойност 84 хиляди долара (една премия от $15000, една премия от $10000, една премия от $8000, една премия от $7000, четири премии от $5000, една премия от $4000, три премии от $3000, четири премии от $2000 и три премии от $1000). Размерът на едно възнаграждение още не е определен.
Източник: opennet.ru

