Deklarowanie uprawnień i ostrzeganie użytkowników

Zdolność rozszerzenia do uzyskiwania dostępu do stron internetowych i większości interfejsów API Chrome zależy od permissions. Uprawnienia powinny być ograniczone tylko do tych, które są niezbędne do działania danego elementu. Ograniczenie uprawnień określa możliwości rozszerzenia i ogranicza ryzyko włamania do danych czy rozszerzenie zostało przejęte przez atakującego. Chroń rozszerzenia i ich użytkowników, stosując uprawnień bezpośrednich, minimalnych i opcjonalnych.

Uporządkuj uprawnienia

Uprawnienia to znane ciągi znaków odwołujące się do interfejsu API Chrome lub wzorców dopasowania, które przyznają dostęp do co najmniej jednego hosta. Są one wymienione w pliku manifestu i określone jako wymagane uprawnienia lub opcjonalne uprawnienia.

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

Ogranicz wymagane uprawnienia tylko do tych, które są niezbędne do działania głównej funkcji rozszerzenia. An rozszerzenie nie powinno wymagać większych uprawnień, niż jest obecnie potrzebne; nie przewidujemy w przyszłości prosi o uprawnienia, które mogą być wymagane przy aktualizacjach.

Uprawnienia wymagane do korzystania z funkcji opcjonalnych powinny być zarejestrowane jako uprawnienia opcjonalne. Ten pozwala użytkownikom zdecydować, jaki poziom dostępu chcą zapewnić rozszerzenie i które funkcje są pożądane.

Zidentyfikuj wymagane uprawnienia

Proste rozszerzenie może wymagać wielu uprawnień i wyświetla się wiele uprawnień ostrzeżeń dotyczących instalacji. Użytkownicy z większym prawdopodobieństwem ufają rozszerzeniu, które ma ograniczone ostrzeżenia lub gdy wyjaśnimy im uprawnienia.

Ostrzeżenia o uprawnieniach rozszerzenia podczas instalacji

Określ główną funkcjonalność rozszerzenia i określ, jakie uprawnienia są do niego wymagane. Rozważ ustawienia funkcji jako opcjonalne, jeśli wymagają uprawnień z ostrzeżeniami.

Aktywowanie opcjonalnych uprawnień ze zdarzeniami

Główna funkcja przykładowego rozszerzenia opcjonalnych uprawnień zastępuje stronę nowej karty. Jedna z nich to wyświetlanie celu użytkownika na dany dzień. Ta funkcja wymaga tylko miejsca na dane bez ostrzeżenia.

Przycisk rozszerzenia, który włącza dodatkowe funkcje

Rozszerzenie ma dodatkową funkcję: w których wyświetlane są najpopularniejsze witryny użytkownika. Ta funkcja wymaga: uprawnienie topSites, które zawiera ostrzeżenie.

Ostrzeżenie dotyczące rozszerzenia interfejsu topSites API

opracowywanie funkcji zależnych od uprawnień z opcjonalnymi ostrzeżeniami oraz wprowadzanie tych; pozwala użytkownikom bezpłatnie zapoznać się z rozszerzeniem. Dodatkowo pozwala użytkownikom jeszcze bardziej dostosować sposób korzystania z rozszerzenia i zapewnić im możliwość i wyjaśniać ostrzeżenia.

Zastępowanie uprawnienia ActiveTab

Uprawnienie activeTab zapewnia tymczasowy dostęp do strony, w której znajduje się użytkownik, oraz zezwala aby używać uprawnienia "tabs" na bieżącej karcie. Zastępuje to potrzebę "<all_urls>" w wielu przypadkach i nie wyświetla ostrzeżenia o instalacji.

Bez aktywnej karty:

Interfejs uprawnień bez aktywnej karty

W przypadku funkcji ActiveTab:

Interfejs uprawnień z aktywną kartą

Uprawnienie activeTab przyznaje rozszerzeniu tymczasowy dostęp do aktualnie aktywnej karty, gdy użytkownik wywołuje rozszerzenie. Jeśli rozszerzenie zostanie przejęte, osoba przeprowadzająca atak będzie musiał poczekać. przed uzyskaniem dostępu przez użytkownika do wywołania rozszerzenia. Dostęp ten będzie obowiązywał do użytkownik przechodzi do danej karty lub ją zamyka.

