Google представила реліз web-браузера Chrome 80
Google представила реліз web-браузера Chrome 80
Google представила реліз web-браузера Chrome 80. Одночасно доступний стабільний випуск вільного проекту Chromium, що виступає основою Chrome. Браузер Chrome відрізняється використанням логотипів Google, наявністю системи відправлення повідомлень у разі краху, можливістю завантаження модуля Flash на запит, модулями для відтворення захищеного відеоконтенту (DRM), системою автоматичної установки оновлень і передачею при пошуку RLZ-параметрів. Наступний випуск Chrome 81 заплановано на 17 березня.
Основні зміни в Chrome 80:
- Для невеликого відсотка користувачів запропоновано функцію групування вкладок, що дозволяє об'єднувати кілька подібних за призначенням вкладок у візуально розділені групи. Кожній групі можна прив'язати свій колір та ім'я. Користувачі, які не потрапили в першу хвилю активації, можуть включити підтримку угруповання через опцію "chrome://flags/#tab-groups".
- Додано підтримку функції 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).
- Заборонено виведення спливаючих вікон (виклик методу 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 і '', на відміну від оператора "||". /li>
- У режимі 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.
- Стабілізований і тепер поширюється поза Origin Trials програмний інтерфейс Contact Picker, що дозволяє користувачеві вибрати записи з адресної книги та передати певні деталі про них на сайт. За запитом визначається список властивостей, які потрібно отримати. Дані властивості явно відображаються користувачеві, який вирішує передавати ці властивості чи ні. 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: anywhere", що дозволяє розривати нерозривні послідовності символів у будь-якому місці, якщо в рядку не вдалося знайти придатну для розриву позицію.
- Для медіаконтекту, оброблюваного в шифрованому вигляді, реалізована підтримка методу MediaCapabilities.decodingInfo(), що надає відомості про можливості браузера, пов'язані з декодуванням захищеного контенту (наприклад, вказаний метод можна використовувати для вибору сценаріїв високоякісного або економного). доступної пропускної спроможності та розміру екрана).
- Додано метод HTMLVideoElement.getVideoPlaybackQuality(), через який можна отримати відомості про продуктивність відтворення відео для коригування бітрейту, дозволу та інших параметрів відео.
- В API Payment Handler, який спрощує інтеграцію з існуючими платіжними системами, додано можливість делегування обробки адреси та контактної інформації зовнішньому обробнику платіжної системи (додаток платіжної системи може мати більш точні відомості, ніж браузер).
- Додано підтримку HTTP-заголовка Sec-Fetch-Dest, що дозволяє надіслати додаткові метадані про тип пов'язаного із запитом контенту (наприклад, для запиту через тег img вказується тип "image", для шрифтів - "font", для скриптів - "script ", Для стилів - "style" і т.п.). На основі зазначеного типу сервер може вжити заходів для захисту від деяких типів атак (наприклад, малоймовірно, що посилання на обробник для переказу грошей буде задано через тег img, тому такі запити не потрібно обробляти).
- У JavaScript-движку V8 проведена оптимізація зберігання покажчиків у купі. Замість повного 64-розрядного значення забезпечене зберігання лише унікальних нижніх біт покажчика. Подібна оптимізація дозволила скоротити споживання пам'яті купою на 40%, ціною зниження продуктивності на 3-8%.
- Зміни в інструментах для web-розробників:
- У web-консолі з'явилася можливість перевизначення виразів let та class.
- Покращено засоби налагодження WebAssembly. Додана підтримка DWARF для покрокової налагодження, вказівки точок зупинки та аналізу трасування стека у вихідному коді, на якому написано програму WebAssembly.
- Покращено панель для аналізу активності мережі. Додано можливість перегляду ланцюжка виклику скриптів, пов'язаних з ініціюванням запиту.
Додані нові стовпці Path та URL, в яких відображається абсолютний шлях та повний URL для кожного мережного ресурсу. Забезпечено виділення вибраного запиту в оглядовій діаграмі.
- У вкладці Network Conditions додано опцію зміни параметра User-Agent.
- Запропоновано новий інтерфейс для налаштування панелі аудиту.
- У вкладці Coverage надано вибір збору coverage-даних для кожної функції або для кожного блоку коду (детальніша статистика, але вимагає більше ресурсів).
- Дія маніфесту AppCache (технологія для організації роботи web-додатка в offline-режимі) обмежена поточним каталогом сайту (якщо маніфест був завантажений з www.example.com/foo/bar/, то можливість перевизначення URL діятиме лише всередині /foo / Bar /). У Chrome 82 підтримку AppCache планується видалити повністю. В якості причини називається бажання позбутися одного з векторів для здійснення атак, пов'язаних з міжсайтовим скриптингом. Замість AppCache рекомендується використовувати API Cache.
- Припинено підтримка застарілого API WebVR 1.1, замість якого можна використовувати API WebXR Device, що дозволяє отримати доступ до компонентів для створення віртуальної та доповненої реальності та уніфікувати роботу з різними класами пристроїв, від стаціонарних шоломів віртуальної реальності до рішень на базі мобільних. /li>
- Обробники протоколів, що підключаються через методи registerProtocolHandler() та unregisterProtocolHandler(), тепер можуть працювати тільки в безпечному контексті (при доступі через HTTPS).
Крім нововведень та виправлення помилок у новій версії усунено 56 вразливостей. Багато вразливостей виявлено в результаті автоматизованого тестування інструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer і AFL. Критичних проблем, які дозволяють обійти всі рівні захисту браузера та виконати код у системі за межами sandbox-оточення, не виявлено. У рамках програми з виплати грошової винагороди за виявлення вразливостей для поточного релізу компанія Google виплатила 37 премій на суму 48 тисяч доларів США (одна премія $10000, три премії $5000, три премії $3000, чотири премії $2000, три премії $1000 та шість). Розмір 17 винагород поки не визначений.
