Tvrtka Mozilla objavila je početak testiranja implementacije treće verzije Chrome manifest (mnogi resursi i mogućnosti dostupni za dodatke razvijene pomoću WebExtensions API-a) u Firefoxu. Za testiranje treće verzije manifesta u beta verziji Firefoxa 101 potrebno je u postavkama o:config postaviti opciju „extensions.manifestV3.enabled“ na true, a opciju „xpinstall.signatures.required“ na false. Dodatke možete instalirati putem sučelja o:debugging. Postavljanje treće verzije manifesta kao zadane opcije planirano je za kraj godine.
Počevši od verzije 57, Firefox je u potpunosti prešao na korištenje API-ja WebExtensions za razvoj dodataka i prestao je podržavati XUL tehnologiju. Prelazak na WebExtensions omogućio je unifikaciju razvoja dodataka s platformama Chrome, Opera, Safari i Edge, pojednostavio je portiranje dodataka između različitih web preglednika i omogućio potpuno korištenje višehabilnog načina rada (WebExtensions dodaci mogu se pokretati u odvojenim procesima, izolirano od ostalih dijelova preglednika). U cilju unifikacije razvoja dodataka s ostalim preglednicima, Firefox pruža gotovo potpunu kompatibilnost s drugom verzijom Chrome manifesta.
Trenutno se u Chromeu radi na prelasku na treću verziju manifesta, a podrška za drugu verziju bit će obustavljena u siječnju 2023. godine. S obzirom na to da je treća verzija manifesta postala predmet kritike i dovest će do neispravnosti mnogih dodataka za blokiranje neželjenog sadržaja i osiguranje sigurnosti, tvrtka Mozilla odlučila je odstupiti od prakse potpune kompatibilnosti s manifestom u Firefoxu i implementirati neka promjene drugačije.
Glavna pritužba na treću verziju manifestacije odnosi se na prelazak API-ja webRequest u način rada samo za čitanje, koji je omogućavao povezivanje vlastitih rukovača, koji su imali potpun pristup mrežnim zahtjevima i mogli su dinamički modificirati promet. Spomenuti API koristi se u uBlock Originu i mnogim drugim dodacima za blokiranje nepoželjnih sadržaja i osiguranje sigurnosti. Umjesto API-ja webRequest u trećoj verziji manifestacije predložen je ograničen API declarativeNetRequest, koji pruža pristup ugrađenom mehanizmu za filtriranje, koji samostalno obrađuje pravila blokiranja, ne dopušta upotrebu vlastitih algoritama filtriranja i ne omogućava postavljanje složenih pravila koja se preklapaju ovisno o uvjetima.
U predloženoj implementaciji treće verzije manifesta u Firefoxu dodan je novi deklarativni API za filtriranje sadržaja, ali za razliku od Chromea, nisu prestali podržavati stari način rada blokiranja API-ja webRequest. Među ostalim značajkama implementacije novog manifesta u Firefoxu:
- U manifestu je definirana zamjena pozadinskih stranica s varijantom Service Workers koja radi kao pozadinski proces (Background Service Workers). Kako bi se osigurala kompatibilnost u Firefoxu, ovo će zahtijevati dodatnu implementaciju, ali će također biti ponuđen novi mehanizam Event Pages, koji je bliži web programerima, ne zahtijeva potpunu reviziju dodataka i uklanja ograničenja vezana uz upotrebu Service Workersa. Event Pages će omogućiti prilagodbu postojećih dodataka s pozadinskim stranicama zahtjevima treće verzije manifesta, istovremeno zadržavajući pristup svim funkcionalnostima potrebnim za rad s DOM-om. U trenutno dostupnoj testnoj verziji manifesta za Firefox podržane su samo Event Pages, dok se podrška za rješenja temeljena na Service Workers očekuje kasnije. O prijedlogu su se izjasnili i u Appleu, koji je implementirao Event Pages u izdanju Safari Technology Preview 136.
- Nova granulirana modela zahtjeva za ovlastima — dodatak se neće moći aktivirati odmah za sve stranice (uklonjena je ovlast „all_urls”), već će raditi samo u kontekstu aktivne kartice, tj. korisniku će biti potrebno potvrditi rad dodatka za svaku stranicu. U Firefoxu će svi zahtjevi za pristup podacima stranice biti tretirani kao neobavezni, a konačnu odluku o davanju pristupa donijet će korisnik, koji će moći selektivno odlučiti kojem dodatku omogućiti pristup svojim podacima na toj ili onoj stranici.
- Promjene u obradi Cross-origin zahtjeva — prema novom manifestu, na skripte za obradu sadržaja primjenjivat će se ista ograničenja ovlasti kao i za glavni dokument u koji su te skripte ugrađene (na primjer, ako stranica nema pristup API-u za određivanje lokacije, tada ni skripta ekstenzije neće imati taj pristup). Ova promjena je u potpunosti implementirana u Firefoxu.
- API temeljen na Promise. Firefox već podržava ovaj API i za treću verziju manifesta će ga prenijeti u prostor imena „chrome.*“.
- Zabrana izvršavanja koda učitanog s vanjskih poslužitelja (riječ je o situacijama kada dodatak učitava i izvršava vanjski kod). U Firefoxu se već primjenjuje blokiranje vanjskog koda, a programeri Mozille su dodali dodatne tehnike praćenja učitavanja koda koje su predložene u trećoj verziji manifesta. Za skripte za obradu sadržaja predstavljena je posebna politika ograničenja pristupa sadržaju (CSP, Content Security Policy).
Izvor: opennet.ru
