Ontwikkelaars van Mozilla hebben de informatie over de plannen met betrekking tot de ondersteuning in Firefox voor de tweede en derde versie van het Chrome-manifest bijgewerkt. Google heeft aangekondigd dat het in juni van dit jaar de ondersteuning voor extensies die gebruikmaken van de tweede versie van het manifest zal stoppen in de testversies van Chrome 127 (Dev, Canary en Beta). In de stabiele versie zal de ondersteuning voor de tweede versie van het manifest niet eerder worden stopgezet dan in juli.
Mozilla zal daarentegen in de nabije toekomst de ondersteuning voor de tweede versie van het manifest niet beƫindigen en de mogelijkheid behouden om extensies uit te voeren die gebruikmaken van functies die niet beschikbaar zijn in de derde versie van het manifest. De beslissing blijft van kracht om in Firefox geen volledige compatibiliteit met de derde versie van het Chrome-manifest te waarborgen. In Firefox blijft de volledige API webRequest beschikbaar, die in Chrome in een alleen-lezen modus zal worden gezet.
In Firefox zal ook met behulp van Event Pages de ondersteuning voor het uitvoeren van achtergrondscripts op basis van DOM worden behouden, in plaats waarvan in de derde versie van het manifest het gebruik van Service Workers is voorgeschreven. Achtergrondscripts op basis van Service Workers worden momenteel nog niet ondersteund in Firefox, maar ontwikkelaars zullen de mogelijkheid krijgen om zowel handlers op basis van Event Pages als scripts op basis van Service Workers in het extensie te definiƫren, wat het mogelijk maakt om extensies te creƫren die voldoen aan de derde versie van het manifest en werken in zowel Chrome als Firefox.
Het Chrome-manifest definieert de mogelijkheden en middelen die beschikbaar zijn voor extensies die zijn geschreven met behulp van de WebExtensions API. Sinds versie 57 is Firefox volledig overgestapt op het gebruik van de WebExtensions API voor de ontwikkeling van extensies en is de ondersteuning voor de XUL-technologie stopgezet. De overstap naar WebExtensions heeft het mogelijk gemaakt om de ontwikkeling van extensies te uniformeren met platforms als Chrome, Opera, Safari en Edge, het porteren van extensies tussen verschillende webbrowser te vereenvoudigen en volledig gebruik te maken van de multiprocess-modus (WebExtensions-extensies kunnen in afzonderlijke processen draaien, geĆÆsoleerd van de andere delen van de browser). Voor de uniformiteit in de ontwikkeling van extensies met andere browsers wordt in Firefox bijna volledige compatibiliteit met de tweede versie van het Chrome-manifest gewaarborgd.
In het kader van het initiatief om het maken van veilige en hoge-presterende extensies te vereenvoudigen, en om het maken van onveilige en trage extensies te bemoeilijken, heeft Google versie drie van het manifest ontwikkeld. De grootste onvrede over de derde versie van het manifest is ontstaan door de overgang naar de alleen-lezen modus van de webRequest API, die het mogelijk maakte om eigen handlers te koppelen met volledige toegang tot netwerkverzoeken en in staat was om het verkeer on-the-fly te modificeren. In plaats van de webRequest API is in de derde versie van het manifest een beperkte declarativeNetRequest API toegevoegd, die toegang biedt tot een ingebouwde filterengine die regels voor blokkering zelfstandig verwerkt en het niet toestaat om eigen filteralgoritmen te gebruiken.
Onder de kenmerken van de implementatie van de derde versie van het manifest in Firefox:
- Er is een nieuwe declaratieve API voor contentfiltering toegevoegd, maar in tegenstelling tot Chrome is de ondersteuning voor de oude blocker-modus van de webRequest API niet stopgezet.
- Er is een Event Pages-mechanisme geĆÆmplementeerd, dat gebruikelijker is voor webontwikkelaars, geen volledige herontwerp van extensies vereist en de beperkingen wegneemt die gepaard gaan met het gebruik van Service Workers. Event Pages maakt het mogelijk bestaande extensies met achtergrondpagina's aan te passen aan de eisen van de derde versie van het manifest, terwijl alle mogelijkheden behouden blijven die nodig zijn voor DOM-bewerking.
- Het nieuwe gedetailleerde machtigingsaanvraagmodel ā een extensie kan niet meer direct voor alle pagina's worden geactiveerd (de machtiging 'all_urls' is verwijderd), maar werkt alleen in de context van het actieve tabblad, wat betekent dat de gebruiker het gebruik van de extensie voor elke website moet bevestigen. In Firefox worden alle verzoeken om toegang tot sitegegevens beschouwd als optioneel, en de uiteindelijke beslissing over het verlenen van toegang wordt genomen door de gebruiker, die selectief kan beslissen welke extensie toegang krijgt tot zijn gegevens op die of gene site.
Voor het beheren van machtigingen is er een knop 'Unified Extensions' toegevoegd aan de interface, waarmee rechtstreeks kan worden beheerd welke websites toegang hebben tot elke extensie - de gebruiker kan toegang verlenen en intrekken voor elke website. Het beheer van machtigingen geldt alleen voor extensies op basis van de derde versie van het manifest; voor extensies op basis van de tweede versie van het manifest vindt er geen gedetailleerd beheer van toegang tot websites plaats.

- Wijzigingen in de afhandeling van Cross-origin verzoeken - volgens het nieuwe manifest zijn dezelfde machtigingsbeperkingen van toepassing op content-scripts als op de hoofdpagina waarin deze scripts zijn ingebed (bijvoorbeeld, als de pagina geen toegang heeft tot de API voor locatiebepaling, dan heeft het extensiescript ook geen toegang). Deze wijziging is volledig geĆÆmplementeerd in Firefox.
- API op basis van Promise. Firefox ondersteunt deze API ook voor de derde versie van het manifest.
- Verbod op het uitvoeren van code die van externe bronnen is geladen servers (dit heeft betrekking op situaties waarin een extensie externe code laadt en uitvoert). In Firefox wordt het laden van externe code geblokkeerd en de ontwikkelaars van Mozilla hebben extra technieken toegevoegd voor het volgen van code-ladingen. Voor content-scripts is er een aparte toegangsbeleid voor content-limieten (CSP, Content Security Policy) geĆÆntroduceerd.
Bron: opennet.ru

