На 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, който е по-познат за веб-разработчиците, не изисква пълна преработка на добавките и премахва ограниченията, свързани с използването на Service Workers. Event Pages ще позволи адаптиране на съществуващите добавки с фонови страници към изискванията на трета версия на манифеста, като същевременно запази достъпа до всички необходими функции за работа с DOM.
- Новата гранулирана модел на заявка за права — добавката няма да може да се активира веднага за всички страници (правото "all_urls" е премахнато) и ще работи само в контекста на активната вкладка, т.е. потребителят ще трябва да потвърди работата на добавката за всеки сайт. В Firefox всички искания за достъп до данни от сайта ще се разглеждат като незадължителни, а окончателното решение за предоставяне на достъп ще взема потребителят, който ще може селективно да решава на коя добавка да предостави достъп до своите данни на конкретен сайт.
За управление на пълномощията в интерфейса е добавен нов бутон „Unified Extensions“, който вече може да бъде тестван в нощните сборки на Firefox. Бутонът предоставя средства за пряко управление на достъпа на всяка добавка до сайтовете — потребителят може да предостави и оттегли достъпа на добавката до всеки сайт. Управлението на пълномощията се прилага само за добавки на основата на трета версия на манифеста; за добавки на втора версия на манифеста не се реализира гранулирано управление на достъпа до сайтовете.

- Промяна в обработката на Cross-origin искания — съгласно новия манифест на скриптовете, ограниченията на правата ще важат и за основната страница, в която тези скриптове са внедрени (например, ако страницата няма достъп до API за определяне на местоположението, то и скриптът на добавката няма да получи този достъп). Тази промяна вече е напълно реализирана в Firefox.
- Promise-базирано API. Firefox поддържа този API и за третата версия на манифеста ще го премести в пространството с имена „chrome.*“.
- Забрана за изпълнение на код, зареден от външни сървъри (говори се за ситуации, когато добавката зарежда и изпълнява външен код). В Firefox се прилага блокировка на външния код и разработчиците на Mozilla добавиха допълнителни техники за следене на зарежданията на кода, предлагани в третата версия на манифеста. За скриптовете за обработка на съдържанието е представена отделна политика за ограничаване на достъпа до съдържанието (CSP, Content Security Policy).
Източник: opennet.ru

