BrowExt - permissions & host_permissions
Basiese Inligting
toestemmings
toestemmings
Toestemmings word in die uitbreiding se manifest.json
lêer gedefinieer deur die toestemmings
eienskap en gee toegang tot amper enigiets waartoe 'n blaaier toegang kan hê (Koekies of Fisiese Berging):
Die vorige manifest verklaar dat die uitbreiding die storage
toestemming benodig. Dit beteken dat dit die stoor API kan gebruik om sy data volhoudbaar te stoor. Anders as koekies of localStorage
API's wat gebruikers 'n sekere vlak van beheer gee, kan uitbreidingsberging normaalweg slegs deur die uitbreiding te deïnstalleer, skoongemaak word.
'n Uitbreiding sal die toestemmings wat in sy manifest.json
lêer aangedui word, aanvra en Na die installeer van die uitbreiding, kan jy altyd sy toestemmings in jou blaaier nagaan, soos in hierdie beeld gewys word:
Jy kan die volledige lys van toestemmings wat 'n Chromium Blaaier Uitbreiding kan aanvra hier vind en 'n volledige lys vir Firefox-uitbreidings hier.
host_toestemmings
host_toestemmings
Die opsionele maar kragtige instelling host_toestemmings
dui aan met watter gasheer die uitbreiding in staat gaan wees om te interakteer via api's soos koekies
, webRequest
, en tabs
.
Die volgende host_toestemmings
laat basies elke web toe:
Hierdie is die gasheer wat die blaaieruitbreiding vrylik kan benader. Dit is omdat wanneer 'n blaaieruitbreiding fetch("https://gmail.com/")
aanroep, dit nie beperk word deur CORS nie.
Misbruik van permissions
en host_permissions
permissions
en host_permissions
Vensters
Verder, host_permissions
maak ook "gevorderde" tabs API funksionaliteit oop. Dit laat die uitbreiding toe om tabs.query() aan te roep en nie net 'n lys van die gebruiker se blaaier tabs terug te kry nie, maar ook te leer watter webbladsy (beteken adres en titel) gelaai is.
Nie net dit nie, luisteraars soos tabs.onUpdated word ook baie nuttiger. Hierdie sal in kennis gestel word wanneer 'n nuwe bladsy in 'n tab gelaai word.
Uitvoering van inhoudskripte
Inhoudskripte is nie noodwendig staties in die uitbreidingsmanifes geskryf nie. Met voldoende host_permissions
, kan uitbreidings hulle ook dinamies laai deur tabs.executeScript() of scripting.executeScript() te roep.
Beide API's maak dit moontlik om nie net lêers wat in die uitbreidings as inhoudskripte ingesluit is nie, uit te voer nie, maar ook willekeurige kode. Die eerste maak dit moontlik om JavaScript-kode as 'n string in te voer terwyl die laaste 'n JavaScript-funksie verwag wat minder vatbaar vir inspuitingskwesbaarhede is. Nogtans, beide API's sal skade aanrig as dit verkeerd gebruik word.
Bo en behalwe die bogenoemde vermoëns, kan inhoudskripte byvoorbeeld geloofsbriewe onderskep soos dit in webbladsye ingevoer word. 'n Ander klassieke manier om hulle te misbruik, is om advertensies in te spuit op elke webwerf. Die byvoeging van bedrogboodskappe om die geloofwaardigheid van nuuswebwerwe te misbruik, is ook moontlik. Laastens kan hulle bankwebwerwe manipuleer om geldoorplasings om te lei.
Implisiete voorregte
Sommige uitbreidingsvoorregte hoef nie uitdruklik verklaar te word nie. Een voorbeeld is die tabs API: sy basiese funksionaliteit is toeganklik sonder enige voorregte. Enige uitbreiding kan in kennis gestel word wanneer jy lêers oopmaak en sluit, dit sal eenvoudig nie weet met watter webwerf hierdie lêers ooreenstem nie.
Klink dit te onskadelik? Die tabs.create() API is ietwat minder onskadelik. Dit kan gebruik word om 'n nuwe tabblad te skep, essensieel dieselfde as window.open() wat deur enige webwerf geroep kan word. Tog terwyl window.open()
onderhewig is aan die pop-up blokkeerder, tabs.create()
nie is nie.
'n Uitbreiding kan enige aantal tabs op enige tyd skep.
As jy deur moontlike tabs.create()
-parameters kyk, sal jy ook besef dat sy vermoëns ver buite gaan wat window.open()
toegelaat word om te beheer. En terwyl Firefox nie toelaat dat data:
URI's met hierdie API gebruik word nie, het Chrome geen sulke beskerming nie. Die gebruik van sulke URI's op die boonste vlak is verbied weens misbruik vir hengelary.
tabs.update() is baie soortgelyk aan tabs.create()
maar sal 'n bestaande tabblad wysig. Dus kan 'n skadelike uitbreiding byvoorbeeld arbitrêr 'n advertensiebladsy in een van jou tabs laai, en dit kan ook die ooreenstemmende tabblad aktiveer.
Webkamera, geolokasie en vriende
Jy weet waarskynlik dat webwerwe spesiale toestemmings kan versoek, bv. om toegang tot jou webkamera (videovergaderingshulpmiddels) of geografiese ligging (kaarte) te verkry. Dit is kenmerke met aansienlike potensiaal vir misbruik, sodat gebruikers elke keer moet bevestig dat hulle dit steeds wil hê.
Nie so met blaaieruitbreidings nie. As 'n blaaieruitbreiding toegang tot jou webkamera of mikrofoon wil hê, hoef dit net een keer om toestemming te vra
Gewoonlik sal 'n uitbreiding dit dadelik na installasie doen. Sodra hierdie versoek aanvaar is, is webkamera-toegang te eniger tyd moontlik, selfs as die gebruiker nie op daardie oomblik met die uitbreiding interaksie het nie. Ja, 'n gebruiker sal hierdie versoek slegs aanvaar as die uitbreiding werklik webkamera-toegang benodig. Maar daarna moet hulle die uitbreiding vertrou om niks heimlik op te neem nie.
Met toegang tot jou presiese geografiese ligging of inhoud van jou knipbord, is dit heeltemal onnodig om toestemming eksplisiet te gee. 'n Uitbreiding voeg eenvoudig geolocation
of clipboard
by die permissions entry van sy manifest. Hierdie toegangsvoorregte word dan implisiet verleen wanneer die uitbreiding geïnstalleer word. Dus kan 'n skadelike of gekompromitteerde uitbreiding met hierdie voorregte jou bewegingsprofiel skep of jou knipbord vir gekopieerde wagwoorde monitor sonder dat jy iets daarvan agterkom.
Die byvoeging van die history
sleutelwoord tot die permissions entry van die uitbreidingsmanifes verleen toegang tot die history API. Dit maak dit moontlik om die gebruiker se hele blaai-geskiedenis in een keer te herwin, sonder om te wag vir die gebruiker om hierdie webwerwe weer te besoek.
Die bookmarks
permission het soortgelyke misbruikpotensiaal, dit maak dit moontlik om alle bladmerke via die bookmarks API uit te lees.
Bergingstoestemming
Die uitbreidingsberging is bloot 'n sleutel-waarde versameling, baie soortgelyk aan localStorage wat enige webwerf kon gebruik. Dus behoort daar geen sensitiewe inligting hier gestoor te word nie.
Nietemin kan advertensie-maatskappye ook hierdie berging misbruik.
Meer toestemmings
Jy kan die volledige lys van toestemmings wat 'n Chromium Blaaieruitbreiding kan versoek hier vind en 'n volledige lys vir Firefox-uitbreidings hier.
Voorkoming
Die beleid van Google se ontwikkelaar verbied uitbreidings uitdruklik om meer voorregte as nodig vir hul funksionaliteit aan te vra, wat oormatige toestemmingsversoeke effektief verminder. 'n Voorbeeld waar 'n blaaieruitbreiding hierdie grens oorskry het, behels sy verspreiding met die blaaier self eerder as deur 'n byvoegingswinkel.
Blaaier kan verdere misbruik van uitbreidingsvoorregte beperk. Byvoorbeeld, Chrome se tabCapture en desktopCapture API's, wat vir skermopname gebruik word, is ontwerp om misbruik te minimaliseer. Die tabCapture API kan slegs deur direkte gebruikerinteraksie geaktiveer word, soos deur op die uitbreidingsikoon te klik, terwyl desktopCapture gebruikersbevestiging vereis vir die venster om opgeneem te word, wat heimlike opname-aktiwiteite voorkom.
Tog lei die verskerping van sekuriteitsmaatreëls dikwels tot 'n afname in die buigsaamheid en gebruikersvriendelikheid van uitbreidings. Die activeTab permission illustreer hierdie afweging. Dit is ingestel om die behoefte vir uitbreidings om gasheerprivileges oor die hele internet aan te vra, te elimineer, sodat uitbreidings slegs toegang tot die huidige tabblad kan verkry wanneer dit deur die gebruiker eksplisiet geaktiveer word. Hierdie model is doeltreffend vir uitbreidings wat gebruiker-geïnisieerde aksies vereis, maar skiet te kort vir diegene wat outomatiese of voorkomende aksies vereis, wat gevolglik gerief en onmiddellike reaksievermoë kan benadeel.
Verwysings
Last updated