21 лістапада каталог AMO (addons.mozilla.org) пачне прымаць і завяраць лічбавым подпісам дапаўненні, якія выкарыстоўваюць трэцюю версію маніфесту Chrome. Паказаныя дадаткі можна будзе пратэставаць у начных зборках Firefox. У стабільных выпусках уключэнне падтрымкі трэцяй версіі маніфеста будзе праведзена ў Firefox 109, намечаным на 17 студзеня 2023 года. Падтрымка другой версіі маніфеста ў агляднай будучыні будзе захавана, але ў канцы 2023 года, пасля ацэнкі дынамікі пераводу дапаўненняў на трэцюю версію маніфеста, будзе разгледжана пытанне аб магчымасці пераводу падтрымкі другой версіі маніфеста ў разрад састарэлых.
Маніфест Chrome вызначае магчымасці і рэсурсы, даступныя для дадаткаў, напісаных з выкарыстаннем API WebExtensions. Пачынальна з версіі 57 Firefox цалкам перайшоў на выкарыстанне API WebExtensions для распрацоўкі дадаткаў і спыніў падтрымку тэхналогіі XUL. Пераход на WebExtensions дазволіў уніфікаваць распрацоўку дадаткаў з платформамі Chrome, Opera, Safari і Edge, спрасціў партаванне дадаткаў паміж рознымі web-браўзэрамі і даў магчымасць паўнавартасна выкарыстоўваць шматпрацэсны рэжым працы (дадаткі WebExtensions могуць выконвацца ў асобных працэсах, ізалявана ад астатніх частак браўзэра). Для ўніфікацыі распрацоўкі дадаткаў з астатнімі браўзэрамі ў Firefox забяспечваецца амаль поўная сумяшчальнасць са другой версіяй маніфеста Chrome.
У цяперашні час у Chrome вядзецца праца па пераходзе на трэцюю версію маніфеста, а падтрымка другой версіі будзе спынена ў студзені 2024 гады. Галоўнай мэтай унесеных у новую версію змен з'яўляецца спрашчэнне стварэння бяспечных і высокапрадукцыйных дапаўненняў, і ўскладненне магчымасці стварэння небяспечных і павольных дапаўненняў. Так як трэцяя версія маніфеста стала аб'ектам крытыкі і прывядзе да парушэння працы шматлікіх дадаткаў для блакавання непажаданага кантэнту і забеспячэнні бяспекі, кампанія Mozilla вырашыла адысці ад забеспячэння поўнай сумяшчальнасці з маніфестам у Firefox і рэалізаваць інакш некаторыя змены.
Асноўная незадаволенасць трэцяй версіяй маніфесту звязана з пераводам у рэжым толькі для чытання API webRequest, які дазваляў падключаць уласныя апрацоўшчыкі, якія маюць поўны доступ да сеткавых запытаў і здольныя на лёце мадыфікаваць трафік. Указаны API прымяняецца ў uBlock Origin і многіх іншых дапаўненнях для блакавання непажаданага кантэнту і забеспячэння бяспекі. Замест API webRequest у трэцяй версіі маніфесту прапанаваны абмежаваны па сваіх магчымасцях API declarativeNetRequest, які прадстаўляе доступ да ўбудаванага рухавічка для фільтрацыі, самастойна які апрацоўвае правілы блакавання, не што дазваляе выкарыстоўваць уласныя алгарытмы фільтрацыі і не што дазваляе задаваць складаныя правілы, якія перакрываюць адзін аднаго ў залежнасці ад умоў.
Сярод асаблівасцяў рэалізацыі новага маніфеста ў Firefox:
- Дададзены новы дэкларатыўны API фільтрацыі кантэнту, але ў адрозненне ад Chrome не спынена падтрымка старога блакавальнага рэжыму працы API webRequest.
- У маніфесце вызначана замена фонавых старонак на варыянт Service Workers, які працуе ў выглядзе фонавых працэсаў (Background Service Workers). Для забеспячэння сумяшчальнасці ў будучыні ў Firefox будзе рэалізаваная падтрымка Service Workers, але ў наш час замест іх прапанаваны новы механізм Event Pages, які больш звыклы для web-распрацоўнікаў, не патрабуе поўнай перапрацоўкі дадаткаў і ўхіляе абмежаванні, злучаныя з ужываннем Service Workers. Event Pages дазволіць прывесці існуючыя дапаўненні з фонавымі старонкамі да патрабаванняў трэцяй версіі маніфесту, захаваўшы пры гэтым доступ да ўсіх магчымасцяў, неабходных для працы з DOM.
- Новая грануляваная мадэль запыту паўнамоцтваў - дадатак не зможа актывавацца адразу для ўсіх старонак (прыбрана паўнамоцтва "all_urls"), а будзе працаваць толькі ў кантэксце актыўнай укладкі, г.зн. карыстачу спатрэбіцца пацвярджаць працу дадатку для кожнага сайта. У Firеfox усе запыты на доступ да дадзеных сайта будуць разглядацца як неабавязковыя, а канчатковае рашэнне аб прадастаўленні доступу будзе прымаць карыстач, які зможа выбарачна вырашаць якому дадатку падаць доступ да сваіх дадзеных на тым ці іншым сайце.
Для кіравання паўнамоцтвамі ў інтэрфейс дададзена новая кнопка "Unified Extensions", якую ўжо можна пратэставаць у начных зборках Firefox. Кнопка падае сродкі для непасрэднага кіравання тым, да якіх сайтаў мае доступ кожны дадатак - карыстач можа падаць і адклікаць доступ дадатку да любога сайта. Упраўленне паўнамоцтвамі прымяняецца толькі да дапаўненняў на аснове трэцяй версіі маніфеста, для дапаўненняў на другой версіі маніфеста грануляванае кіраванне доступам да сайтаў не ажыццяўляецца.
- Змена апрацоўкі Cross-origin запытаў - у адпаведнасці з новым маніфестам на скрыпты апрацоўкі кантэнту будуць распаўсюджвацца тыя ж абмежаванні паўнамоцтваў, што і для асноўнай старонкі, у якую гэтыя скрыпты ўкараняюцца (напрыклад, калі старонка не мае доступу да API вызначэння месцазнаходжання, то і скрыпт дапаўненні таксама не атрымае гэты доступ). Дадзеная змена цалкам рэалізавана ў Firefox.
- API на аснове Promise. Firefox падтрымлівае дадзены API і для трэцяй версіі маніфеста перанясе яго ў прастору імёнаў "chrome.*".
- Забарона выканання кода, загружанага з вонкавых сервераў (гаворка пра сітуацыі, калі дадатак падгружае і выконвае вонкавы код). У Firefox ужываецца блакіроўка вонкавага кода і распрацоўнікі Mozilla дадалі дадатковыя тэхнікі адсочвання загрузак кода, прапанаваныя ў трэцяй версіі маніфесту. Для скрыптоў апрацоўкі кантэнту прадстаўлена асобная палітыка абмежавання доступу да кантэнту (CSP, Content Security Policy).
Крыніца: opennet.ru