Il 21 novembre, il catalogo AMO (addons.mozilla.org) inizierà ad accettare e convalidare le firme digitali delle estensioni che utilizzano la terza versione del manifesto di Chrome. Queste estensioni potranno essere testate nelle versioni notturne di Firefox. Nelle versioni stabili, l'attivazione del supporto per la terza versione del manifesto avverrà in Firefox 109, previsto per il 17 gennaio 2023. Il supporto per la seconda versione del manifesto sarà mantenuto nel prossimo futuro, ma alla fine del 2023, dopo aver valutato la transizione delle estensioni alla terza versione del manifesto, sarà esaminata la possibilità di declassare il supporto per la seconda versione a obsoleto.
Il manifesto Chrome definisce le funzionalità e le risorse disponibili per le estensioni scritte utilizzando le API WebExtensions. A partire dalla versione 57, Firefox ha completamente adottato l'uso delle API WebExtensions per lo sviluppo delle estensioni e ha interrotto il supporto per la tecnologia XUL. La transizione a WebExtensions ha permesso di uniformare lo sviluppo delle estensioni su piattaforme Chrome, Opera, Safari ed Edge, semplificando il porting delle estensioni tra diversi browser web e consentendo un uso 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 altri browser, in Firefox è garantita una quasi completa compatibilità con la seconda versione del manifesto Chrome.
Attualmente, Chrome sta lavorando alla transizione alla terza versione del manifesto, mentre il supporto per la seconda versione verrà interrotto a gennaio 2024. L'obiettivo principale delle modifiche apportate nella 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 è stata oggetto di critiche e causerà la disfunzione di molte estensioni per il blocco dei contenuti indesiderati e per garantire la sicurezza, Mozilla ha deciso di non garantire pienamente la compatibilità con il manifesto in Firefox e di implementare alcune modifiche in modo diverso.
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.
Tra le caratteristiche dell'implementazione del nuovo manifesto in Firefox:
- È stato aggiunto un nuovo API dichiarativo per il filtraggio dei contenuti, ma a differenza di Chrome, non è stata interrotta la supporto alla modalità di blocco dell'API webRequest.
- Nel manifesto è definita la sostituzione delle pagine di sfondo con la variante Service Workers, che funziona come processi in background (Background Service Workers). Per garantire la compatibilità futura, Firefox supporterà 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. Event Pages consentirà di adattare le estensioni 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.
- 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.
Per gestire le autorizzazioni, è stato aggiunto all'interfaccia un nuovo pulsante "Unified Extensions", che può già essere testato nelle versioni notturne di Firefox. Questo pulsante fornisce 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 basate sulla seconda versione non è disponibile una gestione granulare dell'accesso ai siti.

- 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 questo API e per la terza versione del manifesto lo trasferirà nello spazio dei nomi "chrome.*".
- Divieto di eseguire codice caricato da fonti esterne server (si parla di situazioni in cui l'estensione carica ed esegue codice esterno). In Firefox è prevista la bloccatura del codice esterno e gli sviluppatori di Mozilla hanno aggiunto tecniche aggiuntive di tracciamento dei download di codice proposte nella terza versione del manifesto. Per gli script di elaborazione dei contenuti è stata presentata una politica separata per limitare l'accesso ai contenuti (CSP, Content Security Policy).
Fonte: opennet.ru

