A Mozilla bejelentette a harmadik Chrome-manifeszt verzió tesztelésének megkezdését a Firefoxban, amely meghatározza a WebExtensions API használatával készült kiegészítők számára elérhető lehetőségeket és erőforrásokat. A harmadik manifiest verzió teszteléséhez a Firefox 101 bétaverziójában az about:config oldalon be kell állítani az «extensions.manifestV3.enabled» paramétert true-ra, és az «xpinstall.signatures.required» paramétert false-ra. Kiegészítők telepítéséhez az about:debugging felület használható. A harmadik manifiest verzió alapértelmezett engedélyezése az év végére van tervezve.
A 57-es verziótól kezdve a Firefox teljesen átállt a WebExtensions API használatára a kiegészítők fejlesztésében, és leállította a XUL technológia támogatását. A WebExtensions-re való áttérés lehetővé tette a kiegészítők fejlesztésének egységesítését a Chrome, Opera, Safari és Edge platformokkal, egyszerűsítette a kiegészítők portolását a különböző webböngészők között, és lehetővé tette a teljes többfolyamatú működés használatát (a WebExtensions kiegészítők külön folyamatokban, elszigetelten futhatnak a böngésző többi részétől). A Firefox gyakorlatilag teljes kompatibilitást biztosít a második Chrome-manifeszt verzióval a kiegészítők más böngészőkhöz való egységesítése érdekében.
Jelenleg a Chrome-ban folyik a harmadik manifiest verzióra való átállás, a második verzió támogatását pedig 2023 januárjában leállítják. Mivel a harmadik manifiest verzió kritikát váltott ki, és sok tartalomblokkoló és biztonsági kiegészítő működését megzavarhatja, a Mozilla úgy döntött, hogy eltér az Firefoxban a manifiesttel való teljes kompatibilitás gyakorlásától, és más módon hajt végre néhány változást.
The main complaint about the third version of the manifest is the transition of the webRequest API to read-only mode, which allowed connecting custom handlers with full access to network requests and the ability to modify traffic on the fly. This API is used in uBlock Origin and many other extensions for blocking unwanted content and ensuring security. Instead of the webRequest API, the third version of the manifest proposes a limited capability API, declarativeNetRequest, which provides access to a built-in filtering engine that processes blocking rules independently, does not allow the use of custom filtering algorithms, and does not permit the setting of complex rules that overlap depending on conditions.
A Firefoxban javasolt harmadik manifiest verzió megvalósításában új deklaratív tartalomszűrő API-t adtak hozzá, de eltérően a Chrometól, nem szüntették meg a régi blokkoló működési módot a webRequest API esetében. Az új manifiest Firefoxban történő megvalósításának további sajátosságai:
- A manifesztben a háttéroldalak helyettesítését a háttérszolgáltatói működést végző Service Workers változatra határozták meg. A Firefox kompatibilitásának biztosítása érdekében ezt a követelményt megvalósítják, de emellett bemutatásra kerül egy új eseménypages mechanizmus, amely a webfejlesztők számára ismertebb, nem igényel teljes átírást a bővítmények esetében, és megszünteti a Service Workers alkalmazásával kapcsolatos korlátozásokat. Az eseménypages lehetővé teszi a meglévő, háttéroldalakat használó bővítmények harmadik verziójú manifeszti követelményeinek megfelelővé tételét, közben megtartva minden szükséges DOM-funkcióhoz való hozzáférést. A Firefox tesztelésre elérhető manifesztjében jelenleg csak az eseménypages-t támogatják, a Service Workers-alapú megoldás támogatását később ígérik. Az ajánlást az Apple is támogatta, és az eseménypages-t a Safari Technology Preview 136 verzióban megvalósította.
- Az új, részletezett jogosultságkérelmi modell azt jelenti, hogy a kiegészítő nem aktiválódhat egyszerre minden oldalra (eltávolítva az "all_urls" jogosultságot), hanem csak az aktív függöny kontextusában működik, tehát a felhasználónak minden weboldalon megerősítenie kell a kiegészítő működését. A Firefoxban minden weboldal adatainak elérésére irányuló kérdés önkéntesnek minősül, és a végső döntést a felhasználó hozza, aki szelektíven döntheti el, hogy melyik kiegészítőnek adjon hozzáférést az adataihoz egy adott oldalon.
- A Cross-origin kérések feldolgozásának megváltoztatása — az új manifestum szerint a tartalom feldolgozó szkriptek esetében ugyanolyan jogosultsági korlátozások vonatkoznak, mint a főoldalra, amelybe ezek a szkriptek beágyazódnak (például, ha az oldal nem fér hozzá a helymeghatározó API-hoz, akkor a kiegészítő szkript sem kap hozzáférést). Ez a változás teljes mértékben megvalósult a Firefoxban.
- Promise-alapú API. A Firefox már támogatja ezt az API-t, és a harmadik verziójú manifeszt esetében a 'chrome.*' névtérbe helyezi át.
- Külső forrásból betöltött kód futásának tilalma szerverek (a helyzetekről van szó, amikor a bővítmény külső kódot tölt be és hajt végre). A Firefox már alkalmazza a külső kód blokkolását, és a Mozilla fejlesztői további technikákat vezettek be a kódletöltések nyomon követésére a harmadik verziójú manifeszt ajánlásai szerint. A tartalomfeldolgozó szkriptekhez rendelkezésre áll egy külön hozzáférési korlátozási politika (CSP, Content Security Policy).
Forrás: opennet.ru
