La società Mozilla ha pubblicato un piano per l'implementazione in Firefox della terza versione del manifesto di Chrome, che definisce le funzionalità e le risorse disponibili per le estensioni. La terza versione del manifesto è stata oggetto di critiche a causa del malfunzionamento di molte estensioni per il blocco dei contenuti indesiderati e la sicurezza.
In Firefox si prevede di implementare quasi tutte le funzionalità e le limitazioni del nuovo manifesto, inclusa l'API dichiarativa per il filtraggio dei contenuti (declarativeNetRequest), ma a differenza di Chrome, in Firefox non verrà interrotta la supporto della vecchia modalità di blocco dell'API webRequest, almeno finché la nuova API non soddisferà completamente le esigenze degli sviluppatori di estensioni che utilizzano l'API webRequest. Questo approccio garantirà la compatibilità con le estensioni di Chrome senza compromettere la compatibilità con le estensioni legate all'API webRequest.
Ricordiamo che la principale insoddisfazione nei confronti del nuovo manifesto è legata al passaggio alla modalità di sola lettura dell'API webRequest, che consentiva di collegare gestori personalizzati con accesso completo alle richieste di rete e in grado di modificare dinamicamente il traffico. Questa API è utilizzata in uBlock Origin e in molte altre estensioni per il blocco dei contenuti indesiderati e la sicurezza. Al posto dell'API webRequest è stata proposta un'API declarativeNetRequest limitata nelle sue funzionalità, che fornisce accesso a un motore interno per il filtraggio, che gestisce autonomamente le regole di blocco, non consente l'utilizzo di algoritmi di filtraggio personalizzati e non permette di definire regole complesse che si sovrappongono in base alle condizioni.
In Firefox, il supporto per la terza versione del manifesto di Chrome è previsto per i test alla fine del 2021, mentre l'implementazione del nuovo manifesto è programmata per l'inizio del 2022. Tra le caratteristiche dell'implementazione del nuovo manifesto in Firefox si segnala:
- Fornitura dell'API declarativeNetRequest, ma con mantenimento della possibilità di utilizzare la vecchia API webRequest.
- Modifica del trattamento delle richieste Cross-origin — secondo il nuovo manifesto, per gli script di elaborazione dei contenuti si applicheranno le stesse restrizioni delle autorizzazioni della pagina principale in cui questi script vengono incorporati (ad esempio, se la pagina non ha accesso all'API di geolocalizzazione, lo stesso vale per lo script di estensione). Alcune modifiche relative alle restrizioni delle richieste cross-origin sono già disponibili per i test nelle build notturne di Firefox (in sviluppo come parte del progetto Fission, attivabile in about:preferences#experimental) e si prevede un'implementazione generale nel terzo trimestre del 2021.
- Le pagine in background saranno sostituite dai Service worker, che funzioneranno come processi in background. Questa modifica non è ancora pronta per iniziare i test.
- API basate su Promise. Firefox supporta già questo tipo di API nello spazio dei nomi «browser.*» e per la terza versione del manifesto lo trasferirà nello spazio dei nomi «chrome.*».
- Nuovo modello granulare di richiesta delle autorizzazioni — l'estensione non potrà attivarsi contemporaneamente per tutte le pagine (eliminata l'autorizzazione «all_urls»), ma funzionerà solo nel contesto della scheda attiva, cioè l'utente dovrà confermare il funzionamento dell'estensione per ogni sito. Mozilla sta lavorando per rafforzare il controllo degli accessi, ma intende fornire agli utenti la possibilità di prendere decisioni autonome, consentendo all'estensione di lavorare con diverse schede.
- Divieto di eseguire codice caricato da fonti esterne server (si riferisce a situazioni in cui l'estensione carica ed esegue codice esterno). Firefox già applica un blocco del codice esterno e gli sviluppatori di Mozilla sono pronti ad aggiungere ulteriori tecniche di monitoraggio dei caricamenti di codice proposte nella terza versione del manifesto. Per gli script di elaborazione dei contenuti sarà introdotta una politica di restrizione separata per l'accesso ai contenuti (CSP, Content Security Policy), e le API esistenti userScripts e contentScripts saranno rivalutate per supportare le estensioni basate su Service worker.
Fonte: opennet.ru
