Compania Mozilla a anunțat începutul testării implementării versiunii a treia a manifestului Chrome în Firefox, care definește capacitățile și resursele disponibile pentru extensiile scrise folosind API-ul WebExtensions. Pentru a testa versiunea a treia a manifestului în versiunea beta a Firefox 101, trebuie să setați parametrul „extensions.manifestV3.enabled” la true și parametrul „xpinstall.signatures.required” la false în pagina about:config. Extensiile pot fi instalate utilizând interfața about:debugging. Activarea versiunii a treia a manifestului este planificată pentru sfârșitul anului.
Începând cu versiunea 57, Firefox a trecut complet la utilizarea API-ului WebExtensions pentru dezvoltarea extensiilor și a oprit suportul pentru tehnologia XUL. Trecerea la WebExtensions a facilitat unificarea dezvoltării extensiilor cu platformele Chrome, Opera, Safari și Edge, a simplificat portarea extensiilor între diferitele browsere web și a permis utilizarea completă a modului multiprocesare (extensiile WebExtensions pot rula în procese separate, izolate de celelalte părți ale browserului). Pentru a unifica dezvoltarea extensiilor cu celelalte browsere, Firefox asigură o compatibilitate aproape totală cu a doua versiune a manifestului Chrome.
În prezent, în Chrome se lucrează la trecerea la versiunea a treia a manifestului, iar suportul pentru a doua versiune va fi oprit în ianuarie 2023. Deoarece versiunea a treia a manifestului a fost criticată și va conduce la deteriorarea funcționării multor extensii pentru blocarea conținutului nedorit și asigurarea securității, compania Mozilla a decis să se abțină de la practica de a asigura compatibilitate totală cu manifestul în Firefox și să implementeze diferit unele modificări.
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.
În implementarea versiunii a treia a manifestului propusă în Firefox a fost adăugat un nou API declarativ de filtrare a conținutului, însă, spre deosebire de Chrome, nu s-a renunțat la suportul pentru vechiul mod de funcționare blocant al API-ului webRequest. Printre alte caracteristici ale implementării noului manifest în Firefox se numără:
- Manifestul definește înlocuirea paginilor de fundal cu varianta Service Workers, care funcționează ca procese de fundal (Background Service Workers). Pentru a asigura compatibilitatea în Firefox, această cerință va fi implementată, iar un nou mecanism Event Pages va fi propus, care este mai familiar pentru dezvoltatorii web, nu necesită o rescriere 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 versiunii a treia a manifestului, păstrând accesul la toate capacitățile necesare pentru a lucra cu DOM. În versiunea disponibilă pentru testare în Firefox, momentan sunt acceptate doar Event Pages, iar suportul pentru soluția bazată pe Service Workers este promis pentru o adăugare ulterioară. Propunerea a fost susținută de compania Apple și a implementat Event Pages în lansarea Safari Technology Preview 136.
- 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.
- 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 Promise. Firefox susține deja acest API și pentru versiunea a treia a manifestului, îl va muta în spațiul de nume „chrome.*”.
- Interzicerea executării codului încărcat din surse externe servere (vorbind despre situațiile în care extensia încarcă și execută cod extern). Firefox utilizează deja blocarea codului extern, iar dezvoltatorii Mozilla au adăugat tehnici suplimentare de urmărire a descărcărilor de cod, propuse în versiunea a treia a manifestului. Pentru scripturile de procesare a conținutului a fost introdusă o politică separată de restricție a accesului la conținut (CSP, Content Security Policy).
Sursa: opennet.ro
