Izin activeTab

Izin activeTab memberikan akses sementara kepada ekstensi ke tab yang sedang aktif ketika pengguna memanggil ekstensi, misalnya dengan mengklik tindakan browser. Akses ke tab berlangsung saat pengguna berada di halaman tersebut, dan dicabut saat pengguna keluar atau menutup tab.

Ini berfungsi sebagai alternatif untuk banyak penggunaan <all_urls>, tetapi tidak menampilkan pesan peringatan selama penginstalan:

Catatan: Mulai M72 dan seterusnya, izin activeTab akan diberikan hingga pengguna membuka asal yang berbeda. Artinya, jika pengguna memanggil ekstensi di https://example.com, lalu membuka https://example.com/foo, ekstensi tersebut akan terus memiliki akses ke halaman. Jika pengguna membuka https://chromium.org, akses akan dicabut.

Tanpa activeTab:

Tanpa activeTab

Dengan activeTab:

Dengan activeTab

Contoh

Lihat contoh ekstensi 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"'
  });
});

Motivasi

Pertimbangkan ekstensi kliping web yang memiliki tindakan browser dan item menu konteks. Ekstensi ini mungkin hanya benar-benar perlu mengakses tab saat tindakan browser diklik, atau saat item menu konteksnya dieksekusi.

Tanpa activeTab, ekstensi ini perlu meminta akses penuh dan persisten ke setiap situs, hanya agar dapat melakukan fungsinya jika kebetulan dipanggil oleh pengguna. Ini adalah kekuatan besar untuk dipercayakan pada ekstensi yang begitu sederhana. Dan jika ekstensi pernah disusupi, penyerang akan mendapatkan akses ke semua yang dimiliki ekstensi itu.

Sebaliknya, ekstensi dengan izin activeTab hanya mendapatkan akses ke tab sebagai respons terhadap gestur pengguna yang eksplisit. Jika ekstensi disusupi, penyerang harus menunggu pengguna memanggil ekstensi sebelum mendapatkan akses. Akses tersebut hanya berlaku hingga tab dibuka atau ditutup.

Yang diizinkan activeTab

Saat izin activeTab diaktifkan untuk tab, ekstensi dapat:

  • Panggil tabs.executeScript atau tabs.insertCSS pada tab tersebut.
  • Dapatkan URL, judul, dan favicon untuk tab tersebut melalui API yang menampilkan objek tabs.Tab (pada dasarnya, activeTab memberikan izin tabs untuk sementara).
  • Intersep permintaan jaringan di tab ke asal frame utama tab menggunakan webRequest API. Ekstensi sementara waktu mendapatkan izin host untuk asal frame utama tab.

Memanggil activeTab

Gestur pengguna berikut mengaktifkan activeTab: