Mozilla ha annunciato l'inizio del collaudo dell'implementazione della terza versione del manifesto Chrome su Firefox, che definisce le funzionalità e le risorse disponibili per le estensioni scritte utilizzando l'API WebExtensions. Per collaudare la terza versione del manifesto nella versione 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. Per installare le estensioni, è possibile utilizzare l'interfaccia about:debugging. L'attivazione predefinita della terza versione del manifesto è prevista per la fine dell'anno.
A partire dalla versione 57, Firefox è passato completamente all'uso dell'API WebExtensions per lo sviluppo delle estensioni e ha interrotto il supporto per la tecnologia XUL. Il passaggio a WebExtensions ha consentito di uniformare lo sviluppo delle estensioni con le piattaforme Chrome, Opera, Safari ed Edge, semplificando il porting delle estensioni tra i diversi browser e permettendo di sfruttare appieno la modalità di lavoro 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 offre quasi la completa compatibilità con la seconda versione del manifesto Chrome.
Attualmente, Chrome sta lavorando al passaggio alla terza versione del manifesto, mentre il supporto per la seconda versione sarà interrotto a gennaio 2023. Poiché la terza versione del manifesto è stata oggetto di critiche e causerà problemi a molte estensioni per il blocco dei contenuti indesiderati e la sicurezza, Mozilla ha deciso di discostarsi dalla prassi di garantire la completa compatibilità con il manifesto in Firefox e di implementare alcune modifiche in modo differente.
Il principale malcontento nei confronti della terza versione del manifesto è legato alla transizione dell'API webRequest a una modalità di sola lettura, che consentiva di connettere i propri handler con accesso completo alle richieste di rete e in grado di modificare il traffico in tempo reale. Questa API è utilizzata in uBlock Origin e in molte altre estensioni per il blocco di contenuti indesiderati e per garantire la sicurezza. Al posto dell'API webRequest, nella terza versione del manifesto è stata proposta un'API declarativeNetRequest con funzionalità limitate, che fornisce accesso a un motore integrato per la filtrazione, elaborando autonomamente le regole di blocco, senza consentire l'uso di algoritmi di filtrazione personalizzati e senza permettere di stabilire regole complesse che si sovrappongono in base alle condizioni.
Nell'implementazione della terza versione del manifesto proposta in Firefox è stato aggiunto un nuovo API dichiarativo per il filtraggio dei contenuti, ma a differenza di Chrome non è stata interrotta la vecchia modalità di blocco dell'API webRequest. Tra le altre caratteristiche dell'implementazione del nuovo manifesto in Firefox:
- Nel manifesto è stata definita la sostituzione delle pagine di sfondo con una variante di Service Workers, che funziona come processi in background (Background Service Workers). Per garantire la compatibilità con Firefox, verrà implementato questo requisito, ma verrà anche proposto un nuovo meccanismo chiamato Event Pages, che è più familiare per gli sviluppatori web, non richiede una revisione completa dei componenti aggiuntivi e rimuove le limitazioni associate all'uso dei Service Workers. Le Event Pages permetteranno di adeguare i componenti esistenti con pagine di sfondo ai requisiti della terza versione del manifesto, mantenendo l'accesso a tutte le funzionalità necessarie per lavorare con il DOM. Nella versione di Firefox attualmente disponibile per i test, sono supportate solo le Event Pages, mentre il supporto per la soluzione basata su Service Workers verrà promesso in seguito. La proposta è stata supportata da Apple, che ha integrato le Event Pages nella release Safari Technology Preview 136.
- Il nuovo modello di richiesta di autorizzazione granulare — l'estensione non potrà attivarsi immediatamente per tutte le pagine (rimosso il permesso «all_urls»), ma funzionerà solo nel contesto della scheda attiva, cioè l'utente dovrà confermare l'uso dell'estensione per ogni sito. In Firefox, tutte le richieste di accesso ai dati del sito saranno considerate facoltative e la decisione finale sulla concessione dell'accesso sarà presa dall'utente, il quale potrà decidere selettivamente a quale estensione fornire accesso ai propri dati su un determinato sito.
- Modifica nel trattamento delle richieste Cross-origin: secondo il nuovo manifesto, le stesse restrizioni di autorizzazione si applicheranno agli script di elaborazione del contenuto come per la pagina principale in cui questi script vengono incorporati (ad esempio, se la pagina non ha accesso all'API di geolocalizzazione, anche lo script del componente aggiuntivo non otterrà tale accesso). Questa modifica è completamente implementata in Firefox.
- API basato su Promise. Firefox supporta già questa API e per la terza versione del manifesto la sposterà nello spazio dei nomi «chrome.*».
- Divieto di eseguire codice caricato da fonti esterne server (riferito a situazioni in cui un componente aggiuntivo carica ed esegue codice esterno). In Firefox è già in atto il blocco del codice esterno e gli sviluppatori di Mozilla hanno aggiunto ulteriori tecniche per monitorare i caricamenti di codice, come suggerito 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
