مجوز activeTab، مجوز activeTab

هنگامی که کاربر برنامه افزودنی را فراخوانی می کند ، مجوز activeTab به یک برنامه افزودنی دسترسی موقت به برگه فعال فعلی می دهد - برای مثال با کلیک کردن بر روی عملکرد مرورگر آن. دسترسی به برگه تا زمانی که کاربر در آن صفحه است ادامه می‌یابد و زمانی که کاربر برگه را دور می‌زند یا می‌بندد لغو می‌شود.

این به عنوان جایگزینی برای بسیاری از استفاده‌های <all_urls> عمل می‌کند، اما هیچ پیام هشداری را در حین نصب نمایش نمی‌دهد:

توجه: از M72 به بعد، مجوز activeTab تا زمانی که کاربر به مبدأ دیگری هدایت شود اعطا می شود. یعنی اگر کاربر افزونه را در https://example.com فراخوانی کند و سپس به https://example.com/foo هدایت شود، افزونه همچنان به صفحه دسترسی خواهد داشت. اگر کاربر به https://chromium.org هدایت شود، دسترسی لغو می شود.

بدون activeTab :

بدون فعال تب

با activeTab :

با ActiveTab

مثال

پسوند نمونه 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"'
  });
});

انگیزه

یک برنامه افزودنی برش وب را در نظر بگیرید که دارای عملکرد مرورگر و آیتم منوی زمینه است . این برنامه افزودنی ممکن است تنها زمانی نیاز به دسترسی به برگه‌ها داشته باشد که روی عملکرد مرورگر آن کلیک می‌شود، یا زمانی که مورد منوی زمینه آن اجرا می‌شود.

بدون activeTab ، این برنامه افزودنی نیاز به درخواست دسترسی کامل و دائمی به هر وب‌سایت دارد، فقط برای اینکه اگر کاربر از آن فراخوانی کرد، بتواند کار خود را انجام دهد. این قدرت زیادی برای سپردن به چنین پسوند ساده ای است. و اگر برنامه افزودنی به خطر بیفتد، مهاجم به همه چیزهایی که برنامه افزودنی داشت دسترسی پیدا می کند.

در مقابل، یک برنامه افزودنی با مجوز activeTab فقط در پاسخ به یک حرکت واضح کاربر به یک برگه دسترسی پیدا می کند. اگر برنامه افزودنی به خطر بیفتد، مهاجم باید منتظر بماند تا کاربر قبل از دسترسی به برنامه افزودنی را فراخوانی کند. و این دسترسی فقط تا زمانی که برگه پیمایش یا بسته شود ادامه دارد.

آنچه ActiveTab اجازه می دهد

در حالی که مجوز activeTab برای یک برگه فعال است، یک برنامه افزودنی می تواند:

  • tabs.executeScript یا tabs.insertCSS را در آن برگه فراخوانی کنید.
  • URL، عنوان و فاویکون آن برگه را از طریق یک API که یک شیء tabs.Tab را برمی گرداند، دریافت کنید (در اصل، activeTab به طور موقت به tabs اجازه می دهد).
  • با استفاده از webRequest API، درخواست‌های شبکه را در برگه به ​​مبدا فریم اصلی برگه رهگیری کنید. برنامه افزودنی به طور موقت مجوزهای میزبان را برای مبدا قاب اصلی برگه دریافت می کند.

فراخوانی activeTab

حرکات کاربر زیر activeTab فعال می کند: