Gebruikers zullen geen extensie installeren als deze hun privacy in gevaar brengt of om meer rechten vraagt dan nodig lijkt te zijn. Toestemmingsverzoeken moeten zinvol zijn voor gebruikers en beperkt blijven tot de essentiële informatie die nodig is om de extensie te implementeren. Extensies die gebruikersgegevens verzamelen of verzenden, moeten voldoen aan het beleid onder Bescherming van de privacy van gebruikers .
Bescherm en respecteer extensiegebruikers door deze voorzorgsmaatregelen op te nemen om hun identiteit veilig te houden.
Verminder de vereiste machtigingen
De API's waartoe een extensie toegang heeft, worden gespecificeerd in het permissions
van het manifest . Hoe meer machtigingen er worden verleend, hoe meer mogelijkheden een aanvaller heeft om informatie te onderscheppen. Alleen de API's waarvan een extensie afhankelijk is, moeten worden vermeld, en er moet aandacht worden besteed aan minder invasieve opties. Hoe minder machtigingen een extensie vraagt, hoe minder toestemmingswaarschuwingen aan een gebruiker worden getoond. Het is waarschijnlijker dat gebruikers een extensie installeren met beperkte waarschuwingen.
Extensies mogen de toegang tot gebruikersgegevens niet 'toekomstbestendig' maken door machtigingen te vragen die ze momenteel niet nodig hebben, maar die ze in de toekomst wel kunnen implementeren. Voeg nieuwe machtigingen toe aan extensie-updates en overweeg deze optioneel te maken.
actiefTabblad
Extensies die hostmachtigingen gebruiken om scripts te injecteren, kunnen in plaats daarvan vaak activeTab
vervangen. De activeTab
machtiging verleent een extensie alleen tijdelijke toegang tot het momenteel actieve tabblad wanneer de gebruiker de extensie aanroept . De toegang wordt afgesloten wanneer de gebruiker het huidige tabblad verlaat of sluit. Het dient als alternatief voor veel toepassingen van <all_urls>
.
{
"name": "Very Secure Extension",
"version": "1.0",
"description": "Example of a Secure Extension",
"permissions": ["activeTab"],
"manifest_version": 3
}
De activeTab-machtiging geeft tijdens de installatie geen waarschuwingsberichten weer.
Kies voor optionele machtigingen
Geef gebruikers de mogelijkheid om te kiezen welke functies en machtigingen ze nodig hebben van een extensie door optionele machtigingen op te nemen. Als een functie niet essentieel is voor de kernfunctionaliteit van een extensie, maak deze dan optioneel en verplaats de API of het domein naar het veld optional_permissions
.
{
"name": "Very Secure Extension",
...
"optional_permissions": [ "tabs", ],
"optional_host_permissions": ["https://www.google.com/" ],
...
}
Door optionele machtigingen op te nemen, kan een extensie uitleggen waarom deze een bepaalde machtiging nodig heeft wanneer de gebruiker de relevante functie inschakelt. De extensie kan de gebruiker een optie bieden om functies in te schakelen.
Klikken op Oké! activeert de volgende gebeurtenis in de servicemedewerker.
chrome.action.onClicked.addListener((event) => {
// Permissions must be requested from inside a user gesture, like a button's
// click handler.
chrome.permissions.request(
{
permissions: ["tabs", "scripting"],
origins: ['https://www.google.com/']
},
function (granted) {
// The callback argument will be true if the user granted the permissions.
if (granted) {
// doSomething();
} else {
// doSomethingElse();
}
}
);
});
De gebruiker krijgt dan het volgende verzoek.
Optionele machtigingen kunnen ook worden geïmplementeerd in een extensie-update. Als u dit doet, wordt de nieuwe functie beschikbaar voor gebruikers zonder de extensie uit te schakelen, zoals kan gebeuren bij het updaten met nieuwe vereiste machtigingen.
Beperk en beveilig gebruikersinformatie
Vraag alleen de minimale hoeveelheid gegevens op die een extensie nodig heeft. Hoe minder informatie een extensie van een gebruiker vraagt, betekent minder blootstelling als de extensie wordt gecompromitteerd.
Alle gevraagde gebruikersgegevens moeten met zorg worden behandeld. Gegevens opslaan en ophalen op een beveiligde server met een geregistreerd domein. Gebruik altijd HTTPS om verbinding te maken en vermijd het bewaren van gevoelige gebruikersgegevens aan de clientzijde van een extensie, aangezien de opslag van de extensie niet is gecodeerd.
Gegevens opslaan en incognitomodus
Extensies kunnen gegevens opslaan met behulp van de opslag- API of door serververzoeken te doen die resulteren in het opslaan van gegevens. Wanneer de extensie iets moet opslaan, bedenk dan eerst of dit vanuit een incognitovenster komt. Extensies worden standaard niet uitgevoerd in incognitovensters.
De incognitomodus belooft dat het venster geen sporen achterlaat. Bij het omgaan met gegevens uit incognitovensters moeten extensies deze belofte waarmaken. Als een extensie normaal gesproken de browsegeschiedenis opslaat, sla dan geen geschiedenis op vanuit incognitovensters. Extensies kunnen echter instellingsvoorkeuren vanuit elk venster opslaan, incognito of niet.
Om te detecteren of een venster zich in de incognitomodus bevindt, controleert u de incognito
eigenschap van het betreffende object tabs.Tab
of windows.Window
.
function saveTabData(tab) {
if (tab.incognito) {
return;
} else {
chrome.storage.local.set({data: tab.url});
}
}