Verklaar machtigingen en waarschuw gebruikers

De mogelijkheid van een extensie om toegang te krijgen tot websites en de meeste Chrome API's wordt bepaald door de aangegeven rechten . Machtigingen moeten worden beperkt tot alleen wat nodig is voor de functionaliteit ervan. Door de machtigingen te beperken worden de mogelijkheden van een extensie vastgelegd en wordt de mogelijke inbreuk op gegevens beperkt als de extensie door een aanvaller wordt gecompromitteerd. Bescherm extensies en hun gebruikers door expliciete, minimale en optionele machtigingen te implementeren.

Organiseer machtigingen

Machtigingen zijn bekende tekenreeksen die verwijzen naar een Chrome API of matchpatronen die toegang verlenen aan een of meer hosts. Ze worden vermeld in het manifest en gespecificeerd als vereiste machtigingen of optionele machtigingen .

{
  "name": "Permissions Extension",
  ...
  // required permissions
  "permissions": [
    "activeTab",
    "contextMenus",
    "storage"
  ],
  // optional permissions
  "optional_permissions": [
    "topSites",
    "http://www.developer.chrome.com/*"
  ],
      ...
  "manifest_version": 2
}

Beperk de vereiste machtigingen tot alleen wat nodig is voor de kernfunctionaliteit van de extensie. Een extensie mag niet meer machtigingen vragen dan momenteel nodig is; maak het niet toekomstbestendig door toestemming te vragen die mogelijk nodig is bij updates.

Machtigingen die nodig zijn voor optionele functies moeten worden geregistreerd als optionele machtigingen . Hierdoor kunnen gebruikers beslissen hoeveel toegang ze willen verlenen tot een extensie en welke functies gewenst zijn.

Identificeer de vereiste machtigingen

Voor een eenvoudige extensie moet mogelijk meerdere machtigingen worden aangevraagd, en bij veel machtigingen worden waarschuwingen weergegeven bij de installatie. Gebruikers vertrouwen eerder een extensie met beperkte waarschuwingen of wanneer rechten aan hen worden uitgelegd.

Waarschuwingen voor extensietoestemming bij installatie

Identificeer de kernfunctionaliteit van een extensie en welke machtigingen daarvoor vereist zijn. Overweeg om functies optioneel te maken als ze machtigingen met waarschuwingen vereisen.

Activeer optionele machtigingen met gebeurtenissen

De kernfunctionaliteit van de optionele machtigingenvoorbeeldextensie overschrijft de nieuwe tabbladpagina. Eén functie is het weergeven van het doel van de dag van de gebruiker. Voor deze functie zijn alleen opslagrechten vereist, die geen waarschuwing bevatten.

Extensieknop die extra functies mogelijk maakt

De extensie heeft een extra feature; weergave van de beste sites van de gebruiker. Voor deze functie is de toestemming van topSites vereist, die een waarschuwing bevat.

Extensiewaarschuwing voor topSites API

Het ontwikkelen van functies die afhankelijk zijn van machtigingen met waarschuwingen als optioneel en het organisch introduceren van deze functies geeft gebruikers een risicovrije introductie tot de extensie. Bovendien kunnen gebruikers hierdoor hun ervaring verder aanpassen met een extensie en ontstaat er de mogelijkheid om waarschuwingen uit te leggen.

Vervang de activeTab-machtiging

De activeTab machtiging verleent tijdelijke toegang tot de site waarop de gebruiker zich bevindt en zorgt ervoor dat de extensie de machtiging "tabs" op het huidige tabblad kan gebruiken. Het vervangt in veel gevallen de noodzaak van "<all_urls>" en geeft geen waarschuwing weer bij de installatie.

Zonder activeTab:

Gebruikersinterface voor machtigingen zonder activeTab

Met activeTab:

Gebruikersinterface voor machtigingen met activeTab

De activeTab machtiging verleent een extensie tijdelijke toegang tot het momenteel actieve tabblad wanneer de gebruiker de extensie aanroept . Als de extensie gecompromitteerd is, moet de aanvaller wachten tot de gebruiker de extensie aanroept voordat hij toegang krijgt, en die toegang duurt slechts totdat het tabblad wordt genavigeerd of gesloten.

