На 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, опрости портването на добавки между различни уеб браузъри и предостави възможност за пълноценно използване на многопроцесния режим на работа (добавките 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.
- API, основан на Promise. Firefox поддържа това API и за третата версия на манифеста ще го премести в пространството имена «chrome.*».
- Забрана за изпълнение на код, зареден от външни сървъри (става въпрос за ситуации, когато разширението зарежда и изпълнява външен код). В Firefox се прилага блокиране на външния код и разработчиците на Mozilla добавиха допълнителни техники за проследяване на зареждането на кода, предлагани в третата версия на манифеста. За скриптовете за обработка на съдържание е представена отделна политика за ограничаване на достъпа до съдържание (CSP, Content Security Policy).
Източник: opennet.ru

