Mozilla ha annunciato l'inizio dei test per l'implementazione della terza versione del manifesto Chrome in Firefox, che definisce le capacità e le risorse disponibili per le estensioni scritte utilizzando l'API WebExtensions. Per testare la terza versione del manifesto nella beta di Firefox 101, è necessario impostare il parametro «extensions.manifestV3.enabled» su true e il parametro «xpinstall.signatures.required» su false nella pagina about:config. Le estensioni possono essere installate tramite l'interfaccia about:debugging. L'attivazione della terza versione del manifesto di default è prevista per la fine dell'anno.
A partire dalla versione 57, Firefox ha completamente adottato l'API WebExtensions per lo sviluppo delle estensioni e ha interrotto il supporto per la tecnologia XUL. La transizione a WebExtensions ha consentito di unificare lo sviluppo delle estensioni con le piattaforme Chrome, Opera, Safari ed Edge, semplificando il porting delle estensioni tra diversi browser web e permettendo un uso completo della modalità multi-processo (le estensioni WebExtensions possono essere eseguite in processi separati, isolati dalle altre parti del browser). Per unificare lo sviluppo delle estensioni con gli altri browser, Firefox garantisce quasi una completa compatibilità con la seconda versione del manifesto di Chrome.
Attualmente, in Chrome è in corso il passaggio alla terza versione del manifesto, mentre il supporto per la seconda versione sarà interrotto a gennaio 2023. Poiché la terza versione del manifesto ha ricevuto critiche e causerà malfunzionamenti per molte estensioni finalizzate al blocco dei contenuti indesiderati e alla sicurezza, Mozilla ha deciso di allontanarsi dalla pratica di garantire la completa compatibilità con il manifesto in Firefox e di implementare alcuni cambiamenti 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.
Nell'implementazione della terza versione del manifesto proposta in Firefox è stato aggiunto un nuovo API dichiarativo per la filtrazione dei contenuti, ma a differenza di Chrome non è stata interrotta la supporto della vecchia modalità di funzionamento bloccante dell'API webRequest. Tra le altre caratteristiche dell'implementazione del nuovo manifesto in Firefox:
- Il manifesto definisce la sostituzione delle pagine di sfondo con una variante dei Service Workers, che operano come processi in background (Background Service Workers). Per garantire la compatibilità, questo requisito sarà implementato in Firefox, ma verrà anche proposto un nuovo meccanismo chiamato Event Pages, che è più familiare per gli sviluppatori web, non richiede una completa riprogettazione delle estensioni e elimina le limitazioni associate all'uso dei Service Workers. Le Event Pages consentiranno di adattare le esistenti estensioni con pagine di sfondo ai requisiti della terza versione del manifesto, mantenendo l'accesso a tutte le funzionalità necessarie per lavorare con il DOM. Nell'implementazione del manifesto attualmente disponibile per il test in Firefox, sono supportate solo le Event Pages, mentre il supporto per la soluzione basata sui Service Workers è previsto per essere aggiunto in seguito. La proposta è stata supportata da Apple, che ha implementato le Event Pages nell'uscita di Safari Technology Preview 136.
- 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.
- 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 già questo API e per la terza versione del manifesto lo collocherà nello spazio dei nomi «chrome.*».
- Divieto di eseguire codice caricato da fonti esterne. server (riferendosi a situazioni in cui l'estensione carica ed esegue codice esterno). In Firefox è già attivata la blocco del codice esterno e gli sviluppatori di Mozilla hanno aggiunto ulteriori tecniche di tracciamento per il caricamento del codice, proposte nella terza versione del manifesto. Per gli script di elaborazione dei contenuti è stata presentata una politica separata di restrizione dell'accesso ai contenuti (CSP, Content Security Policy).
Fonte: opennet.ru