Terwijl de activeTab machtiging is ingeschakeld voor een tabblad, kan een extensie:

  • Roep tabs.executeScript of tabs.insertCSS aan op dat tabblad.
  • Haal de URL, titel en favicon voor dat tabblad op via een API die een tabs.Tab object retourneert.
  • Onderschep netwerkverzoeken op het tabblad naar de hoofdframeoorsprong van het tabblad met behulp van de webRequest API. De extensie krijgt tijdelijk hostrechten voor de oorsprong van het hoofdframe van het tabblad.

De volgende gebruikersgebaren schakelen activeTab :

Toegang toestaan

Als een extensie toegang moet hebben tot file:// URL's of in de incognitomodus moet werken, moeten gebruikers toegang voor deze functies inschakelen op de detailpagina van de extensie op chrome://extensions.

Bestands-URL's en incognitomodus toestaan ​​op de extensiedetailpagina

Een extensie kan detecteren of deze is ingeschakeld in de incognitomodus door extension.isAllowedIncognitoAccess() aan te roepen of kan worden uitgevoerd op file:// URL's met extension.isAllowedFileSchemeAccess() .

Machtigingen begrijpen

Er bestaan ​​toestemmingswaarschuwingen om de mogelijkheden te beschrijven die door een API aan extensiegebruikers worden verleend, maar sommige van deze waarschuwingen zijn in eerste instantie misschien niet duidelijk. Het toevoegen van de toestemming "tabs" resulteert bijvoorbeeld in een schijnbaar niet-gerelateerde waarschuwing: de extensie kan uw browse-activiteit lezen . Hoewel de chrome.tabs API mogelijk alleen wordt gebruikt om nieuwe tabbladen te openen, kan deze ook worden gebruikt om de URL te bekijken die aan elk nieuw geopend tabblad is gekoppeld door de bijbehorende tabs.Tab- objecten te gebruiken.

Implementeer indien mogelijk optionele machtigingen of een minder krachtige API om alarmerende waarschuwingen te voorkomen.

Waarschuwingen bekijken

Er worden geen toestemmingswaarschuwingen weergegeven als een extensie wordt geladen als een uitgepakt bestand. Om de toestemmingswaarschuwingen van een extensie te bekijken, navigeert u naar chrome://extensions , zorgt u ervoor dat de ontwikkelaarsmodus is ingeschakeld en klikt u op PACK EXTENSION .

Ontwikkelaarsmodus is aangevinkt en klik vervolgens op Extensie inpakken

Geef het pad naar de map van de extensie op in het veld Extensiehoofdmap en klik vervolgens op de knop Extensie inpakken . Negeer het veld Privésleutel voor een nieuw pakket.

Geef het extensiepad op en klik vervolgens op Extensie inpakken

Chrome maakt twee bestanden, een .crx bestand en een .pem bestand, dat de privésleutel van de extensie bevat.

Verpakte extensiebestanden

Verlies de privésleutel niet! Bewaar het .pem -bestand op een geheime en veilige plaats; het zal nodig zijn om de extensie bij te werken .

Installeer het .crx bestand door het op de beheerpagina van de Chrome-extensie neer te zetten.

Zet het bestand neer om te installeren

Nadat het .crx bestand is neergezet, vraagt ​​de browser of de extensie kan worden toegevoegd en worden er waarschuwingen weergegeven.

Waarschuwing voor nieuwe tabbladextensie

Machtigingen met waarschuwingen

Opmerking: Toestemmingstabellen worden naar beste vermogen bijgewerkt en kunnen kleine verschillen bevatten met de huidige waarschuwingen. Bovendien geven sommige machtigingen mogelijk geen waarschuwingen weer wanneer ze worden gecombineerd met andere machtigingen. De waarschuwing "tabs" wordt bijvoorbeeld niet weergegeven als de extensie ook om "<all_urls>" vraagt. Om de meest recente waarschuwingen voor extensiemachtigingen te verifiëren, volgt u de stappen in Waarschuwingen bekijken .

