De activeTab-machtiging

De activeTab machtiging geeft een extensie tijdelijke toegang tot het momenteel actieve tabblad wanneer de gebruiker de extensie aanroept , bijvoorbeeld door op de browseractie 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.

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

Let op: Vanaf M72 wordt de activeTab machtiging verleend totdat de gebruiker naar een andere oorsprong navigeert. Dat wil zeggen dat als de gebruiker de extensie op https://example.com aanroept en vervolgens naar https://example.com/foo navigeert, de extensie toegang blijft houden tot de pagina. Als de gebruiker naar https://chromium.org navigeert, wordt de toegang ingetrokken.

Zonder activeTab :

Zonder activeTab

Met activeTab :

Met activeTab

Voorbeeld

Bekijk de voorbeeldextensie Page Redder :

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
  // No tabs or host permissions needed!
  console.log('Turning ' + tab.url + ' red!');
  chrome.tabs.executeScript({
    code: 'document.body.style.backgroundColor="red"'
  });
});

Motivatie

Overweeg een webknipselextensie met een browseractie en een contextmenu-item . Het kan zijn dat deze extensie alleen daadwerkelijk toegang tot tabbladen nodig heeft wanneer op de browseractie 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 activeTab machtiging 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 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 (in wezen verleent activeTab de tabs tijdelijk toestemming).
  • 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.

ActiveTab aanroepen

De volgende gebruikersgebaren schakelen activeTab :