Gdy uprawnienie activeTab jest włączone dla danej karty, rozszerzenie może:

  • Zadzwoń pod numer tabs.executeScript lub tabs.insertCSS na tej karcie.
  • Pobierz URL, tytuł i favikonę tej karty za pomocą interfejsu API, który zwraca obiekt tabs.Tab.
  • Przechwytywać żądania sieciowe na karcie do źródła głównej ramki karty za pomocą żądania webRequest API. Rozszerzenie tymczasowo otrzymuje uprawnienia hosta dotyczące źródła głównej ramki karty.

Te gesty umożliwiają korzystanie z usługi activeTab:

Zezwolenie na dostęp

Jeśli rozszerzenie potrzebuje dostępu do adresów URL file:// lub działa w trybie incognito, użytkownicy muszą: włącz dostęp do tych funkcji na stronie szczegółów rozszerzenia pod adresem chrome://extensions.

Zezwól na adresy URL plików i tryb incognito na stronie z informacjami o rozszerzeniu

Rozszerzenie może wykryć, czy zostało włączone w trybie incognito, wywołując połączenie extension.isAllowedIncognitoAccess() lub może działać na file:// adresach URL z parametrem extension.isAllowedFileSchemeAccess()

Informacje o uprawnieniach

Ostrzeżenia o uprawnieniach opisują możliwości zapewniane przez interfejs API użytkownikom rozszerzeń, ale niektóre z tych ostrzeżeń mogą nie być oczywiste na początku. Na przykład dodanie funkcji "tabs" powoduje wyświetlenie pozornie niepowiązanego ostrzeżenia: rozszerzenie może odczytywać przeglądanie aktywności. Interfejsu chrome.tabs API można używać tylko do otwierania nowych kart aby sprawdzić adres URL powiązany z każdą nowo otwartą kartą przy użyciu obiektów tabs.Tab.

Gdy to możliwe, zaimplementuj opcjonalne uprawnienia lub mniej zaawansowany interfejs API, aby uniknąć alarmu ostrzeżeniami.

Wyświetlanie ostrzeżeń

Jeśli rozszerzenie zostanie wczytane w postaci rozpakowanego pliku, nie pojawią się żadne ostrzeżenia o uprawnieniach. Aby wyświetlić ostrzeżenia o uprawnieniach rozszerzenia, otwórz chrome://extensions i upewnij się, że tryb programisty jest włączony i kliknij Spakuj ROZSZERZENIE.

Zaznaczono tryb programisty i kliknij Dodaj rozszerzenie

W polu Katalog główny rozszerzenia określ ścieżkę do folderu rozszerzenia, a następnie kliknij Przycisk Umieść rozszerzenie w pakiecie. W przypadku pakietu tworzonego po raz pierwszy zignoruj pole Klucz prywatny.

Określ ścieżkę rozszerzenia, a następnie kliknij Dodaj rozszerzenie

Chrome utworzy dwa pliki: .crx i .pem, które zawierają treść klucz prywatny.

Spakowane pliki rozszerzeń

Nie trać klucza prywatnego. Przechowuj plik .pem w bezpiecznym i bezpiecznym miejscu. będzie potrzebne do zaktualizowania rozszerzenia.

Zainstaluj plik .crx, upuszczając go na stronie Zarządzanie rozszerzeniem do Chrome.

Upuść plik, by zainstalować

Po usunięciu pliku .crx przeglądarka zapyta, czy można dodać rozszerzenie i go wyświetlić ostrzeżeniami.

Ostrzeżenie dotyczące rozszerzenia nowej karty

Uprawnienia z ostrzeżeniami

Uwaga: tabele uprawnień są aktualizowane zgodnie z zasadą możliwie najlepszej obsługi i mogą zawierać niewielkie rozbieżności. z bieżącymi ostrzeżeniami. Dodatkowo niektóre uprawnienia mogą nie wyświetlać ostrzeżeń po sparowaniu z inne uprawnienia. Na przykład ostrzeżenie "tabs" nie pojawi się, jeśli rozszerzenie prosi o "<all_urls>". Aby sprawdzić ostatnie ostrzeżenia dotyczące uprawnień rozszerzeń, postępuj zgodnie z instrukcjami czynności opisane w artykule Wyświetlanie ostrzeżeń.

