Op 21 november begint de AMO-catalogus (addons.mozilla.org) met het accepteren en digitaal ondertekenen van add-ons die de derde versie van het Chrome-manifest gebruiken. Deze add-ons zullen beschikbaar zijn voor tests in Firefox nightly builds. In stabiele releases wordt ondersteuning voor de derde versie van het manifest ingeschakeld in Firefox 109, gepland voor 17 januari 2023. Ondersteuning voor de tweede versie van het manifest blijft voorlopig behouden, maar eind 2023, na beoordeling van de dynamiek van de overgang van add-ons naar de derde versie van het manifest, zal de kwestie van het afschaffen van de ondersteuning voor de tweede versie van het manifest worden overwogen.
Het Chrome-manifest definieert de mogelijkheden en bronnen die beschikbaar zijn voor extensies die zijn geschreven met behulp van de WebExtensions API. Vanaf versie 57 schakelde Firefox volledig over op het gebruik van de WebExtensions API voor het ontwikkelen van add-ons en stopte met de ondersteuning van XUL-technologie. De overgang naar WebExtensions maakte het mogelijk om de ontwikkeling van add-ons te verenigen met de Chrome-, Opera-, Safari- en Edge-platforms, vereenvoudigde het porten van add-ons tussen verschillende webbrowsers en maakte het mogelijk om de multi-procesmodus van werking (WebExtensions-add-ons kunnen worden uitgevoerd in afzonderlijke processen, geïsoleerd van de rest van de browser). Om de ontwikkeling van add-ons met andere browsers te verenigen, biedt Firefox vrijwel volledige compatibiliteit met de tweede versie van het Chrome-manifest.
Chrome werkt momenteel aan de migratie naar versie 2024 van het manifest. De ondersteuning voor versie XNUMX eindigt in januari XNUMX. Het belangrijkste doel van de wijzigingen in de nieuwe versie is om het gemakkelijker te maken om veilige en krachtige add-ons te maken, en moeilijker om onveilige en trage add-ons te maken. Omdat versie XNUMX van het manifest onderwerp van kritiek is geweest en veel add-ons voor inhoudsblokkering en beveiliging zal verbreken, heeft Mozilla besloten af te stappen van volledige compatibiliteit met het manifest in Firefox en enkele wijzigingen anders door te voeren.
De belangrijkste ontevredenheid over de derde versie van het manifest houdt verband met de vertaling naar de alleen-lezen-modus van de webRequest API, die het mogelijk maakte om uw eigen handlers aan te sluiten die volledige toegang hebben tot netwerkverzoeken en verkeer on-the-fly kunnen wijzigen. Deze API wordt gebruikt in uBlock Origin en vele andere add-ons om ongepaste inhoud te blokkeren en beveiliging te bieden. In plaats van de webRequest API biedt de derde versie van het manifest een declarativeNetRequest API met beperkte mogelijkheden, die toegang biedt tot een ingebouwde filterengine die onafhankelijk blokkeerregels verwerkt, het gebruik van zijn eigen filteralgoritmen niet toestaat en geen maken het mogelijk om complexe regels in te stellen die elkaar overlappen, afhankelijk van de omstandigheden.
Enkele kenmerken van de nieuwe manifestimplementatie in Firefox:
- Er is een nieuwe declaratieve contentfilter-API toegevoegd, maar in tegenstelling tot Chrome is de ondersteuning voor de oude blokkeermodus van de webRequest API niet stopgezet.
- Het manifest definieert een vervanging voor achtergrondpagina's met een variant van Service Workers die als achtergrondprocessen draaien (Background Service Workers). Voor toekomstige compatibiliteit zal Firefox ondersteuning voor Service Workers implementeren, maar voorlopig is in plaats daarvan een nieuw mechanisme genaamd Event Pages voorgesteld. Dit mechanisme is bekender bij webontwikkelaars, vereist geen volledige herschrijving van add-ons en verwijdert de beperkingen die gepaard gaan met het gebruik van Service Workers. Event Pages zorgt ervoor dat bestaande add-ons met achtergrondpagina's kunnen voldoen aan de vereisten van de derde versie van het manifest, terwijl toegang tot alle functies die nodig zijn om met de DOM te werken, behouden blijft.
- Het nieuwe gedetailleerde model voor toestemmingsverzoeken - de add-on kan niet voor alle pagina's tegelijk worden geactiveerd (de toestemming "all_urls" is verwijderd), maar werkt alleen in de context van het actieve tabblad, d.w.z. de gebruiker moet bevestigen dat de add-on voor elke site werkt. In Firefox worden alle verzoeken om toegang tot sitegegevens als optioneel beschouwd en wordt de uiteindelijke beslissing over het verlenen van toegang genomen door de gebruiker, die selectief kan beslissen welke add-on hij toegang verleent tot zijn gegevens op een bepaalde site.
Er is een nieuwe knop 'Unified Extensions' toegevoegd aan de interface om rechten te beheren. Deze knop kan al worden getest in Firefox nightly builds. De knop biedt de mogelijkheid om direct te beheren tot welke sites elke extensie toegang heeft. De gebruiker kan de toegang van een extensie tot elke site verlenen of intrekken. Rechtenbeheer is alleen van toepassing op extensies op basis van de derde versie van het manifest; gedetailleerd sitetoegangsbeheer wordt niet uitgevoerd voor extensies op basis van de tweede versie van het manifest.

- Wijziging in de afhandeling van Cross-origin-verzoeken - in overeenstemming met het nieuwe manifest zijn scripts voor inhoudsverwerking onderworpen aan dezelfde toestemmingsbeperkingen als voor de hoofdpagina waarin deze scripts zijn ingesloten (als de pagina bijvoorbeeld geen toegang heeft tot de location API, dan krijgen de script-add-ons deze toegang ook niet). Deze wijziging is volledig geïmplementeerd in Firefox.
- Promise-gebaseerde API. Firefox ondersteunt deze API en zal deze voor de derde versie van het manifest verplaatsen naar de "chrome.*"-naamruimte.
- Voorkom de uitvoering van code die is gedownload van externe bronnen. servers (Dit verwijst naar situaties waarin een add-on externe code laadt en uitvoert.) Firefox gebruikt blokkering van externe code en Mozilla-ontwikkelaars hebben extra technieken toegevoegd voor het volgen van code-downloads, zoals voorgesteld in de derde versie van het manifest. Er wordt een apart Content Security Policy (CSP) geïntroduceerd voor scripts die content verwerken.
Bron: opennet.ru

