"activeTab" izni

"activeTab" izni, kullanıcı uzantıyı çağırdığında (örneğin, işlemi tıklayarak) bir uzantının o anda etkin olan sekmeye geçici olarak erişmesini sağlar. Sekmeye erişim, kullanıcı bu sayfadayken sona erer ve kullanıcı başka bir yere gittiğinde veya sekmeyi kapattığında iptal edilir. Örneğin, kullanıcı https://example.com'da uzantıyı çağırır ve ardından https://example.com/foo adresine giderse uzantı, sayfaya erişmeye devam eder. Kullanıcı https://chromium.org adresine giderse erişim iptal edilir.

Bu, "<all_urls>" işlevinin birçok kullanımı için alternatif işlevi görür ancak yükleme sırasında uyarı mesajı görüntülemez:

"activeTab" olmadan:

ActiveTab olmadan

"activeTab" ile:

ActiveTab ile

Örnek

Page Redder örnek uzantısını inceleyin:

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
}

hizmet çalışanı:

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
    });
  }
});

Motivasyon

İşlem ve içerik menüsü öğesi içeren bir web kırpma uzantısı düşünün. Bu uzantının gerçekten yalnızca eylemi tıklandığında veya içerik menüsü öğesi yürütüldüğünde sekmelere erişmesi gerekebilir.

"activeTab" olmadan, bu uzantının kullanıcı tarafından çağrılması durumunda işini yapabilmesi için her web sitesine tam ve kalıcı erişim istemesi gerekir. Böyle basit bir uzantıya emanet etmek çok büyük bir güç. Uzantının güvenliği ihlal edilirse saldırgan, uzantının sahip olduğu her şeye erişebilir.

Öte yandan, "activeTab" iznine sahip bir uzantı, yalnızca açık bir kullanıcı hareketine yanıt olarak bir sekmeye erişim elde eder. Uzantının güvenliği ihlal edilirse saldırganın, erişim elde etmeden önce kullanıcının uzantıyı çağırmasını beklemesi gerekir. Bu erişim, yalnızca sekmede gezininceye veya kapatılana kadar devam eder.

"activeTab" nelere izin verir?

Bir sekme için "activeTab" izni etkinken uzantılar:

  • "scripting" izni de beyan edilmişse bu sekmede scripting.insertCSS() veya scripting.executeScript() numarasını arayın (yukarıdaki örnekte olduğu gibi).
  • tabs.Tab nesnesi döndüren bir API aracılığıyla bu sekmenin URL'sini, başlığını ve site simgesini alın (esasen "activeTab" geçici olarak ana makine izni verir).
  • webRequest API'sini kullanarak sekmedeki ağ isteklerine sekmenin ana çerçeve kaynağına müdahale edin. Uzantı, sekmenin ana çerçeve kaynağı için geçici olarak ana makine izinleri alır.

ActiveTab çağrılıyor

Aşağıdaki kullanıcı hareketleri, "activeTab" iznini etkinleştirir: