Mozilla розпочне приймати доповнення на базі третьої версії маніфесту Chrome

21 листопада каталог AMO (addons.mozilla.org) почне приймати та завіряти цифровим підписом доповнення, що використовують третю версію маніфесту Chrome. Зазначені доповнення можна буде протестувати у нічних збірках Firefox. У стабільних випусках включення підтримки третьої версії маніфесту буде здійснено у Firefox 109, наміченому на 17 січня 2023 року. Підтримка другої версії маніфесту в найближчому майбутньому буде збережена, але наприкінці 2023 року, після оцінки динаміки перекладу доповнень на третю версію маніфесту, буде розглянуто питання про можливість переведення підтримки другої версії маніфесту до розряду застарілих.

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

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

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

Серед особливостей реалізації нового маніфесту у Firefox:

  • Додано новий декларативний API фільтрації контенту, але на відміну від Chrome не припинено підтримку старого блокуючого режиму роботи API webRequest.
  • У маніфесті визначено заміну фонових сторінок на варіант Service Workers, що працює у вигляді фонових процесів (Background Service Workers). Для забезпечення сумісності в майбутньому Firefox буде реалізовано підтримку Service Workers, але в даний час замість них запропоновано новий механізм Event Pages, який більш звичний для web-розробників, не вимагає повної переробки доповнень і усуває обмеження, пов'язані із застосуванням Service Workers. Event Pages дозволить привести існуючі доповнення з фоновими сторінками до вимог третьої версії маніфесту, зберігши доступ до всіх можливостей, необхідних для роботи з DOM.
  • Нова гранульована модель запиту повноважень - доповнення не зможе активуватися відразу для всіх сторінок (прибрано повноваження "all_urls"), а працюватиме тільки в контексті активної вкладки, тобто. користувачеві знадобиться підтверджувати роботу доповнення для кожного сайту. У Firеfox всі запити на доступ до даних сайту будуть розглядатися як необов'язкові, а кінцеве рішення про надання доступу прийматиме користувач, який зможе вибірково вирішувати, яке доповнення надасть доступ до своїх даних на тому чи іншому сайті.

    Для керування повноваженнями до інтерфейсу додана нова кнопка «Unified Extensions», яку вже можна протестувати в нічних збірках Firefox. Кнопка надає засоби для безпосереднього керування тим, до яких сайтів має доступ кожне доповнення – користувач може надати та відкликати доступ доповнення до будь-якого сайту. Управління повноваженнями застосовується лише до доповнень на основі третьої маніфесту, для доповнень на другій версії маніфесту гранульоване керування доступом до сайтів не провадиться.

    Mozilla розпочне приймати доповнення на базі третьої версії маніфесту Chrome
  • Зміна обробки Cross-origin запитів — відповідно до нового маніфесту на скрипти обробки контенту поширюватимуться ті ж обмеження повноважень, що й для основної сторінки, в яку ці скрипти впроваджуються (наприклад, якщо сторінка не має доступу до API місцезнаходження, то і скрипт також не отримає цей доступ). Ця зміна повністю реалізована у Firefox.
  • API на основі Promise. Firefox підтримує цей API і для третьої версії маніфесту перенесе його в простір імен "chrome.*".
  • Заборона виконання коду, завантаженого із зовнішніх серверів (мова про ситуації, коли доповнення підвантажує та виконує зовнішній код). Firefox застосовує блокування зовнішнього коду і розробники Mozilla додали додаткові техніки відстеження завантажень коду, які пропонуються в третій версії маніфесту. Для скриптів обробки контенту представлено окрему політику обмеження доступу до контенту (CSP, Content Security Policy).

Джерело: opennet.ru

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