توانایی یک برنامه افزودنی برای دسترسی به وبسایتها و اکثر APIهای Chrome توسط مجوزهای اعلام شده آن تعیین میشود. مجوزها باید فقط به آنچه برای عملکرد آن مورد نیاز است محدود شود. محدود کردن مجوزها، قابلیتهای یک برنامه افزودنی را ایجاد میکند و در صورت در معرض خطر قرار گرفتن برنامه افزودنی توسط یک مهاجم، نفوذ احتمالی به دادهها را کاهش میدهد. با اجرای مجوزهای صریح، حداقلی و اختیاری از افزونه ها و کاربران آنها محافظت کنید.
سازماندهی مجوزها
مجوزها رشتههای شناختهشدهای هستند که به یک Chrome API یا الگوهایی مطابقت دارند که به یک یا چند میزبان دسترسی میدهند. آنها در مانیفست فهرست شده و به عنوان مجوزهای لازم یا مجوزهای اختیاری مشخص شده اند.
{
"name": "Permissions Extension",
...
// required permissions
"permissions": [
"activeTab",
"contextMenus",
"storage"
],
// optional permissions
"optional_permissions": [
"topSites",
"http://www.developer.chrome.com/*"
],
...
"manifest_version": 2
}
مجوزهای مورد نیاز را فقط به آنچه برای عملکرد اصلی برنامه افزودنی لازم است محدود کنید. یک برنامه افزودنی نباید بیش از آنچه در حال حاضر نیاز دارد درخواست مجوز کند. با درخواست مجوزهایی که ممکن است با به روز رسانی ها مورد نیاز باشد، در آینده اثبات نکنید.
مجوزهای مورد نیاز برای ویژگی های اختیاری باید به عنوان مجوزهای اختیاری ثبت شوند. این به کاربران اجازه میدهد تصمیم بگیرند که چه میزان دسترسی به یک برنامه افزودنی ارائه میکنند و کدام ویژگیها مورد نظر هستند.
مجوزهای مورد نیاز را شناسایی کنید
یک برنامه افزودنی ساده ممکن است نیاز به درخواست چندین مجوز داشته باشد و بسیاری از مجوزها هشدارهایی را هنگام نصب نمایش می دهند. کاربران به احتمال بیشتری به یک برنامه افزودنی با اخطارهای محدود یا زمانی که مجوزها برای آنها توضیح داده می شود اعتماد می کنند.
عملکرد اصلی یک برنامه افزودنی و مجوزهای مورد نیاز برای آن را شناسایی کنید. در صورت نیاز به مجوزها با هشدار، ویژگیها را اختیاری کنید.
مجوزهای اختیاری را با رویدادها فعال کنید
عملکرد اصلی نمونه مجوزهای اختیاری صفحه برگه جدید را نادیده می گیرد. یکی از ویژگی ها نمایش هدف روز کاربر است. این ویژگی فقط به مجوز ذخیره سازی نیاز دارد که شامل هشدار نیست.
افزونه یک ویژگی اضافی دارد. نمایش سایت های برتر کاربر این ویژگی به مجوز topSites نیاز دارد که دارای یک هشدار است.
توسعه ویژگیهایی که به مجوزها با اخطارها بهعنوان اختیاری متکی هستند و معرفی آن ویژگیها بهطور ارگانیک به کاربران امکان معرفی بدون خطر برنامه افزودنی را میدهد. علاوه بر این، این به کاربران اجازه می دهد تا تجربه خود را با افزونه سفارشی کنند و فرصتی برای توضیح هشدارها ایجاد می کند.
مجوز activeTab را جایگزین کنید
مجوز activeTab
به سایتی که کاربر در آن است دسترسی موقت می دهد و به برنامه افزودنی اجازه می دهد از مجوز "tabs"
در برگه فعلی استفاده کند. در بسیاری از موارد نیاز به "<all_urls>"
را جایگزین می کند و هیچ هشداری در هنگام نصب نمایش نمی دهد.
بدون فعال تب:
با فعال تب:
هنگامی که کاربر برنامه افزودنی را فراخوانی می کند، مجوز activeTab
به یک برنامه افزودنی دسترسی موقت به برگه فعال فعلی اعطا می کند. اگر برنامه افزودنی به خطر بیفتد، مهاجم باید منتظر بماند تا کاربر قبل از دسترسی به برنامه افزودنی را فراخوانی کند و این دسترسی فقط تا زمانی که برگه پیمایش یا بسته شود دوام خواهد داشت.
در حالی که مجوز activeTab
برای یک برگه فعال است، یک برنامه افزودنی می تواند:
-
tabs.executeScript
یاtabs.insertCSS
را در آن برگه فراخوانی کنید. - URL، عنوان و فاویکون آن برگه را از طریق API دریافت کنید که یک شیء
tabs.Tab
را برمی گرداند. - با استفاده از webRequest API، درخواستهای شبکه را در برگه به مبدا فریم اصلی برگه رهگیری کنید. برنامه افزودنی به طور موقت مجوزهای میزبان را برای مبدا قاب اصلی برگه دریافت می کند.
حرکات کاربر زیر activeTab
فعال می کند:
- اجرای یک عمل مرورگر
- اجرای یک عمل صفحه
- اجرای یک آیتم منوی زمینه
- اجرای میانبر صفحه کلید از دستورات API
- پذیرش پیشنهاد از omnibox API
اجازه دسترسی
اگر یک برنامه افزودنی نیاز به دسترسی به نشانیهای اینترنتی file://
یا در حالت ناشناس کار کند، کاربران باید دسترسی به آن ویژگیها را در صفحه جزئیات برنامه افزودنی در chrome://extensions فعال کنند.
یک برنامه افزودنی میتواند تشخیص دهد که در حالت ناشناس با فراخوانی extension.isAllowedIncognitoAccess()
فعال است یا میتواند روی URLهای file://
با extension.isAllowedFileSchemeAccess()
اجرا شود.
درک مجوزها
هشدارهای مجوز برای توصیف قابلیتهای اعطا شده توسط یک API به کاربران برنامه افزودنی وجود دارد، اما برخی از این هشدارها ممکن است در ابتدا واضح نباشند. به عنوان مثال، افزودن مجوز "tabs"
منجر به یک هشدار به ظاهر نامرتبط می شود: برنامه افزودنی می تواند فعالیت مرور شما را بخواند . اگرچه ممکن است از chrome.tabs
API فقط برای باز کردن برگههای جدید استفاده شود، اما همچنین میتوان از آن برای مشاهده URL مرتبط با هر برگه تازه بازشده با استفاده از اشیاء Tabs.Tab آنها استفاده کرد.
در صورت امکان، مجوزهای اختیاری یا یک API کمتر قدرتمند را برای جلوگیری از هشدارهای هشدار دهنده اجرا کنید.
مشاهده هشدارها
اگر پسوندی به عنوان یک فایل بسته بندی نشده بارگیری شود، هیچ هشدار مجوزی نمایش داده نخواهد شد. برای مشاهده اخطارهای مجوز یک برنامه افزودنی، به chrome://extensions
بروید، مطمئن شوید که حالت برنامهنویس فعال است و روی PACK EXTENSION کلیک کنید.
مسیر پوشه برنامه افزودنی را در قسمت دایرکتوری ریشه برنامه افزودنی مشخص کنید سپس روی دکمه بسته افزودنی کلیک کنید. فیلد کلید خصوصی را برای یک بسته برای اولین بار نادیده بگیرید.
Chrome دو فایل ایجاد میکند، یک فایل .crx
و یک فایل .pem
که حاوی کلید خصوصی برنامه افزودنی است.
کلید خصوصی را گم نکنید! فایل .pem
را در مکانی مخفی و امن نگهداری کنید. برای به روز رسانی برنامه افزودنی مورد نیاز خواهد بود.
فایل .crx
را با انداختن آن در صفحه مدیریت برنامه افزودنی Chrome نصب کنید.
پس از انداختن فایل .crx
مرورگر از شما می پرسد که آیا می توان پسوند را اضافه کرد و هشدارها را نمایش می دهد.
مجوزها با اخطار
توجه: جداول مجوزها بر اساس بهترین تلاش به روز می شوند و ممکن است دارای تناقضات جزئی با هشدارهای فعلی باشند. علاوه بر این، برخی از مجوزها ممکن است هنگام جفت شدن با مجوزهای دیگر، هشدارها را نشان ندهند. برای مثال، اگر برنامه افزودنی "<all_urls>"
نیز درخواست کند، اخطار "tabs"
نشان داده نخواهد شد. برای تأیید آخرین هشدارهای نشان داده شده برای مجوزهای برنامه افزودنی، مراحل مشاهده هشدارها را دنبال کنید.
اجازه | توضیحات | هشدار |
---|---|---|
| به برنامه افزودنی دسترسی به همه هاست ها می دهد. ممکن است با استفاده از مجوز activeTab از اعلام هر گونه مجوز میزبان اجتناب شود. | تمام داده های خود را در وب سایت هایی که بازدید می کنید بخوانید و تغییر دهید |
"https://HostName.com/" | به برنامه افزودنی اجازه دسترسی به "https://HostName.com/" می دهد. ممکن است با استفاده از مجوز activeTab از اعلام هر گونه مجوز میزبان اجتناب شود. | اطلاعات خود را در HostName.com بخوانید و تغییر دهید |
"bookmarks" | به برنامه افزودنی شما به API chrome.bookmarks دسترسی می دهد. | بوکمارک های خود را بخوانید و تغییر دهید |
"clipboardRead" | اگر برنامه افزودنی از document.execCommand('paste') استفاده کند، لازم است. | دادههایی را که کپی و جایگذاری میکنید بخوانید |
"clipboardWrite" | نشان می دهد که پسوند از document.execCommand('copy') یا document.execCommand('cut') استفاده می کند. | دادههایی را که کپی و جایگذاری میکنید تغییر دهید |
"contentSettings" | به برنامه افزودنی شما اجازه دسترسی به chrome.contentSettings API می دهد. | تنظیمات خود را تغییر دهید که دسترسی وب سایت ها به ویژگی هایی مانند کوکی ها، جاوا اسکریپت، پلاگین ها، موقعیت جغرافیایی، میکروفون، دوربین و غیره را کنترل می کند. |
"debugger" | به برنامه افزودنی شما به API chrome.debugger دسترسی می دهد. |
|
"declarativeNetRequest" | به برنامه افزودنی شما به chrome.declarativeNetRequest API دسترسی می دهد. | محتوای صفحه را مسدود کنید |
"desktopCapture" | به برنامه افزودنی شما به chrome.desktopCapture API دسترسی می دهد. | محتوای صفحه خود را ضبط کنید |
"downloads" | به برنامه افزودنی شما به API chrome.downloads دسترسی می دهد. | دانلودهای خود را مدیریت کنید |
"geolocation" | به برنامه افزودنی اجازه می دهد تا از API مکان جغرافیایی HTML5 بدون درخواست اجازه از کاربر استفاده کند. | مکان فیزیکی خود را شناسایی کنید |
"history" | به برنامه افزودنی شما به API chrome.history دسترسی می دهد. | تاریخچه مرور خود را بخوانید و تغییر دهید |
"management" | به برنامه افزودنی اجازه دسترسی به chrome.management API می دهد. | برنامهها، برنامههای افزودنی و تمهای خود را مدیریت کنید |
"nativeMessaging" | به برنامه افزودنی امکان دسترسی به API پیامرسانی بومی را میدهد. | با برنامه های بومی همکار ارتباط برقرار کنید |
"notifications" | به برنامه افزودنی شما به API chrome.notifications دسترسی می دهد. | نمایش اعلان ها |
"pageCapture" | به برنامه افزودنی اجازه دسترسی به chrome.pageCapture API می دهد. | تمام داده های خود را در وب سایت هایی که بازدید می کنید بخوانید و تغییر دهید |
"privacy" | به برنامه افزودنی دسترسی به chrome.privacy API می دهد. | تنظیمات مربوط به حریم خصوصی خود را تغییر دهید |
"proxy" | به برنامه افزودنی اجازه دسترسی به chrome.proxy API می دهد. | تمام داده های خود را در وب سایت هایی که بازدید می کنید بخوانید و تغییر دهید |
"system.storage" | به برنامه افزودنی اجازه دسترسی به chrome.system.storage API می دهد. | دستگاه های ذخیره سازی را شناسایی و خارج کنید |
"tabCapture" | به برنامه های افزودنی اجازه دسترسی به chrome.tabCapture API را می دهد. | تمام داده های خود را در وب سایت هایی که بازدید می کنید بخوانید و تغییر دهید |
"tabs" | به افزونه اجازه دسترسی به فیلدهای ممتاز اشیاء Tab را می دهد که توسط چندین API از جمله chrome.tabs و chrome.windows استفاده می شوند. در بسیاری از شرایط، برنامه افزودنی برای استفاده از این APIها نیازی به اعلام مجوز "tabs" ندارد. | تاریخچه مرور خود را بخوانید |
"topSites" | به برنامه افزودنی اجازه دسترسی به chrome.topSites API می دهد. | لیستی از وب سایت های پربازدید خود را بخوانید |
"ttsEngine" | به برنامه افزودنی اجازه دسترسی به chrome.ttsEngine API می دهد. | تمام متن گفته شده را با استفاده از گفتار ترکیبی بخوانید |
"webNavigation" | به برنامه افزودنی اجازه دسترسی به chrome.webNavigation API می دهد. | تاریخچه مرور خود را بخوانید |
به روز رسانی مجوزها
به روز رسانی یک برنامه افزودنی با مجوزهای اضافی ممکن است به طور موقت آن را غیرفعال کند. کاربر پس از موافقت با اخطارهای جدید باید آن را دوباره فعال کند.
اگر کاربر به صورت دستی افزونهای را که اکنون شامل مجوز برگهها است، بهروزرسانی کند، در صفحه مدیریت اخطاری دریافت میکند.
اگر برنامه افزودنی به طور خودکار به روز شود، تا زمانی که کاربر با مجوزهای جدید موافقت نکند، غیرفعال می شود.
با اختیاری کردن ویژگی جدید و افزودن بهروزرسانیهای مجوز جدید به optional_permissions
در مانیفست میتوان از این امر جلوگیری کرد.