Użytkownicy nie instalują rozszerzenia, które narusza ich prywatność lub prosi o przyznanie dodatkowych uprawnień, których wydaje się potrzebować. Prośby o przyznanie uprawnień powinny być zrozumiałe dla użytkowników i ograniczone do najważniejszych informacji niezbędnych do zaimplementowania rozszerzenia. Rozszerzenia, które zbierają lub przesyłają dane użytkownika, muszą być zgodne z zasadami opisanymi w artykule Ochrona prywatności użytkownika.
Chroń i szanuj użytkowników rozszerzeń, stosując te środki ostrożności w celu zapewnienia bezpieczeństwa ich tożsamości.
Zmniejsz liczbę wymaganych uprawnień
Interfejsy API, do których ma dostęp rozszerzenie, są określone w polu permissions
manifestu. Im więcej przyznanych uprawnień, tym większe szanse na przechwycenie informacji. Należy podać tylko interfejsy API, od których zależy rozszerzenie, i uwzględnić opcje mniej inwazyjne. Im mniej uprawnień żąda rozszerzenie, tym mniej ostrzeżeń o uprawnieniach wyświetli się użytkownikowi. Użytkownicy z większym prawdopodobieństwem zainstalują rozszerzenie z ograniczonymi ostrzeżeniami.
Rozszerzenia nie powinny być „na przyszłość” dostępu do danych użytkowników przez wysyłanie próśb o uprawnienia, których obecnie nie potrzebuje, ale mogą zostać zastosowane w przyszłości. Dodaj nowe uprawnienia wraz z aktualizacjami rozszerzeń i rozważ ich ustawienie jako opcjonalne.
activeTab
Rozszerzenia, które używają uprawnień hosta do wstrzykiwania skryptów, mogą często zastąpić activeTab
. Uprawnienie activeTab
przyznaje rozszerzeniu tymczasowy dostęp do aktualnie aktywnej karty tylko wtedy, gdy użytkownik wywoła rozszerzenie. Dostęp jest ucinany, gdy użytkownik opuści bieżącą kartę lub ją zamknie. Jest alternatywą dla wielu zastosowań <all_urls>
.
{
"name": "Very Secure Extension",
"version": "1.0",
"description": "Example of a Secure Extension",
"permissions": ["activeTab"],
"manifest_version": 3
}
Uprawnienie ActiveTab nie wyświetla żadnych ostrzeżeń podczas instalacji.
Opcjonalne uprawnienia
Daj użytkownikom możliwość wyboru funkcji i uprawnień, których potrzebują w rozszerzeniu, dodając uprawnienia opcjonalne. Jeśli funkcja nie jest niezbędna do realizowania głównej funkcjonalności rozszerzenia, ustaw ją jako opcjonalną i przenieś interfejs API lub domenę do pola optional_permissions
.
{
"name": "Very Secure Extension",
...
"optional_permissions": [ "tabs", ],
"optional_host_permissions": ["https://www.google.com/" ],
...
}
Dodanie uprawnień opcjonalnych pozwala rozszerzeniu wyjaśnić, dlaczego potrzebuje konkretnych uprawnień. gdy użytkownik włączy daną funkcję. Rozszerzenie umożliwia użytkownikowi włączenie funkcje zabezpieczeń.
Kliknięcie OK! spowoduje wywołanie w skrypcie service worker następującego zdarzenia.
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();
}
}
);
});
Użytkownik zostanie wtedy proszony o podanie tego żądania.
Opcjonalne uprawnienia można też wdrożyć w ramach aktualizacji rozszerzenia. Jeśli to zrobisz, nowy plik dostępnej dla użytkowników bez wyłączania rozszerzenia, co może się zdarzyć w przypadku aktualizacji do nowego wymagane uprawnienia.
Ograniczanie i zabezpieczanie danych użytkownika
Żądaj tylko minimalnej ilości danych, których potrzebuje rozszerzenie. Im mniej informacji wymagane przez rozszerzenie od użytkownika, tym mniej informacji, jeśli zostanie przejęte.
Ze wszystkimi danymi użytkownika należy postępować ostrożnie. Przechowuj i pobieraj dane na bezpiecznym serwerze za pomocą zarejestrowanej domeny. Zawsze używaj protokołu HTTPS do nawiązywania połączenia i unikania przechowywania poufnych danych użytkowników w kliencie bo pamięć rozszerzenia nie jest szyfrowana.
Zapisywanie danych i tryb incognito
Rozszerzenia mogą zapisywać dane przez interfejs API storage lub przez wysyłanie żądań serwera, pozwala zaoszczędzić dane. Jeśli rozszerzenie musi coś zapisać, najpierw zastanów się, czy pochodzi z okno incognito. Domyślnie rozszerzenia nie działają w oknach incognito.
Tryb incognito powoduje, że okno nie pozostawia żadnych śladów. W przypadku danych z: w oknach incognito, rozszerzenia powinny spełniać tę obietnicę. Jeśli rozszerzenie zwykle zapisuje przeglądanie historię, nie zapisuj historii z okien incognito. Rozszerzenia mogą jednak zapisywać ustawienia ustawienia w dowolnym oknie – incognito lub nie.
Aby wykryć, czy okno jest w trybie incognito, sprawdź właściwość incognito
odpowiedniej
Obiekt tabs.Tab
lub windows.Window
.
function saveTabData(tab) {
if (tab.incognito) {
return;
} else {
chrome.storage.local.set({data: tab.url});
}
}