Il 21 novembre, il catalogo AMO (addons.mozilla.org) inizierà ad accettare e convalidare con una firma digitale le estensioni che utilizzano la terza versione del manifesto di Chrome. Le estensioni indicate potranno essere testate nelle versioni nightly di Firefox. Nelle versioni stabili, il supporto per la terza versione del manifesto verrà introdotto in Firefox 109, previsto per il 17 gennaio 2023. Il supporto per la seconda versione del manifesto sarà mantenuto nel prossimo futuro, ma entro la fine del 2023, dopo aver valutato la dinamica della migrazione delle estensioni alla terza versione del manifesto, sarà considerata la possibilità di terminare il supporto per la seconda versione del manifesto.
Il manifesto di Chrome definisce le capacità e le risorse disponibili per le estensioni scritte utilizzando l'API WebExtensions. A partire dalla versione 57, Firefox ha completamente adottato l'uso delle API WebExtensions per lo sviluppo delle estensioni, interrompendo il supporto per la tecnologia XUL. La transizione verso WebExtensions ha permesso di uniformare lo sviluppo delle estensioni con Chrome, Opera, Safari ed Edge, semplificando il porting delle estensioni tra diversi browser web e consentendo l'utilizzo completo della modalità multi-processo (le estensioni WebExtensions possono essere eseguite in processi separati, isolati dalle altre parti del browser). Per uniformare lo sviluppo delle estensioni con gli altri browser, Firefox garantisce quasi completa compatibilità con la seconda versione del manifesto di Chrome.
Attualmente, in Chrome è in corso la transizione alla terza versione del manifesto, con il supporto per la seconda versione che terminerà a gennaio 2024. L'obiettivo principale delle modifiche apportate alla nuova versione è semplificare la creazione di estensioni sicure e ad alte prestazioni, rendendo più difficile la creazione di estensioni insicure e lente. Poiché la terza versione del manifesto ha suscitato critiche e porterà a malfunzionamenti di molte estensioni per il blocco dei contenuti indesiderati e la sicurezza, Mozilla ha deciso di non garantire la piena compatibilità con il manifesto in Firefox e di implementare alcune modifiche in modo diverso.
Il principale malcontento riguardo alla terza versione del manifesto è legato alla modifica dell'API webRequest in modalità di sola lettura, che permetteva di collegare gestori personalizzati con accesso completo alle richieste di rete e capaci di modificare al volo il traffico. Questa API è utilizzata in uBlock Origin e in molte altre estensioni per bloccare contenuti indesiderati e garantire la sicurezza. Invece dell'API webRequest, la terza versione del manifesto propone un'API declarativeNetRequest limitata nelle sue funzionalità, che fornisce accesso a un motore di filtraggio integrato che gestisce autonomamente le regole di blocco, non permette l'uso di algoritmi di filtraggio personalizzati e non consente di definire regole complesse che si sovrappongano a seconda delle condizioni.
Tra le caratteristiche dell'implementazione del nuovo manifesto in Firefox:
- È stata aggiunta una nuova API dichiarativa per il filtraggio dei contenuti, ma a differenza di Chrome, non è stata interrotta la supporto alla vecchia modalità di blocco dell'API webRequest.
- Il manifesto definisce la sostituzione delle pagine di sfondo con una variante dei Service Workers, che opera come processi in background (Background Service Workers). Per garantire la compatibilità futura, Firefox implementerà il supporto per i Service Workers, ma attualmente è stato proposto un nuovo meccanismo chiamato Event Pages, che è più familiare per gli sviluppatori web, non richiede una completa ristrutturazione delle estensioni e elimina le limitazioni associate all'uso dei Service Workers. Le Event Pages permetteranno di aggiornare le esistenti estensioni con pagine di sfondo per conformarsi ai requisiti della terza versione del manifesto, mantenendo l'accesso a tutte le funzionalità necessarie per lavorare con il DOM.
- Il nuovo modello di richiesta di autorizzazione granulare — l'estensione non potrà attivarsi immediatamente per tutte le pagine (rimossa l'autorizzazione «all_urls»), ma funzionerà solo nel contesto della scheda attiva, cioè l'utente dovrà confermare il funzionamento dell'estensione per ogni sito. In Firefox, tutte le richieste di accesso ai dati del sito saranno considerate opzionali, e la decisione finale sulla concessione dell'accesso sarà presa dall'utente, che potrà decidere selettivamente a quale estensione concedere accesso ai propri dati su un determinato sito.
Per gestire le autorizzazioni, è stato aggiunto un nuovo pulsante «Unified Extensions» nell'interfaccia, che è già possibile testare nelle versioni notturne di Firefox. Il pulsante offre gli strumenti per gestire direttamente a quali siti ha accesso ogni estensione — l'utente può concedere e revocare l'accesso dell'estensione a qualsiasi sito. La gestione delle autorizzazioni si applica solo alle estensioni basate sulla terza versione del manifesto, per le estensioni sulla seconda versione del manifesto non è previsto un controllo granulare sull'accesso ai siti.

- Modifica della gestione delle richieste Cross-origin: in conformità con il nuovo manifesto, le stesse restrizioni di autorizzazione applicate alla pagina principale si estenderanno anche agli script di elaborazione dei contenuti. Ad esempio, se la pagina non ha accesso all'API di definizione della posizione, anche lo script dell'estensione non avrà accesso. Questa modifica è completamente implementata in Firefox.
- API basato su Promise. Firefox supporta questa API e nella terza versione del manifesto la sposterà nello spazio dei nomi «chrome.*».
- Divieto di eseguire codice caricato da fonti esterne. server (riferito ai casi in cui l'estensione carica e esegue codice esterno). In Firefox viene bloccato il codice esterno, e gli sviluppatori di Mozilla hanno aggiunto tecniche di monitoraggio aggiuntive per il caricamento del codice proposte nella terza versione del manifesto. Per gli script di elaborazione dei contenuti è stata presentata una politica separata per le restrizioni di accesso al contenuto (CSP, Content Security Policy).
Fonte: opennet.ru

