Opas JavaScript-API-käyttöoikeuksien hallintaan selainlaajennusten manifesteissa turvallisuuden ja käyttäjäluottamuksen parantamiseksi.
Selainlaajennuksen manifesti: JavaScript-API:n käyttöoikeuksien hallinta
Selainlaajennukset ovat tehokkaita työkaluja, jotka voivat merkittävästi parantaa käyttäjäkokemusta verkossa. Ne antavat kehittäjille mahdollisuuden lisätä mukautettuja toimintoja selaimiin, kuten Chrome, Firefox, Safari ja Edge, mahdollistaen laajan valikoiman ominaisuuksia mainosten estäjistä tuottavuustyökaluihin ja parannettuihin saavutettavuusominaisuuksiin. Tämän voiman mukana tulee kuitenkin vastuu. Laajennukset toimivat päästen käsiksi käyttäjän selausdataan ja vuorovaikutuksiin, mikä tekee tietoturvasta ja käyttöoikeuksien hallinnasta ensisijaisen tärkeää. Selainlaajennuksen manifestitiedosto on tämän turvallisuusmallin kulmakivi. Se toimii ilmoituksena siitä, mitä laajennus aikoo tehdä, erityisesti koskien sen JavaScript-API:en käyttöä ja niihin liittyviä vaadittuja käyttöoikeuksia.
Selainlaajennuksen manifestin ymmärtäminen
Manifestitiedosto, tyypillisesti nimeltään manifest.json
, on JSON-muotoinen tiedosto, joka antaa selaimelle olennaista tietoa laajennuksesta. Tähän sisältyy laajennuksen nimi, kuvaus, versio, kuvakkeet ja tärkeimpänä sen vaatimat käyttöoikeudet. Manifesti on ensimmäinen kontaktipiste laajennuksen ja selaimen turvajärjestelmän välillä. Hyvin määritelty manifesti minimoi tietoturvahaavoittuvuuksien riskin ja auttaa rakentamaan käyttäjäluottamusta. Väärin ilmoitetut tai liian laajat käyttöoikeuspyynnöt voivat johtaa laajennuskauppojen hylkäykseen ja herättää epäluuloja käyttäjissä.
Manifestitiedoston käyttöoikeuksiin liittyvät avainkomponentit
- manifest_version: Määrittää käytössä olevan manifestitiedoston muotoversion. Tällä hetkellä Manifest V3 on suositeltu versio useimmille selaimille.
- name: Laajennuksen nimi, joka näytetään käyttäjälle.
- description: Lyhyt kuvaus laajennuksen toiminnallisuudesta.
- version: Laajennuksen versionumero.
- permissions: Merkkijonotaulukko, joka ilmoittaa API-käyttöoikeudet, joita laajennus tarvitsee toimiakseen. Tämä on tärkein osa käyttöoikeuksien hallintaa.
- optional_permissions: Merkkijonotaulukko, joka ilmoittaa API-käyttöoikeudet, joita laajennus *saattaa* tarvita, mutta ei välttämättä koko aikaa. Käyttäjät voivat myöntää tai evätä nämä oikeudet ajon aikana.
- content_scripts: Määrittää JavaScript- ja CSS-tiedostot, jotka injektoidaan tietyt URL-mallit täyttäville verkkosivuille.
- web_accessible_resources: Ilmoittaa laajennuspaketissa olevat tiedostot, joihin verkkosivut voivat päästä käsiksi. Tämä on tärkeää sen hallitsemiseksi, mitkä osat laajennuksesi koodista voidaan paljastaa ulkomaailmalle.
- background: Määrittää taustaskriptin (Manifest V3:ssa palvelutyöntekijä), joka suoritetaan taustalla ja käsittelee tapahtumia.
JavaScript-API:n käyttöoikeudet: Mitä ne ovat ja miksi niillä on väliä
JavaScript-API:t antavat laajennuksille pääsyn selaimen toimintoihin ja käyttäjädataan. Nämä API:t on luokiteltu erilaisiin käyttöoikeuksiin, joista jokainen myöntää tiettyjä kykyjä. Kun laajennus pyytää käyttöoikeutta, se pyytää olennaisesti käyttäjältä (tai joissakin tapauksissa selaimelta) lupaa käyttää tiettyä ominaisuus- tai datajoukkoa. Esimerkiksi laajennus voi pyytää tabs
-oikeutta hallitakseen selaimen välilehtiä tai storage
-oikeutta tallentaakseen ja noutaakseen dataa paikallisesti.
Esimerkkejä yleisistä JavaScript-API:n käyttöoikeuksista
- tabs: Sallii laajennuksen päästä käsiksi ja manipuloida selaimen välilehtiä, mukaan lukien URL-osoitteiden luominen, sulkeminen ja muokkaaminen. Esimerkkinä käyttötapauksesta on välilehtien hallintalaajennus, joka auttaa käyttäjiä järjestämään avoimia välilehtiään.
- storage: Antaa laajennukselle mahdollisuuden tallentaa ja noutaa dataa selaimen tallennus-API:en avulla (esim.
chrome.storage.local
). Tämä on hyödyllistä käyttäjäasetusten tallentamiseen tai datan välimuistiin tallentamiseen. - cookies: Mahdollistaa laajennuksen pääsyn verkkosivustoihin liittyviin evästeisiin ja niiden muokkaamisen. Tätä käyttävät yleisesti laajennukset, jotka hallitsevat käyttäjien sisäänkirjautumisia tai seuraavat selaustoimintaa (tietenkin käyttäjän suostumuksella).
- webRequest ja webRequestBlocking: Antavat laajennukselle kyvyn siepata ja muokata verkkopyyntöjä. Näitä käyttöoikeuksia käyttävät usein mainosten estäjät ja yksityisyydensuojalaajennukset.
webRequestBlocking
antaa laajennuksen synkronisesti estää tai muokata pyyntöjä, mutta se voi vaikuttaa suorituskykyyn ja on poistumassa käytöstä declarativeNetRequestin hyväksi Manifest V3:ssa. - declarativeNetRequest: (Manifest V3) Sallii laajennusten muokata verkkopyyntöjä deklaratiivisen sääntöjoukon avulla. Tämä lähestymistapa on tehokkaampi ja turvallisempi kuin
webRequestBlocking
. Se on suositeltu tapa suodattaa verkkopyyntöjä Manifest V3:ssa. - activeTab: Antaa laajennukselle väliaikaisen pääsyn tällä hetkellä aktiiviseen välilehteen. Käyttäjän on erikseen käynnistettävä laajennus sivulla. Tämä on vähemmän voimakas vaihtoehto
tabs
-oikeudelle ja sopii laajennuksille, jotka tarvitsevat pääsyn vain nykyiseen välilehteen. : Antaa laajennukselle pääsyn kaikkiin URL-osoitteisiin. Tämä on voimakas käyttöoikeus ja sitä tulee käyttää äärimmäistä varovaisuutta noudattaen. Sitä tarvitsevat tyypillisesti vain laajennukset, joiden on oltava vuorovaikutuksessa kaikkien verkkosivustojen kanssa, kuten sisällönanalyysityökalut tai VPN-laajennukset. Tämän oikeuden pyytäminen vaatii usein yksityiskohtaisen perustelun laajennuksen tarkistusprosessin aikana.- notifications: Sallii laajennuksen näyttää työpöytäilmoituksia käyttäjälle. Yleinen käyttötapaus on sähköpostilaajennuksille, jotka ilmoittavat käyttäjille uusista viesteistä.
- geolocation: Antaa pääsyn käyttäjän sijaintiin. Tämä käyttöoikeus vaatii käyttäjän suostumuksen ja sitä tulisi pyytää vain, jos laajennus todella tarvitsee sijaintitietoja.
Vähimpien oikeuksien periaatteen tärkeys
Vähimpien oikeuksien periaate on perustavanlaatuinen tietoturvakonsepti, joka soveltuu suoraan selainlaajennusten kehitykseen. Se sanelee, että laajennuksen tulisi pyytää vain vähimmäismäärä käyttöoikeuksia, jotka ovat välttämättömiä sen aiotun toiminnon suorittamiseksi. Vältä pyytämästä käyttöoikeuksia, joita saatat tarvita tulevaisuudessa; pyydä niitä vain, kun todella tarvitset niitä. Tämä lähestymistapa minimoi mahdollisen hyökkäyspinta-alan ja vähentää riskiä, että haitallinen koodi hyödyntää laajennusta.
Esimerkiksi, jos laajennuksesi tarvitsee muokata vain tiettyjen verkkosivustojen sisältöä, vältä pyytämästä
-oikeutta. Sen sijaan, käytä sisältöskriptejä tietyillä URL-hakumalleilla. Vastaavasti, jos laajennuksesi tarvitsee pääsyn vain aktiiviseen välilehteen, käytä activeTab
-oikeutta tabs
-oikeuden sijaan.
Käyttöoikeuksien tehokas hallinta
Tehokas käyttöoikeuksien hallinta sisältää useita avainvaiheita, alkaen vaadittujen käyttöoikeuksien huolellisesta valinnasta niiden sulavaan käsittelyyn ajon aikana.
1. Analysoi vaaditut käyttöoikeudet huolellisesti
Ennen koodaamisen aloittamista, analysoi perusteellisesti laajennuksesi toiminnallisuus ja tunnista tietyt JavaScript-API:t, joita sinun tulee käyttää. Ota huomioon vähimpien oikeuksien periaate ja pyydä vain vähimmäismäärä vaadittuja käyttöoikeuksia. Dokumentoi, miksi kutakin käyttöoikeutta tarvitaan, koodissasi ja laajennuksen kuvauksessa. Tämä helpottaa käyttöoikeuksien perustelemista tarkistusprosessin aikana ja auttaa käyttäjiä ymmärtämään, miksi laajennus tarvitsee pääsyn heidän tietoihinsa.
2. Ilmoita käyttöoikeudet manifestitiedostossa
Ilmoita kaikki vaaditut käyttöoikeudet permissions
-taulukossa manifest.json
-tiedostossasi. Käytä selkeitä ja kuvaavia käyttöoikeuksien nimiä. Esimerkiksi:
{
"manifest_version": 3,
"name": "My Extension",
"version": "1.0",
"description": "A simple extension",
"permissions": [
"tabs",
"storage",
"https://*.example.com/*" // Käyttöoikeus example.com-sivustoon ja sen aliverkkotunnuksiin HTTPS:n kautta
],
"background": {
"service_worker": "background.js"
},
"content_scripts": [{
"matches": ["https://*.example.com/*"],
"js": ["content.js"]
}]
}
Tämä esimerkki näyttää, kuinka ilmoitetaan tabs
- ja storage
-oikeudet sekä isäntäoikeus pääsyyn example.com
-sivustolle ja sen aliverkkotunnuksiin HTTPS:n kautta. Isäntäoikeudet ovat ratkaisevan tärkeitä sen hallitsemiseksi, minkä verkkosivustojen kanssa laajennus voi olla vuorovaikutuksessa.
3. Käytä valinnaisia käyttöoikeuksia
Jos laajennuksesi vaatii tiettyjä käyttöoikeuksia vain tietyissä olosuhteissa, harkitse valinnaisten käyttöoikeuksien käyttöä. Valinnaiset käyttöoikeudet antavat käyttäjille mahdollisuuden myöntää tai evätä pääsy näihin ominaisuuksiin ajon aikana. Tämä antaa käyttäjille enemmän hallintaa tietoihinsa ja voi parantaa laajennuksen käyttöönottoastetta.
Käyttääksesi valinnaisia käyttöoikeuksia, ilmoita ne optional_permissions
-taulukossa manifest.json
-tiedostossasi. Sitten, käytä permissions.request()
-API:a pyytääksesi käyttöoikeutta, kun sitä tarvitaan. Käsittele sulavasti tilanne, jossa käyttäjä epää käyttöoikeuden. Esimerkiksi:
// manifest.json
{
"manifest_version": 3,
"name": "My Extension",
"version": "1.0",
"description": "A simple extension",
"permissions": [
"storage"
],
"optional_permissions": [
"geolocation"
],
"background": {
"service_worker": "background.js"
},
"content_scripts": [{
"matches": ["https://*.example.com/*"],
"js": ["content.js"]
}]
}
// background.js
chrome.action.onClicked.addListener(function(tab) {
chrome.permissions.request({
permissions: ['geolocation']
}, function(granted) {
if (granted) {
// Käyttöoikeus myönnetty, käytä geolokaatiota
navigator.geolocation.getCurrentPosition(function(position) {
console.log('Latitude: ' + position.coords.latitude);
console.log('Longitude: ' + position.coords.longitude);
});
} else {
// Käyttöoikeus evätty, ilmoita käyttäjälle
alert('Geolocation permission denied.');
}
});
});
Tässä esimerkissä laajennus pyytää geolocation
-oikeutta vain, kun käyttäjä napsauttaa laajennuksen kuvaketta. Jos käyttäjä myöntää oikeuden, laajennus hakee käyttäjän sijainnin. Jos käyttäjä epää oikeuden, laajennus näyttää hälytysviestin.
4. Vahvista käyttäjän syöte ja puhdista data
Riippumatta siitä, mitä käyttöoikeuksia laajennuksesi pyytää, on ratkaisevan tärkeää vahvistaa käyttäjän syöte ja puhdistaa data tietoturvahaavoittuvuuksien, kuten sivustojen välisen komentosarja-ajon (XSS), estämiseksi. Suojaa (escape) aina käyttäjän antama data ennen sen näyttämistä verkkosivulla tai käyttämistä skriptissä. Käytä selaimen API:ita, kuten DOMPurify
(joka voidaan sisällyttää verkkokäyttöisenä resurssina), tai sisäänrakennettuja suojausfunktioita datan puhdistamiseen. Ole erityisen varovainen käsitellessäsi ulkoisista lähteistä tai API:sta saatua dataa. Harkitse sisällön suojauskäytännön (Content Security Policy, CSP) käyttöä XSS-riskien vähentämiseksi entisestään.
5. Toteuta sisällön suojauskäytäntö (CSP)
Sisällön suojauskäytäntö (Content Security Policy, CSP) on turvallisuusmekanismi, joka auttaa estämään XSS-hyökkäyksiä rajoittamalla lähteitä, joista selain voi ladata resursseja. Voit määrittää CSP:n manifest.json
-tiedostossa hallitaksesi, mitä skriptejä, tyylitiedostoja ja muita resursseja laajennus voi ladata. Vahva CSP vähentää merkittävästi laajennuksesi hyökkäyspinta-alaa. Esimerkiksi:
{
"manifest_version": 3,
"name": "My Extension",
"version": "1.0",
"description": "A simple extension",
"permissions": [
"storage"
],
"content_security_policy": {
"extension_pages": "script-src 'self'; object-src 'none';",
"sandbox": "sandbox allow-scripts; script-src 'self' 'wasm-unsafe-eval'; object-src 'none';"
},
"background": {
"service_worker": "background.js"
},
"content_scripts": [{
"matches": ["https://*.example.com/*"],
"js": ["content.js"]
}]
}
Tämä esimerkki määrittelee CSP:n, joka sallii skriptien lataamisen vain laajennuksen omasta alkuperästä ('self'
) ja poistaa liitännäisten suorituksen käytöstä (object-src 'none'
) laajennussivuilla. sandbox
-CSP:tä sovelletaan hiekkalaatikoiduille sivuille, sallien skriptien ja WebAssemblyn suorittamisen, mutta rajoittaen silti muita mahdollisesti vaarallisia ominaisuuksia.
6. Varmista tietoliikennekanavat
Jos laajennuksesi kommunikoi ulkoisten palvelimien kanssa, käytä turvallisia tietoliikennekanavia, kuten HTTPS:ää, suojataksesi dataa siirron aikana. Varmenna palvelimen sertifikaatit estääksesi mies-välissä-hyökkäykset. Vältä arkaluonteisen datan tallentamista paikallisesti aina kun mahdollista. Jos sinun on tallennettava arkaluonteista dataa, salaa se käyttämällä vahvaa salausalgoritmia.
7. Tarkista ja päivitä käyttöoikeudet säännöllisesti
Kun laajennuksesi kehittyy, sen toiminnallisuus saattaa muuttua, ja saatat joutua päivittämään sen käyttöoikeuksia. Tarkista säännöllisesti laajennuksesi pyytämät käyttöoikeudet ja poista ne, joita ei enää tarvita. Pidä laajennuksesi riippuvuudet ajan tasalla korjataksesi mahdolliset tietoturvahaavoittuvuudet. Ilmoita käyttäjille merkittävistä muutoksista laajennuksen käyttöoikeuksiin julkaisutiedoissa.
Globaalin laajennuskehityksen parhaat käytännöt
Kun kehität selainlaajennuksia globaalille yleisölle, ota huomioon seuraavat parhaat käytännöt:
- Lokalisaatio: Tue useita kieliä tehdäkseesi laajennuksestasi saavutettavan käyttäjille ympäri maailmaa. Käytä selaimen lokalisaatio-API:ita kääntääksesi laajennuksesi käyttöliittymän ja viestit.
- Aikavyöhykkeet ja päivämäärämuodot: Ota huomioon eri aikavyöhykkeet ja päivämäärämuodot näyttäessäsi tai käsitellessäsi päivämääriä ja aikoja. Käytä selaimen kansainvälistämis-API:ita muotoillaksesi päivämäärät ja ajat käyttäjän paikallisasetusten mukaisesti.
- Valuuttamuodot: Jos laajennuksesi käsittelee valuuttaa, käytä asianmukaisia valuuttamuotoja eri alueille. Käytä selaimen kansainvälistämis-API:ita muotoillaksesi valuutta-arvot.
- Kulttuurinen herkkyys: Ole tietoinen kulttuurieroista ja vältä kuvien, symbolien tai kielen käyttöä, jotka voivat olla loukkaavia tietyille ryhmille.
- Saavutettavuus: Suunnittele laajennuksesi niin, että se on saavutettavissa vammaisille käyttäjille. Käytä ARIA-attribuutteja tarjotaksesi semanttista tietoa aputeknologioille.
- Yksityisyys: Kunnioita käyttäjien yksityisyyttä ja ole läpinäkyvä siinä, miten keräät ja käytät tietoja. Hanki käyttäjän suostumus ennen henkilötietojen keräämistä. Noudata asiaankuuluvia tietosuoja-asetuksia, kuten GDPR:ää ja CCPA:ta.
- Suorituskyky: Optimoi laajennuksesi suorituskyky minimoidaksesi sen vaikutuksen käyttäjän selauskokemukseen. Käytä tehokkaita algoritmeja ja tietorakenteita. Vältä pääsäikeen estämistä.
Manifest V3 ja käyttöoikeusmuutokset
Manifest V3 tuo merkittäviä muutoksia selainlaajennusalustaan, mukaan lukien muutoksia siihen, miten käyttöoikeuksia käsitellään. Yksi merkittävimmistä muutoksista on webRequestBlocking
-ominaisuuden korvaaminen declarativeNetRequest
-ominaisuudella. declarativeNetRequest
tarjoaa tehokkaamman ja turvallisemman tavan suodattaa verkkopyyntöjä käyttämällä deklaratiivista sääntöjoukkoa. Tämä vähentää webRequestBlocking
-ominaisuuteen liittyvien suorituskykyongelmien ja tietoturvahaavoittuvuuksien riskiä. Muita muutoksia ovat tiukemmat rajoitukset etänä isännöidylle koodille ja siirtyminen palvelutyöntekijöihin taustaskripteissä.
Yhteenveto
JavaScript-API:n käyttöoikeuksien tehokas hallinta on ratkaisevan tärkeää turvallisten ja luotettavien selainlaajennusten rakentamisessa. Ymmärtämällä selainlaajennuksen manifestin, soveltamalla vähimpien oikeuksien periaatetta ja noudattamalla parhaita käytäntöjä käyttöoikeuksien hallinnassa kehittäjät voivat luoda laajennuksia, jotka parantavat käyttäjäkokemusta vaarantamatta turvallisuutta tai yksityisyyttä. Ota käyttöön parhaat käytännöt lokalisaatiossa, kulttuurisessa herkkyydessä ja suorituskyvyssä luodaksesi laajennuksia, jotka puhuttelevat globaalia yleisöä. Pysy ajan tasalla selainlaajennusalustan uusimmista muutoksista, kuten Manifest V3:sta, varmistaaksesi, että laajennuksesi pysyvät turvallisina ja yhteensopivina nykyaikaisten selainten kanssa. Muista, että luottamuksen rakentaminen käyttäjien kanssa on ensisijaisen tärkeää. Ole läpinäkyvä laajennuksesi pyytämistä käyttöoikeuksista ja siitä, miksi niitä tarvitaan. Vastuullinen lähestymistapa käyttöoikeuksien hallintaan johtaa lopulta parempaan ja turvallisempaan selauskokemukseen kaikille.