Uprawnienie Opis Ostrzeżenie
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
Przyznaje rozszerzeniu dostęp do wszystkich hostów. Można uniknąć deklarowania uprawnień hosta przy użyciu polecenia uprawnienie activeTab. Odczytywanie i zmienianie wszystkich Twoich danych na odwiedzanych stronach
"https://HostName.com/" Przyznaje rozszerzeniu dostęp do: "https://HostName.com/". Można uniknąć deklarowania uprawnień hosta za pomocą uprawnienia activeTab. Odczytywanie i zmienianie Twoich danych na stronie HostName.com
"bookmarks" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.bookmarks. Odczytywanie i zmienianie zakładek
"clipboardRead" Wymagany, jeśli rozszerzenie używa identyfikatora document.execCommand('paste'). Odczytywanie danych, które kopiujesz i wklejasz
"clipboardWrite" Wskazuje, że rozszerzenie używa parametru document.execCommand('copy') lub document.execCommand('cut') Modyfikowanie danych, które kopiujesz i wklejasz
"contentSettings" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.contentSettings. Zmień ustawienia dotyczące stron internetowych dostęp do funkcji takich jak pliki cookie, JavaScript, wtyczki, geolokalizacja, mikrofon, kamera itp.
"debugger" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.debugger.
  • Uzyskiwanie dostępu do backendu debugera stron
  • Odczytywanie i zmienianie wszystkich Twoich danych na odwiedzanych stronach
"declarativeNetRequest" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.declarativeNetRequest. Blokowanie treści strony
"desktopCapture" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.desktopCapture. rejestrowanie zawartości ekranu,
"downloads" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.downloads. Zarządzanie pobranymi plikami
"geolocation" Zezwala rozszerzeniu na używanie interfejsu API geolokalizacji HTML5. bez pytania użytkownika o zgodę. Wykrywanie Twojej lokalizacji fizycznej
"history" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.history. Odczytywanie i zmienianie historii przeglądania
"management" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.management. Zarządzanie aplikacjami, rozszerzeniami i motywami
"nativeMessaging" Przyznaje rozszerzeniu dostęp do natywnego interfejsu API do obsługi wiadomości. Komunikowanie się ze współpracującymi aplikacjami natywnymi
"notifications" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.notifications. Wyświetlanie powiadomień
"pageCapture" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.pageCapture. Odczytywanie i zmienianie wszystkich Twoich danych na odwiedzanych stronach
"privacy" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.privacy. Zmienianie ustawień prywatności
"proxy" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.proxy. Odczytywanie i zmienianie wszystkich Twoich danych na odwiedzanych stronach
"system.storage" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.system.storage. Identyfikowanie i wyjmowanie urządzeń pamięci masowej
"tabCapture" Przyznaje rozszerzeniom dostęp do interfejsu API chrome.tabCapture. Odczytywanie i zmienianie wszystkich Twoich danych na odwiedzanych stronach
"tabs" Przyznaje rozszerzeniu dostęp do pól z podwyższonymi uprawnieniami obiektów Tab używanych przez kilka interfejsów API w tym chrome.tabs i chrome.windows. W w wielu przypadkach rozszerzenie nie będzie musiało deklarować uprawnień "tabs", aby korzystać z dla tych interfejsów API. Odczytywanie historii przeglądania
"topSites" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.topSites. Przeglądanie listy najczęściej odwiedzanych stron
"ttsEngine" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.ttsEngine. Czytanie całego tekstu mówionego przy użyciu syntezatora mowy
"webNavigation" Przyznaje rozszerzeniu dostęp do interfejsu API chrome.webNavigation. Odczytywanie historii przeglądania

Aktualizuj uprawnienia

Dodanie dodatkowych uprawnień do rozszerzenia może spowodować jego tymczasowe wyłączenie. Użytkownik będzie musiał włącz ją ponownie, jeśli wyrazisz zgodę na wszystkie nowe ostrzeżenia.

Jeśli użytkownik ręcznie zaktualizuje rozszerzenie, które zawiera teraz uprawnienie karty, ostrzeżenie na stronie zarządzania.

Uprawnienia do dodawania kart

Jeśli rozszerzenie zostanie zaktualizowane automatycznie, zostanie wyłączone, dopóki użytkownik nie wyrazi zgody na nowe uprawnień.

Rozszerzenie zostało wyłączone

Zgoda na uprawnienia

Aby tego uniknąć, ustaw nową funkcję jako opcjonalną i dodaj nowe uprawnienia do: optional_permissions w pliku manifestu.