Mozilla hat mit dem Testen der Implementierung der dritten Version des Chrome-Manifests in Firefox begonnen, das die Funktionen und Ressourcen definiert, die für mit der WebExtensions-API entwickelte Erweiterungen verfügbar sind. Um die dritte Version des Manifests in der Beta-Version von Firefox 101 zu testen, sollte die Einstellung «extensions.manifestV3.enabled» auf true und «xpinstall.signatures.required» auf false gesetzt werden. Zum Installieren von Erweiterungen kann das Interface about:debugging verwendet werden. Die Standardaktivierung der dritten Version des Manifests ist für Ende des Jahres geplant.
Mit der Version 57 ist Firefox vollständig auf die Nutzung der WebExtensions-API für die Entwicklung von Erweiterungen umgestiegen und hat die Unterstützung für die XUL-Technologie eingestellt. Der Wechsel zu WebExtensions hat die Entwicklung von Erweiterungen mit den Plattformen Chrome, Opera, Safari und Edge vereinheitlicht, das Portieren von Erweiterungen zwischen verschiedenen Webbrowsern vereinfacht und die Möglichkeit geschaffen, den Mehrprozessbetrieb vollständig zu nutzen (WebExtensions-Erweiterungen können in separaten Prozessen ausgeführt werden, isoliert von anderen Teilen des Browsers). Um die Entwicklung von Erweiterungen mit anderen Browsern zu vereinheitlichen, bietet Firefox nahezu vollständige Kompatibilität mit der zweiten Version des Chrome-Manifests.
Derzeit arbeitet Chrome an der Umstellung auf die dritte Version des Manifests, während die Unterstützung der zweiten Version im Januar 2023 eingestellt wird. Da die dritte Version des Manifests in der Kritik steht und die Funktionalität vieler Erweiterungen zum Blockieren unerwünschter Inhalte und zur Gewährleistung der Sicherheit beeinträchtigen könnte, hat Mozilla beschlossen, von der Praxis der vollständigen Kompatibilität mit dem Manifest in Firefox abzurücken und einige Änderungen anders umzusetzen.
Die Hauptbeschwerde über die dritte Version des Manifests betrifft die Umstellung des API webRequest auf den Nur-Lese-Modus, der es ermöglichte, eigene Handler zu integrieren, die vollen Zugriff auf Netzwerk-Anfragen hatten und den Datenverkehr in Echtzeit modifizieren konnten. Dieses API wird in uBlock Origin und vielen anderen Erweiterungen verwendet, um unerwünschte Inhalte zu blockieren und die Sicherheit zu gewährleisten. Anstelle des API webRequest wurde in der dritten Version des Manifests ein eingeschränktes API namens declarativeNetRequest vorgeschlagen, das Zugriff auf eine interne Filter-Engine gewährt, die die Blockierungsregeln selbständig verarbeitet, keine eigenen Filteralgorithmen zulässt und keine komplexen Regeln unterstützt, die sich je nach Bedingungen überschneiden.
In der von Firefox implementierten dritten Version des Manifests wurde eine neue deklarative API zur Inhaltsfilterung hinzugefügt. Im Gegensatz zu Chrome wird jedoch die Unterstützung des alten blockierenden Modus der API webRequest nicht eingestellt. Zu den weiteren Besonderheiten der neuen Manifest-Implementierung in Firefox gehören:
- Im Manifest wird die Ersetzung von Hintergrundseiten durch eine Variante der Service Workers definiert, die als Hintergrundprozesse (Background Service Workers) funktionieren. Um die Kompatibilität sicherzustellen, wird Firefox diese Anforderung umsetzen, zudem wird ein neuer Mechanismus für Event Pages vorgeschlagen, der für Web-Entwickler vertrauter ist, keine vollständige Überarbeitung der Erweiterungen erfordert und Einschränkungen im Zusammenhang mit der Verwendung von Service Workers beseitigt. Event Pages ermöglicht es, bestehende Erweiterungen mit Hintergrundseiten an die Anforderungen der dritten Manifestversion anzupassen, während der Zugang zu sämtlichen notwendigen Funktionen für die Arbeit mit dem DOM erhalten bleibt. In der testbaren Implementierung des Manifests in Firefox werden derzeit nur Event Pages unterstützt; die Unterstützung einer Lösung auf Basis von Service Workers wird zu einem späteren Zeitpunkt versprochen. Dieses Angebot wurde von Apple unterstützt und Event Pages wurden in der Safari Technology Preview 136 implementiert.
- Das neue granulare Berechtigungsanfragenmodell – Erweiterungen können nicht mehr sofort für alle Seiten aktiviert werden (die Berechtigung „all_urls“ wurde entfernt) und funktionieren nur im Kontext des aktiven Tabs. Das bedeutet, der Nutzer muss die Aktivierung der Erweiterung für jede Website bestätigen. In Firefox werden alle Anfragen auf den Zugriff auf die Daten einer Website als optional betrachtet, und die endgültige Entscheidung über den Zugriff trifft der Nutzer, der selektiv entscheiden kann, welcher Erweiterung er den Zugriff auf seine Daten auf dieser oder jener Website gewähren möchte.
- Änderung der Verarbeitung von Cross-Origin-Anfragen – gemäß dem neuen Manifest unterliegen Skripte zur Verarbeitung von Inhalten denselben Berechtigungsbeschränkungen wie die Hauptseite, in die diese Skripte integriert werden (zum Beispiel: Wenn die Seite keinen Zugriff auf die API zur Geolokalisierung hat, erhält das Erweiterungsskript ebenfalls keinen Zugriff). Diese Änderung ist vollständig in Firefox implementiert.
- API basierend auf Promises. Firefox unterstützt bereits dieses API und wird es in der dritten Version des Manifests in den Namensraum „chrome.*“ überführen.
- Verbot der Ausführung von Code, der von externen Quellen geladen wird Server (bezogen auf Situationen, in denen ein Add-on externen Code lädt und ausführt). In Firefox ist bereits die Blockierung externen Codes aktiv, und die Entwickler von Mozilla haben zusätzliche Techniken zur Verfolgung von Code-Ladevorgängen, die in der dritten Version des Manifests vorgeschlagen werden, hinzugefügt. Für Content-Handling-Skripte gibt es eine spezielle Richtlinie für den Zugriff auf Inhalte (CSP, Content Security Policy).
Quelle: opennet.ru
