"activeTab" izni

"activeTab" izni, Kullanıcı uzantıyı çalır (örneğin, işlemini tıklayarak). Sekmeye erişim Kullanıcı ilgili sayfadayken geçerli olur ve kullanıcı sayfadan ayrıldığında veya sekmeyi kapattığında iptal edilir. Örneğin, kullanıcı uzantıyı https://example.com adresinde çağırır ve ardından https://example.com/foo adresine gittiğinde, uzantı sayfaya erişmeye devam eder. Öğe 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 hiçbir uyarı mesajı göstermez kurulum sırasında:

"activeTab" olmadan:

ActiveTab olmadan

"activeTab" ile:

ActiveTab içeren

Örnek

Page Redder örnek uzantısına bakın:

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

Bir işlem ve bir içerik menüsü öğesi içeren bir web kırpma uzantısını düşünün. Bu uzantının sekmelere yalnızca işlemi tıklandığında veya bağlam menüsü öğesi yürütüldüğünden emin olun.

"activeTab" olmasaydı bu uzantının her web sitesine tam, kalıcı erişim istemesi gerekirdi. Böylece, kullanıcı çağrılması durumunda işini yapabilsin. Çok fazla devreye sokabilecek güce sahip olamaz. 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ı, karşılık olarak yalnızca bir sekmeye erişim elde eder açık bir kullanıcı hareketine dönüştürmenizi sağlar. Uzantının güvenliği ihlal edilirse saldırgan, kullanıcının erişim elde etmeden önce uzantıyı çağırması gerekir. Bu erişim yalnızca sekme açılana kadar devam eder. veya kapalıdır.

"activeTab" nedir? izin verir

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

  • "scripting" izini de beyan edilmişse (yukarıdaki örnekte olduğu gibi) scripting.insertCSS() veya scripting.executeScript() numaralı telefonu arayın.
  • Söz konusu sekmenin URL'sini, başlığını ve site simgesini tabs.Tab nesnesi döndüren bir API aracılığıyla alın (Aslında "activeTab", geçici olarak ana makine izni verir).
  • webRequest'i kullanarak sekmenin ana çerçeve kaynağına giden ağ isteklerine müdahale edin API'ye gidin. Uzantı, sekmenin ana çerçeve kaynağı için geçici olarak ana makine izinlerini alır.

ActiveTab çağrılıyor

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