هنگامی که کاربر برنامه افزودنی را فراخوانی می کند ، مجوز activeTab
به یک برنامه افزودنی دسترسی موقت به برگه فعال فعلی می دهد - برای مثال با کلیک کردن بر روی عملکرد مرورگر آن. دسترسی به برگه تا زمانی که کاربر در آن صفحه است ادامه مییابد و زمانی که کاربر برگه را دور میزند یا میبندد لغو میشود.
این به عنوان جایگزینی برای بسیاری از استفادههای <all_urls>
عمل میکند، اما هیچ پیام هشداری را در حین نصب نمایش نمیدهد:
توجه: از M72 به بعد، مجوز activeTab
تا زمانی که کاربر به مبدأ دیگری هدایت شود اعطا می شود. یعنی اگر کاربر افزونه را در https://example.com فراخوانی کند و سپس به https://example.com/foo هدایت شود، افزونه همچنان به صفحه دسترسی خواهد داشت. اگر کاربر به https://chromium.org هدایت شود، دسترسی لغو می شود.
بدون 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
فعال می کند:
- اجرای یک عمل مرورگر
- اجرای یک عمل صفحه
- اجرای یک آیتم منوی زمینه
- اجرای میانبر صفحه کلید از دستورات API
- پذیرش پیشنهاد از omnibox API