Toestemming Beschrijving Waarschuwing
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
Verleent de extensie toegang aan alle hosts. Het is mogelijk mogelijk om het declareren van hostmachtigingen te voorkomen door de activeTab- machtiging te gebruiken. Lees en wijzig al uw gegevens op de websites die u bezoekt
"https://HostName.com/" Verleent de extensie toegang tot "https://HostName.com/" . Het is mogelijk mogelijk om het declareren van hostmachtigingen te voorkomen door de activeTab- machtiging te gebruiken. Lees en wijzig uw gegevens op HostName.com
"bookmarks" Geeft uw extensie toegang tot de chrome.bookmarks API. Lees en wijzig uw bladwijzers
"clipboardRead" Vereist als de extensie document.execCommand('paste') gebruikt. Gegevens lezen die u kopieert en plakt
"clipboardWrite" Geeft aan dat de extensie document.execCommand('copy') of document.execCommand('cut') gebruikt. Wijzig gegevens die u kopieert en plakt
"contentSettings" Geeft uw extensie toegang tot de chrome.contentSettings API. Wijzig uw instellingen die de toegang van websites tot functies zoals cookies, JavaScript, plug-ins, geolocatie, microfoon, camera enz. controleren.
"debugger" Geeft uw extensie toegang tot de chrome.debugger API.
  • Toegang tot de backend van de pagina-foutopsporing
  • Lees en wijzig al uw gegevens op de websites die u bezoekt
"declarativeNetRequest" Geeft uw extensie toegang tot de chrome.declarativeNetRequest API. Pagina-inhoud blokkeren
"desktopCapture" Geeft uw extensie toegang tot de chrome.desktopCapture API. Leg de inhoud van uw scherm vast
"downloads" Geeft uw extensie toegang tot de chrome.downloads API. Beheer uw downloads
"geolocation" Hiermee kan de extensie de HTML5- geolocatie-API gebruiken zonder de gebruiker om toestemming te vragen. Detecteer uw fysieke locatie
"history" Geeft uw extensie toegang tot de chrome.history API. Lees en wijzig uw browsegeschiedenis
"management" Verleent de extensie toegang tot de chrome.management API. Beheer uw apps, extensies en thema's
"nativeMessaging" Geeft de extensie toegang tot de native messaging-API . Communiceer met samenwerkende native applicaties
"notifications" Geeft uw extensie toegang tot de chrome.notifications API. Meldingen weergeven
"pageCapture" Verleent de extensie toegang tot de chrome.pageCapture API. Lees en wijzig al uw gegevens op de websites die u bezoekt
"privacy" Geeft de extensie toegang tot de chrome.privacy API. Wijzig uw privacygerelateerde instellingen
"proxy" Verleent de extensie toegang tot de chrome.proxy API. Lees en wijzig al uw gegevens op de websites die u bezoekt
"system.storage" Verleent de extensie toegang tot de chrome.system.storage API. Identificeer en werp opslagapparaten uit
"tabCapture" Verleent de extensies toegang tot de chrome.tabCapture API. Lees en wijzig al uw gegevens op de websites die u bezoekt
"tabs" Verleent de extensie toegang tot bevoorrechte velden van de Tab objecten die door verschillende API's worden gebruikt, waaronder chrome.tabs en chrome.windows . In veel gevallen hoeft de extensie de "tabs" geen toestemming te geven om gebruik te maken van deze API's. Lees uw browsegeschiedenis
"topSites" Verleent de extensie toegang tot de chrome.topSites API. Lees een lijst met uw meest bezochte websites
"ttsEngine" Verleent de extensie toegang tot de chrome.ttsEngine API. Lees alle tekst die is gesproken met behulp van synthetische spraak
"webNavigation" Verleent de extensie toegang tot de chrome.webNavigation API. Lees uw browsegeschiedenis

Machtigingen bijwerken

Als u een extensie met extra machtigingen bijwerkt, kan deze tijdelijk worden uitgeschakeld. De gebruiker moet het opnieuw inschakelen nadat hij akkoord is gegaan met nieuwe waarschuwingen.

Als de gebruiker handmatig een extensie bijwerkt die nu de machtiging voor tabbladen bevat, krijgt hij een waarschuwing op de beheerpagina.

Tabbladen toevoegen Toestemming

Als de extensie automatisch wordt bijgewerkt, wordt deze uitgeschakeld totdat de gebruiker akkoord gaat met de nieuwe machtigingen.

Extensie is uitgeschakeld

Ga akkoord met machtigingen

Dit kan worden vermeden door de nieuwe functie optioneel te maken en nieuwe machtigingsupdates toe te voegen aan optional_permissions in het manifest .