Pe 21 noiembrie, catalogul AMO (addons.mozilla.org) va începe să accepte și să verifice semnătura digitală a extensiilor care utilizează a treia versiune a manifestului Chrome. Aceste extensii vor putea fi testate în versiunile nightly ale Firefox. În versiunile stabile, suportul pentru a treia versiune a manifestului va fi implementat în Firefox 109, planificat pentru 17 ianuarie 2023. Suportul pentru a doua versiune a manifestului va rămâne disponibil în viitorul previzibil, dar la sfârșitul anului 2023, după evaluarea dinamicii tranziției extensiilor la a treia versiune a manifestului, se va lua în considerare posibilitatea de a muta suportul pentru a doua versiune a manifestului în categoria învechit.
Manifestul Chrome definește capabilitățile și resursele disponibile pentru extensiile scrise folosind API WebExtensions. Începând cu versiunea 57, Firefox a trecut complet la utilizarea API WebExtensions pentru dezvoltarea extensiilor și a oprit suportul pentru tehnologia XUL. Trecerea la WebExtensions a permis unificarea dezvoltării extensiilor cu platformele Chrome, Opera, Safari și Edge, a simplificat portarea extensiilor între diferite browsere web și a permis utilizarea completă a modului multiproces (extensiile WebExtensions pot fi executate în procese separate, izolate de celelalte părți ale browserului). Pentru a unifica dezvoltarea extensiilor cu celelalte browsere, Firefox asigură o compatibilitate aproape completă cu versiunea a doua a manifestului Chrome.
În prezent, în Chrome se desfășoară lucrări pentru tranziția la a treia versiune a manifestului, iar suportul pentru a doua versiune va fi întrerupt în ianuarie 2024. Principala țintă a modificărilor incluse în noua versiune este simplificarea creării de extensii sigure și performante, complicând în același timp capacitatea de a crea extensii nesigure și lente. Deoarece a treia versiune a manifestului a fost subiecă de critici și va conduce la nefuncționarea multor extensii pentru blocarea conținutului nedorit și asigurarea securității, compania Mozilla a decis să se abată de la asigurarea unei compatibilități totale cu manifestul în Firefox și să implementeze unele modificări într-un mod diferit.
Principala nemulțumire față de a treia versiune a manifestului se leagă de tranziția API-ului webRequest în modul de doar citire, care permitea conectarea de gestionatori proprii, ce aveau acces complet la cererile de rețea și puteau modifica traficul în timp real. Acest API este utilizat în uBlock Origin și în multe alte extensii pentru blocarea conținutului nedorit și asigurarea securității. În locul API-ului webRequest, a treia versiune a manifestului propune un API declarativNetRequest, limitat în capacitățile sale, care oferă acces la un motor intern de filtrare, gestionând singur regulile de blocare, fără a permite utilizarea propriilor algoritmi de filtrare și fără a permite definirea de reguli complexe care se suprapun în funcție de condiții.
Printre trăsăturile implementării noului manifest în Firefox:
- A fost adăugat un nou API declarativ de filtrare a conținutului, dar, spre deosebire de Chrome, nu a fost încheiat suportul pentru vechiul mod de funcționare a API-ului webRequest.
- Manifestul definește înlocuirea paginilor de fundal cu o variantă Service Workers, care funcționează ca procese de fundal (Background Service Workers). Pentru a asigura compatibilitatea în viitor, Firefox va implementa suport pentru Service Workers, dar în prezent este propus un nou mecanism Event Pages, care este mai familiar pentru dezvoltatorii web, nu necesită refacerea completă a extensiilor și elimină restricțiile legate de utilizarea Service Workers. Event Pages va permite adaptarea extensiilor existente cu pagini de fundal la cerințele celei de-a treia versiuni a manifestului, menținând în același timp accesul la toate funcționalitățile necesare pentru lucru cu DOM.
- Noua modelare granulară a solicitărilor de permisiune — extensia nu va putea fi activată imediat pentru toate paginile (privilegiul „all_urls” a fost eliminat), ci va funcționa doar în contextul filialei active, adică utilizatorul va trebui să confirme utilizarea extensiei pentru fiecare site. În Firefox, toate solicitările de acces la datele site-ului vor fi considerate opționale, iar decizia finală de a oferi acces va fi luată de utilizator, care va putea decide selectiv cui extensie să acorde acces la datele sale pe acel sau acel site.
Pentru gestionarea permisiunilor, în interfață a fost adăugată un nou buton „Unified Extensions”, care poate fi deja testat în build-urile nocturne Firefox. Butonul oferă mijloace pentru gestionarea directă a site-urilor la care fiecare extensie are acces — utilizatorul poate acorda și revoca accesul extensiei la orice site. Gestionarea permisiunilor se aplică doar extensiilor bazate pe a treia versiune a manifestului, pentru extensiile pe a doua versiune a manifestului nu se realizează un management granular al accesului la site-uri.

- Modificarea gestionării cererilor Cross-origin - conform noului manifest, scripturile de procesare a conținutului vor avea aceleași restricții de permisiune ca pagina principală în care aceste scripturi sunt injectate (de exemplu, dacă pagina nu are acces la API-ul de determinare a locației, atunci nici scriptul extensiei nu va obține acest acces). Această modificare este complet implementată în Firefox.
- API bazat pe Promises. Firefox suportă acest API și pentru a treia versiune a manifestului îl va muta în spațiul de nume „chrome.*”.
- Interzicerea executării codului încărcat din surse externe servere (se referă la situații când extensia încarcă și execută cod extern). În Firefox se aplică blocarea codului extern și dezvoltatorii Mozilla au adăugat tehnici suplimentare de urmărire a descărcărilor de cod propuse în cea de-a treia versiune a manifestului. Pentru scripturile de procesare a conținutului a fost prezentată o politică separată de restricționare a accesului la conținut (CSP, Content Security Policy).
Sursa: opennet.ro

