De "actieveTab" toestemming

De machtiging "activeTab" geeft een extensie tijdelijke toegang tot het momenteel actieve tabblad wanneer de gebruiker de extensie aanroept , bijvoorbeeld door op de actie ervan te klikken. De toegang tot het tabblad duurt zolang de gebruiker zich op die pagina bevindt, en wordt ingetrokken wanneer de gebruiker weg navigeert of het tabblad sluit. Als de gebruiker bijvoorbeeld de extensie aanroept op https://example.com en vervolgens naar https://example.com/foo navigeert, blijft de extensie toegang hebben tot de pagina. Als de gebruiker naar https://chromium.org navigeert, wordt de toegang ingetrokken.

Dit dient als alternatief voor veel gebruik van "<all_urls>" , maar geeft tijdens de installatie geen waarschuwingsbericht weer:

Zonder "activeTab" :

Zonder activeTab

Met "activeTab" :

Met activeTab

Voorbeeld

Bekijk de voorbeeldextensie Page Redder :

manifest.json:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab",
    "scripting"
  ],
  "background": {
    "service_worker": "service-worker.js"
  },
  "action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 3
}

servicemedewerker:

function reddenPage() {
  document.body.style.backgroundColor = 'red';
}

chrome.action.onClicked.addListener((tab) => {
  if (!tab.url.includes('chrome://')) {
    chrome.scripting.executeScript({
      target: { tabId: tab.id },
      func: reddenPage
    });
  }
});

Motivatie

Overweeg een webknipselextensie die een actie en een contextmenu-item heeft. Deze extensie heeft mogelijk pas echt toegang tot tabbladen nodig wanneer op de actie wordt geklikt of wanneer het contextmenu-item wordt uitgevoerd.

Zonder "activeTab" zou deze extensie volledige, permanente toegang tot elke website moeten aanvragen, zodat deze zijn werk zou kunnen doen als de gebruiker er toevallig een beroep op zou doen. Dit is veel kracht om aan zo'n eenvoudige uitbreiding toe te vertrouwen. En als de extensie ooit wordt gecompromitteerd, krijgt de aanvaller toegang tot alles wat de extensie bezat.

Een extensie met de machtiging "activeTab" krijgt daarentegen alleen toegang tot een tabblad als reactie op een expliciet gebruikersgebaar. 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 er door het tabblad wordt genavigeerd of wordt gesloten.

Wat "activeTab" toestaat

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

ActiveTab aanroepen

De volgende gebruikersgebaren schakelen de machtiging "activeTab" in: