Firefox розпочав тестування третьої версії маніфесту Chrome

Компанія Mozilla оголосила про початок тестування реалізації у Firefox третьої версії маніфесту Chrome, що визначає можливості та ресурси, доступні для доповнень, написаних за допомогою API WebExtensions. Для тестування третьої версії маніфесту у бета-версії Firefox 101 на сторінці about:config слід встановити параметр «extensions.manifestV3.enabled» у значення true, а параметр «xpinstall.signatures.required» у значення false. Для встановлення додатків можна використовувати інтерфейс about: debugging. Включення третьої версії маніфесту за промовчанням заплановано на кінець року.

Починаючи з версії 57, Firefox повністю перейшов на використання API WebExtensions для розробки доповнень і припинив підтримку технології XUL. Перехід на WebExtensions дозволив уніфікувати розробку доповнень із платформами Chrome, Opera, Safari та Edge, спростив портування доповнень між різними web-браузерами і дав можливість повноцінно використовувати багатопроцесний режим роботи (доповнення WebExtensions можуть виконуватися в окремих процесах ізольовано від інших частин браузера). Для уніфікації розробки доповнень з іншими браузерами Firefox забезпечується майже повна сумісність з другою версією маніфесту Chrome.

В даний час у Chrome ведеться робота з переходу на третю версію маніфесту, а підтримка другої версії буде припинена у січні 2023 року. Оскільки третя версія маніфесту стала об'єктом критики та призведе до порушення роботи багатьох доповнень для блокування небажаного контенту та забезпечення безпеки, компанія Mozilla вирішила відійти від практики забезпечення повної сумісності з маніфестом у Firefox та реалізувати інакше деякі зміни.

Основне невдоволення третьою версією маніфесту пов'язане з переведенням в режим тільки для читання API webRequest, що дозволяло підключати власні обробники, які мають повний доступ до мережних запитів і здатні на льоту модифікувати трафік. Зазначений API застосовується у uBlock Origin та багатьох інших доповненнях для блокування небажаного контенту та забезпечення безпеки. Замість API webRequest у третій версії маніфесту запропонований обмежений за своїми можливостями API declarativeNetRequest, що надає доступ до вбудованого двигуна для фільтрації, що самостійно обробляє правила блокування, що не дозволяє використовувати власні алгоритми фільтрації і не дозволяє задавати складні правила, що перекривають один одного залежно від умов.

У запропонованій Firefox реалізації третьої версії маніфесту додали новий декларативний API фільтрації контенту, але на відміну від Chrome не стали припиняти підтримку старого блокуючого режиму роботи API webRequest. Серед інших особливостей реалізації нового маніфесту у Firefox:

  • У маніфесті визначено заміну фонових сторінок на варіант Service Workers, що працює у вигляді фонових процесів (Background Service Workers). Для забезпечення сумісності Firefox буде реалізовано цю вимогу, але додатково запропоновано новий механізм Event Pages, який більш звичний для web-розробників, не вимагає повної переробки доповнень і усуває обмеження, пов'язані із застосуванням Service Workers. Event Pages дозволить привести існуючі доповнення з фоновими сторінками до вимог третьої версії маніфесту, зберігши доступ до всіх можливостей, необхідних для роботи з DOM. У доступній для тестування у Firefox реалізації маніфесту поки що підтримуються лише Event Pages, а підтримку рішення на базі Service Workers обіцяють додати пізніше. Пропозицію підтримала компанія Apple та реалізувала Event Pages у випуску Safari Technology Preview 136.
  • Нова гранульована модель запиту повноважень - доповнення не зможе активуватися відразу для всіх сторінок (прибрано повноваження "all_urls"), а працюватиме тільки в контексті активної вкладки, тобто. користувачеві знадобиться підтверджувати роботу доповнення для кожного сайту. У Firеfox всі запити на доступ до даних сайту будуть розглядатися як необов'язкові, а кінцеве рішення про надання доступу прийматиме користувач, який зможе вибірково вирішувати, яке доповнення надасть доступ до своїх даних на тому чи іншому сайті.
  • Зміна обробки Cross-origin запитів — відповідно до нового маніфесту на скрипти обробки контенту поширюватимуться ті ж обмеження повноважень, що й для основної сторінки, в яку ці скрипти впроваджуються (наприклад, якщо сторінка не має доступу до API місцезнаходження, то і скрипт також не отримає цей доступ). Ця зміна повністю реалізована у Firefox.
  • API на основі Promise. Firefox вже підтримує цей API і для третьої версії маніфесту перенесе його в простір імен "chrome.*".
  • Заборона виконання коду, завантаженого із зовнішніх серверів (мова про ситуації, коли доповнення підвантажує та виконує зовнішній код). Firefox вже застосовує блокування зовнішнього коду і розробники Mozilla додали додаткові техніки відстеження завантажень коду, які пропонуються в третій версії маніфесту. Для скриптів обробки контенту представлено окрему політику обмеження доступу до контенту (CSP, Content Security Policy).

Джерело: opennet.ru

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