يتم تحديد قدرة الإضافة على الوصول إلى المواقع الإلكترونية ومعظم واجهات برمجة تطبيقات Chrome من خلال تعريفها الأذونات. ويجب أن تقتصر الأذونات على ما هو مطلوب فقط لأداء وظائفها. يؤدي الحدّ من الأذونات إلى إنشاء إمكانات الإضافة والحدّ من حدوث التوغل المحتمل للبيانات. إذا تم اختراق الإضافة بواسطة مهاجم. حماية الإضافات ومستخدميها من خلال تنفيذ أذونات صريحة وصغيرة واختيارية.
تنظيم الأذونات
الأذونات هي سلاسل معروفة تشير إلى واجهة برمجة تطبيقات Chrome أو مطابقة الأنماط التي تمنح إمكانية الوصول إلى مضيف واحد أو أكثر. يتم إدراجها في البيان وتحديد كأذونات مطلوبة أو الأذونات الاختيارية.
{
"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:
يمنح الإذن activeTab
الإضافة إمكانية الوصول المؤقت إلى علامة التبويب النشطة حاليًا عند
يستدعي المستخدم الإضافة. إذا تعرضت الإضافة للاختراق، سيحتاج المهاجم إلى الانتظار.
يستدعي المستخدم الإضافة قبل الحصول على إذن الوصول، ويستمر هذا الوصول فقط حتى
عند الانتقال إلى علامة التبويب أو إغلاقها.
عندما يكون إذن activeTab
مفعَّلاً لإحدى علامات التبويب، يمكن للإضافة تنفيذ ما يلي:
- يمكنك الاتصال بالرقم
tabs.executeScript
أوtabs.insertCSS
من خلال علامة التبويب هذه. - احصل على عنوان URL والعنوان والرمز المفضّل لعلامة التبويب هذه من خلال واجهة برمجة تطبيقات تعرض عنصر
tabs.Tab
. - اعتراض طلبات الشبكة في علامة التبويب إلى مصدر الإطار الرئيسي لعلامة التبويب باستخدام webRequest واجهة برمجة التطبيقات. تحصل الإضافة مؤقتًا على أذونات المضيف بالنسبة إلى مصدر الإطار الرئيسي لعلامة التبويب.
تعمل إيماءات المستخدم التالية على تفعيل activeTab
:
- تنفيذ إجراء في المتصفّح
- تنفيذ إجراء على الصفحة
- تنفيذ عنصر في قائمة السياق
- تنفيذ اختصار لوحة مفاتيح من commands API
- قبول اقتراح من واجهة برمجة التطبيقات للمربّع المتعدد الاستخدامات
جارٍ السماح بالوصول
إذا كانت إحدى الإضافات تحتاج إلى الوصول إلى file://
عنوان URL أو كانت تعمل في وضع التصفّح المتخفي، سيكون على المستخدمين:
تفعيل إمكانية الوصول إلى هذه الميزات داخل صفحة تفاصيل الإضافة على chrome://extensions.
يمكن للإضافة اكتشاف ما إذا كان قد تم تفعيلها في وضع التصفح المتخفي من خلال الاتصال
extension.isAllowedIncognitoAccess()
أو يمكن عرضها على file://
من عناوين URL ذات
extension.isAllowedFileSchemeAccess()
فهم الأذونات
توجد تحذيرات بشأن الأذونات لوصف الإمكانات التي تمنحها واجهة برمجة التطبيقات لمستخدمي الإضافة، ولكن
قد لا تكون بعض هذه التحذيرات واضحة في البداية. على سبيل المثال، قد تؤدي إضافة "tabs"
ينتج عن هذه الإضافة تحذير يبدو غير ذي صلة: يمكن للإضافة قراءة التصفُّح
. يمكن استخدام واجهة برمجة التطبيقات chrome.tabs
لفتح علامات التبويب الجديدة فقط، ولكن يمكن استخدامها أيضًا.
للاطّلاع على عنوان URL المرتبط بكل علامة تبويب تم فتحها حديثًا باستخدام كائنات tabs.Tab.
عند الإمكان، نفِّذ أذونات اختيارية أو واجهة برمجة تطبيقات أقل فعالية لتجنُّب الأحداث المزعجة. الجديدة.
عرض التحذيرات
لن يتم عرض أي تحذيرات بشأن الأذونات في حال تحميل إضافة كملف تم فك ضغطه. لعرض
تحذيرات بشأن أذونات الإضافة، يُرجى الانتقال إلى chrome://extensions
والتأكد من تفعيل وضع مطوّر البرامج.
وانقر على حزمة الإضافة.
حدِّد المسار إلى مجلد الإضافة في حقل الدليل الجذري للإضافة، ثم انقر على زر حزمة الإضافة. تجاهَل حقل المفتاح الخاص في حزمة المرة الأولى.
سينشئ Chrome ملفَّين، ملف .crx
وملف .pem
يتضمّن الملف
الخاص.
لا تفقد المفتاح الخاص. الاحتفاظ بملف ".pem
" في مكان سري وآمن هَتْكُونْ
مطلوبة من أجل تحديث الإضافة.
ثبِّت ملف .crx
من خلال إفلاته في صفحة إدارة إضافات Chrome.
بعد إفلات ملف .crx
، سيسألك المتصفّح عمّا إذا كان من الممكن إدراج الإضافة وعرضها.
الجديدة.
الأذونات التي تتضمّن تحذيرات
ملاحظة: يتم تعديل جداول الأذونات وفقًا لأفضل الإمكانيات المتاحة، وقد تحتوي على تناقضات طفيفة.
مع التحذيرات الحالية بالإضافة إلى ذلك، قد لا تعرض بعض الأذونات تحذيرات عند إقرانها بـ
أذونات أخرى. على سبيل المثال، لن يظهر التحذير "tabs"
إذا كانت الإضافة أيضًا.
يطلب "<all_urls>"
. للتحقّق من أحدث التحذيرات الظاهرة لأذونات الإضافات، اتّبِع الخطوات التالية:
الخطوات في عرض التحذيرات.
الإذن | الوصف | تحذير |
---|---|---|
|
يمنح الإضافة إذن الوصول إلى جميع المضيفين. قد يكون من الممكن تجنُّب الإعلان عن أي أذونات مضيف باستخدام الإذن activeTab. | قراءة جميع بياناتك وتغييرها على المواقع الإلكترونية التي تزورها |
"https://HostName.com/" |
يمنح الإضافة إذن الوصول إلى ""https://HostName.com/" ". وقد يكون من الممكن تجنُّب الإعلان عن
أذونات المضيف باستخدام إذن activeTab. |
قراءة بياناتك وتغييرها في HostName.com |
"bookmarks" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة التطبيقات chrome.bookmarks. | قراءة الإشارات المرجعية وتغييرها |
"clipboardRead" |
مطلوبة إذا كانت الإضافة تستخدم السمة document.execCommand('paste') . |
قراءة البيانات التي يتم نسخها ولصقها |
"clipboardWrite" |
تشير إلى أن الإضافة تستخدم السمة document.execCommand('copy') أو
document.execCommand('cut') |
تعديل البيانات التي يتم نسخها ولصقها |
"contentSettings" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة التطبيقات chrome.contentSettings. | تغيير الإعدادات التي تتحكم في المواقع الإلكترونية الوصول إلى ميزات مثل ملفات تعريف الارتباط وJavaScript والمكونات الإضافية رصد الموقع الجغرافي أو الميكروفون أو الكاميرا أو غير ذلك |
"debugger" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة التطبيقات chrome.debugger. |
|
"declarativeNetRequest" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة تطبيقات chrome.declarativeNetRequest. | حظر محتوى الصفحة |
"desktopCapture" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة التطبيقات chrome.desktopCapture. | التقاط محتوى شاشتك |
"downloads" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة التطبيقات chrome.downloads. | إدارة عمليات التنزيل |
"geolocation" |
السماح للإضافة باستخدام geolocation API في HTML5 بدون طلب إذن من المستخدم. | رصد موقعك الجغرافي |
"history" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة تطبيقات chrome.history. | قراءة سجلّ التصفُّح وتغييره |
"management" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة تطبيقات chrome.management. | إدارة التطبيقات والإضافات والمظاهر |
"nativeMessaging" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة تطبيقات المراسلة مع التطبيقات الأصلية. | التواصل مع التطبيقات التعاونية الأصلية |
"notifications" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة التطبيقات chrome.notifications. | عرض الإشعارات |
"pageCapture" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة تطبيقات chrome.pageCapture. | قراءة جميع بياناتك وتغييرها على المواقع الإلكترونية التي تزورها |
"privacy" |
لمنح الإضافة إمكانية الوصول إلى واجهة برمجة تطبيقات chrome.privacy | تغيير الإعدادات المتعلقة بالخصوصية |
"proxy" |
لمنح الإضافة إمكانية الوصول إلى واجهة برمجة تطبيقات chrome.proxy. | قراءة جميع بياناتك وتغييرها على المواقع الإلكترونية التي تزورها |
"system.storage" |
لمنح الإضافة إذن الوصول إلى واجهة برمجة تطبيقات chrome.system.storage. | تحديد أجهزة التخزين وإخراجها |
"tabCapture" |
يمنح الإضافات إمكانية الوصول إلى واجهة برمجة تطبيقات chrome.tabCapture. | قراءة جميع بياناتك وتغييرها على المواقع الإلكترونية التي تزورها |
"tabs" |
يمنح الإضافة إمكانية الوصول إلى الحقول المميزة لكائنات Tab التي تستخدمها العديد من واجهات برمجة التطبيقات.
بما في ذلك chrome.tabs وchrome.windows. ضِمن
العديد من الحالات التي لن تحتاج فيها الإضافة إلى تقديم بيان عن إذن ""tabs" " للاستفادة من
لواجهات برمجة التطبيقات هذه. |
قراءة سجلّ التصفُّح |
"topSites" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة تطبيقات chrome.topSites. | قراءة قائمة بالمواقع الإلكترونية التي يكثر التردد عليها |
"ttsEngine" |
يمنح الإضافة إمكانية الوصول إلى واجهة برمجة تطبيقات chrome.ttsEngine. | قراءة كل النص المنطوق باستخدام الكلام المركَّب |
"webNavigation" |
لمنح الإضافة إمكانية الوصول إلى واجهة برمجة تطبيقات chrome.webNavigation. | قراءة سجلّ التصفُّح |
تحديث الأذونات
قد يؤدي تحديث إضافة بأذونات إضافية إلى إيقافها مؤقتًا. سيتعين على المستخدم يمكنك إعادة تفعيله بعد الموافقة على أي تحذيرات جديدة.
إذا عدَّل المستخدم إضافة تتضمّن الآن إذن علامات التبويب يدويًا، سيحصل على تحذير في صفحة الإدارة.
إذا تم تحديث الإضافة تلقائيًا، فسيتم إيقافها إلى أن يوافق المستخدم على الأذونات.
لتجنُّب حدوث ذلك، يمكنك جعل الميزة الجديدة اختيارية وإضافة تعديلات جديدة على الأذونات إلى
optional_permissions
في البيان.