Реліз Chrome 80

компанія Google представила реліз web-браузера Chrome 80. Одночасно доступний стабільний випуск вільного проекту Хром, що є основою Chrome. Браузер Chrome відрізняється використанням логотипів Google, наявністю системи надсилання повідомлень у разі краху, можливістю завантаження модуля Flash на запит, модулями для відтворення захищеного відеоконтенту (DRM), системою автоматичної установки оновлень та передачею при пошуку RLZ-параметрів. Наступний випуск Chrome 81 заплановано на 17 березня.

Основні зміни в Chrome 80:

  • Для невеликого відсотка користувачів запропоновано функцію групування вкладок, що дозволяє об'єднувати кілька подібних за призначенням вкладок візуально розділені групи. Кожній групі можна прив'язати свій колір та ім'я. Користувачі, які не потрапили в першу хвилю активації, можуть включити підтримку угруповання через опцію "chrome://flags/#tab-groups".

    Реліз Chrome 80

  • Додано підтримку функції Scroll-To-Text, що дозволяє створювати посилання окремі слова чи фрази, без явного вказівки у документі міток з допомогою тега «a name» чи властивості «id». Синтаксис подібних посилань планується затвердити як web-стандарт, який поки що знаходиться на стадії чернетки. Маска для переходу (по суті виконується пошук з прокручуванням) відокремлюється від звичайного якоря ознакою ": ~:". Наприклад, при відкритті посилання "https://opennet.ru/52312/#:~:text=Chromе" сторінка зрушить на позицію з першою згадкою слова "Chromе" і дане слово буде підсвічене.
  • Застосовано більш жорстке обмеження передачі Cookie між сайтами, для не-HTTPS запитів, що забороняє обробку сторонніх Cookie, що виставляються при зверненні до сайтів, відмінних від домену поточної сторінки. Подібні Cookie застосовуються для відстеження переміщень користувача між сайтами у коді рекламних мереж, віджетів соціальних мереж та систем web-аналітики. Нагадаємо, що для керування передачею Cookie застосовується вказаний у заголовку Set-Cookie атрибут SameSite, який за замовчуванням тепер виставлений у значення "SameSite=Lax", що обмежує відправлення Cookie для міжсайтових субзапитів, таких як запит зображення або завантаження контенту через iframe з іншого сайту. Сайти можуть перевизначити режим SameSite, що застосовується за умовчанням, явно виставляючи при установці Cookie значення SameSite=None. При цьому значення SameSite=None для Cookie може виставлятись лише в режимі Secure (діє для з'єднань через HTTPS). Зміна почне поетапно застосовуватися 17 лютого спочатку для невеликого відсотка користувачів, а потім поступово розширюючи охоплення.
  • Додана захист від настирливих повідомлень, пов'язаних із підтвердженням повноважень. Так як подібна активність, наприклад, спам запитами на отримання push-повідомлень, перериває роботу користувача і відволікає увагу на дії в діалогах підтвердження, в Chrome 80 замість окремого діалогу, в адресному рядку тепер може відображатися інформаційна підказка з попередженням про блокування запиту повноважень, яка потім згортається в індикатор із зображенням закресленого дзвону. При натисканні на індикатор можна активувати або відхилити повноваження в будь-який зручний момент. Автоматично новий режим буде вибірково включатися для користувачів, які раніше блокували подібні запити, а також для сайтів, на яких фіксується великий відсоток відхилення запитів. Для включення нового режиму для всіх запитів до налаштувань додано спеціальну опцію (chrome://flags/#quiet-notification-prompts).

    Реліз Chrome 80

  • Заборонено виведення спливаючих вікон (виклик методу window.open()) та відправка синхронних запитів XMLHttpRequest в обробниках подій закриття або приховування сторінки (unload, beforeunload, pagehide та visibilitychange);
  • Запропоновано початкову захист від завантаження змішаного мультимедійного контенту (коли на сторінці HTTPS завантажуються ресурси за протоколом http://). На сторінках, відкритих по HTTPS, тепер автоматично будуть замінюватися посилання "http://" на "https://" у блоках, пов'язаних із відтворенням звукових та відео файлів. Якщо звуковий або відео ресурс недоступний за https, його завантаження блокується (вручну можна відзначити блокування через меню, доступне через символ замку в адресному рядку).

    Зображення продовжать завантажуватися без змін (автозаміна буде застосована в Chrome 81), але для заміни на https або блокування зображень розробникам сайтів надані CSP-властивості upgrade-insecure-requests та block-all-mixed-content. Для скриптів та iframe блокування змішаного контенту вже було реалізовано раніше.

  • Почалося поступове відключення підтримки FTP. За промовчанням підтримка FTP поки зберігається, але буде проведений експеримент, в рамках якого для певного відсотка користувачів підтримка FTP буде відключена (для повернення потрібно запустити браузер з опцією enable-ftp). Нагадаємо, що у минулих випусках вже було відключено відображення у вікні браузера вмісту ресурсів, що завантажуються за протоколом «ftp://» (наприклад, припинено показ HTML-документів та файлів README), заборонено використання FTP при завантаженні субресурсів з документів та припинено підтримку проксі для FTP. Тим не менш, досі залишалася можливість завантаження файлів за прямими посиланнями та відображення вмісту каталогів.
  • Додана
    можливість використання векторних SVG-зображень як піктограма сайту (favicon).

  • У налаштуваннях додано можливість вибіркового відключення окремих типів даних, що передаються при синхронізації між браузерами.
  • Для корпоративних користувачів, що централізовано адмініструються, додано правило BlockExternalExtensions, що дозволяє заборонити встановлення зовнішніх додатків на пристрій.
  • Реалізовано можливість одноразової перевірки всього ланцюжка властивостей або викликів у JavaScript. Наприклад, при зверненні до db.user.name.length раніше потрібно поетапно перевірити визначення всіх складових частин, наприклад, через if (db & db.user & db.user.name). Тепер за допомогою операції "?." можна звернутися до значення "db?.user?.name?.length" без попередніх перевірок і таке звернення не приведе до виведення помилки. У разі проблем (якщо якийсь елемент оброблений як null або undefined) на виході буде видано значення «undefined».
  • Javascript пропонує новий логічний оператор об'єднання «??«, який повертає правий операнд, якщо лівий операнд має значення NULL або undefined, і навпаки. Наприклад, «const foo = bar ?? 'default string'» якщо bar дорівнює null, поверне стоку або значення bar в іншому випадку, у тому числі коли bar дорівнює 0 і ' ', на відміну від оператора «||».
  • У режимі Origin Trials (експериментальні можливості, що вимагають окремої активації) запропонований API Content Indexing. Origin Trial має на увазі можливість роботи із зазначеним API з додатків, завантажених з localhost або 127.0.0.1, або після проходження реєстрації та отримання спеціального токена, який діє обмежений час для конкретного сайту. API Content Indexing, надає метадані про контент, який раніше був прокешований web-додатками, що працюють у режимі Progressive Web Apps (PWS). Програма може зберігати на стороні браузера різні дані, включаючи зображення, відео та статті, а при зникненні мережного з'єднання використовувати їх за допомогою API Cache Storage та IndexedDB. Content Indexing API дає можливість додавати, знаходити та видаляти подібні ресурси. У браузері даний API вже використовується для переліку списку сторінок та мультимедійних даних, доступних для перегляду в offline.

    Реліз Chrome 80

  • Стабілізований і тепер поширюється поза Origin Trials програмний інтерфейс Вибір контактів, що дозволяє користувачеві вибрати записи з адресної книги та передати певні деталі про них на сайт. При запиті визначається перелік властивостей, які потрібно отримати. Дані властивості явно відображаються користувачеві, який вирішує передавати ці властивості чи ні. API може бути використаний, наприклад, у поштовому веб-клієнті для вибору одержувачів для надісланого листа, у веб-додатку з функцією VoIP для ініціювання дзвінка за певним номером або в соціальній мережі для пошуку вже зареєстрованих друзів. При цьому в рамках Origin Trials запропоновані деякі нові властивості Contact Picker: крім раніше доступних ПІБ, email та номер телефону, додано можливість передачі поштової адреси та зображення.
  • У Web Workers запропонований новий спосіб завантаження модулів ECMAScript, що дозволяє обійтися без застосування функції importScripts(), яка блокує роботу worker-а під час обробки скрипта, що імпортується, і виконує його в глобальному контексті. Новий спосіб передбачає створення спеціальних модулів для Web Workers, які підтримують стандартні механізми імпорту JavaScript і можуть завантажуватись динамічно, не блокуючи виконання worker-а. Для завантаження модулів у конструкторі Worker передбачено новий тип ресурсу - 'module':

    const worker = new Worker('worker.js', {
    type: 'module'
    });

  • Реалізовано вбудована можливість обробки JavaScript стислих потоків, що не вимагає використання зовнішніх бібліотек. Для стиснення та розпакування додані API CompressionStream та DecompressionStream. Підтримується стиск з використанням алгоритмів gzip та deflate.

    const compressionReadableStream
    = inputReadableStream.pipeThrough(new CompressionStream('gzip'));

  • Додано CSS-властивість «line-break: anywhere«, що дозволяє розриви лише на рівні будь-якого типографічного символу, зокрема розриви поруч із символами пунктуації, визначеними пробілами ( ) і в середині слів. Також додано CSS-властивість «overflow-wrap: будь-де» дозволяє розривати нерозривні послідовності символів у будь-якому місці, якщо в рядку не вдалося знайти придатну для розриву позицію.
  • Для медіаконтекту, що обробляється в шифрованому вигляді, реалізовано підтримку методу MediaCapabilities.decodingInfo(), що надає відомості про можливості браузера, пов'язані з декодуванням захищеного контенту (наприклад, вказаний метод можна використовувати для вибору сценаріїв високоякісного або економного споживання енергії способів декодування з урахуванням доступної пропускної здатності та розміру екрана).
  • Доданий метод HTMLVideoElement.getVideoPlaybackQuality(), через який можна отримати відомості про продуктивність відтворення відео для коригування бітрейту, роздільної здатності та інших параметрів відео.
  • В API Payment Handler, що спрощує інтеграцію з існуючими платіжними системами, додано можливість делегування обробки адреси та контактної інформації зовнішнього оброблювача платіжної системи (додаток платіжної системи може мати більш точні відомості, ніж браузер).
  • Додана підтримка HTTP-заголовка Sec-Fetch-Dest, що дозволяє відправити додаткові метадані про тип пов'язаного із запитом контенту (наприклад, для запиту через тег img вказується тип "image", для шрифтів - "font", для скриптів - "script", для стилів - "style" тощо). ). На основі зазначеного типу сервер може вжити заходів для захисту від деяких типів атак (наприклад, малоймовірно, що посилання на обробник для переказу грошей буде задано через тег img, тому такі запити не потрібно обробляти).
  • У JavaScript-движку V8 проведено оптимізацію зберігання вказівників у купі. Замість повного 64-розрядного значення забезпечене зберігання лише унікальних нижніх біт покажчика. Подібна оптимізація дозволила скоротити споживання пам'яті купою на 40%, ціною зниження продуктивності на 3-8%.
    Реліз Chrome 80

    Реліз Chrome 80

  • Зміни в інструментах для web-розробників:
    • У web-консолі з'явилася можливість перевизначення виразів let та class.

      Реліз Chrome 80

    • Поліпшено засоби налагодження WebAssembly. Додана підтримка КНІР для покрокової налагодження, вказівки точок зупинки та аналізу трасування стека у вихідному коді, на якому написано програму WebAssembly.

      Реліз Chrome 80

    • Поліпшено панель для аналізу мережної активності. Додано можливість перегляду ланцюжка виклику скриптів, пов'язаних з ініціюванням запиту.

      Реліз Chrome 80

      Додані нові стовпці Path та URL, у яких відображається абсолютний шлях та повний URL для кожного мережного ресурсу. Забезпечено виділення вибраного запиту в оглядовій діаграмі.

      Реліз Chrome 80

    • У вкладці Network Conditions додано опцію зміни параметра User-Agent.

      Реліз Chrome 80

    • Запропоновано новий інтерфейс для налаштування панелі аудиту.
      Реліз Chrome 80

    • У вкладці покриття надано вибір збору coverage-даних для кожної функції або для кожного блоку коду (детальніша статистика, але вимагає більше ресурсів).

      Реліз Chrome 80

  • Дія маніфесту AppCache (технологія для організації роботи web-програми в offline-режимі) обмежена поточним каталогом сайту (якщо маніфест був завантажений з www.example.com/foo/bar/, то можливість перевизначення URL діятиме лише всередині /foo/bar/). У Chrome 82 підтримку AppCache планується видалити повністю. Як причина називається бажання позбутися одного з векторів для здійснення атак, пов'язаних з міжсайтовим скриптингом. Замість AppCache рекомендується використовувати API Кеш.
  • Припинено підтримка застарілого API WebVR 1.1, замість якого можна використовувати API WebXR Device, що дозволяє отримати доступ до компонентів для створення віртуальної та доповненої реальності та уніфікувати роботу з різними класами пристроїв, від стаціонарних шоломів віртуальної реальності до рішень на базі мобільних пристроїв.
  • Обробники протоколів, що підключаються через методи registerProtocolHandler() та unregisterProtocolHandler(), тепер можуть працювати тільки в безпечному контексті (при доступі через HTTPS).

Окрім нововведень та виправлення помилок у новій версії усунено 56 вразливостей. Багато вразливостей виявлено в результаті автоматизованого тестування інструментами Адреса Sanitizer, MemorySanitizer, Цілісність потоку керування, LibFuzzer и AFL. Критичних проблем, які дозволяють обійти всі рівні захисту браузера та виконати код у системі за межами sandbox-оточення, не виявлено. У рамках програми з виплати грошової винагороди за виявлення вразливостей для поточного релізу компанія Google виплатила 37 премій на суму 48 тисяч доларів США (одна премія $10000, три премії $5000, три премії $3000, чотири премії $2000, три премії $1000 та шість). Розмір 500 винагород поки не визначений.

Джерело: opennet.ru

Додати коментар або відгук