بيان الأذونات وتحذير المستخدمين

يتم تحديد قدرة الإضافة على الوصول إلى المواقع الإلكترونية ومعظم واجهات برمجة تطبيقات 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 الذي يتضمّن تحذيرًا.

تحذير إضافة لواجهة برمجة تطبيقات TopSites

إنّ تطوير ميزات تعتمد على الأذونات مع تحذيرات اختيارية وتقديم هذه الميزات بشكل طبيعي يمنح المستخدمين مقدمة خالية من المخاطر للإضافة. بالإضافة إلى ذلك، يتيح ذلك للمستخدمين تخصيص تجربتهم بشكل أكبر باستخدام إحدى الإضافات ويمنحهم فرصة لشرح التحذيرات.

استبدال إذن ActiveTab

يمنح الإذن activeTab إذن الوصول المؤقت إلى الموقع الإلكتروني الذي يستخدمه المستخدم ويسمح للإضافة باستخدام إذن "tabs" في علامة التبويب الحالية. ويحلّ محلّ الحاجة إلى ""<all_urls>"" في العديد من الحالات، ولا يعرض أي تحذير عند التثبيت.

بدون علامة التبويب النشطة:

واجهة مستخدم الأذونات بدون علامة تبويب نشطة

باستخدام علامة التبويب النشطة:

واجهة مستخدم الأذونات وعلامة التبويب النشِط

يمنح الإذن activeTab إضافة وصول مؤقت إلى علامة التبويب النشطة حاليًا عند استدعاء المستخدم للإضافة. وإذا تم اختراق الإضافة، سيتعين على المهاجم الانتظار حتى يستدعي المستخدم الإضافة قبل الحصول على إمكانية الوصول، ولن يستمر هذا الوصول إلا إلى أن يتم الانتقال إلى علامة التبويب أو إغلاقها.

عندما يكون إذن "activeTab" مفعَّلاً لإحدى علامات التبويب، يمكن للإضافة إجراء ما يلي:

  • يمكنك الاتصال بـ tabs.executeScript أو tabs.insertCSS على علامة التبويب هذه.
  • احصل على عنوان URL والعنوان والرمز المفضّل لعلامة التبويب هذه من خلال واجهة برمجة تطبيقات تعرض الكائن tabs.Tab.
  • يمكنك اعتراض طلبات الشبكة في علامة التبويب للوصول إلى أصل الإطار الرئيسي لعلامة التبويب باستخدام واجهة برمجة التطبيقات webRequest. تحصل الإضافة مؤقتًا على أذونات المضيف لأصل الإطار الرئيسي لعلامة التبويب.

تعمل إيماءات المستخدم التالية على تفعيل activeTab:

جارٍ السماح بالوصول

إذا تطلّبت الإضافة الوصول إلى عناوين URL على file:// أو استخدام "وضع التصفّح المتخفي"، على المستخدمين تفعيل إمكانية الوصول إلى هذه الميزات من صفحة تفاصيل الإضافة على chrome://extensions.

السماح بعناوين URL للملفات ووضع التصفّح المتخفي في صفحة تفاصيل الإضافة

يمكن للإضافة اكتشاف ما إذا كانت مفعلة في وضع التصفّح المتخفي من خلال استدعاء extension.isAllowedIncognitoAccess() أو إمكانية تشغيلها على file:// من عناوين URL باستخدام extension.isAllowedFileSchemeAccess() .

فهم الأذونات

هناك تحذيرات بشأن الأذونات لوصف الإمكانات التي تمنحها واجهة برمجة التطبيقات لمستخدمي الإضافات، ولكن قد لا تكون بعض هذه التحذيرات واضحة في البداية. على سبيل المثال، تؤدي إضافة إذن "tabs" إلى تحذير غير ذي صلة على ما يبدو: يمكن للإضافة قراءة نشاط التصفّح. ومع أنّه قد يتم استخدام واجهة برمجة التطبيقات chrome.tabs لفتح علامات التبويب الجديدة فقط، يمكن استخدامها أيضًا للاطّلاع على عنوان URL المرتبط بكل علامة تبويب تم فتحها حديثًا باستخدام عناصر tabs.Tab.

عند الإمكان، نفِّذ أذونات اختيارية أو واجهة برمجة تطبيقات أقل فعالية لتجنب التحذيرات المقلقة.

عرض التحذيرات

لن يتم عرض أي تحذيرات بشأن الأذونات إذا تم تحميل الإضافة كملف غير مضغوط. لعرض تحذيرات أذونات الإضافات، انتقِل إلى chrome://extensions وتأكَّد من تفعيل وضع مطوّر البرامج وانقر على إضافة حزمة.

يتم التحقّق من &quot;وضع مطوّر البرامج&quot; ثم النقر على &quot;حزمة الإضافة&quot;

حدِّد المسار إلى مجلد الإضافة في حقل الدليل الجذر للإضافة، ثم انقر على الزر حزمة الإضافة. تجاهل حقل المفتاح الخاص لحزمة المرة الأولى.

حدِّد مسار الإضافة ثم انقر على &quot;حزمة الإضافة&quot;

سينشئ Chrome ملفَين، ملف .crx وملف .pem يحتوي على المفتاح الخاص للإضافة.

ملفات الإضافات المجمَّعة

لا تفقد المفتاح الخاص. احتفظ بملف .pem في مكان سري وآمن، حيث سيحتاج إلى تحديث الإضافة.

ثبِّت ملف .crx من خلال إفلاته في صفحة "إدارة" إضافة Chrome.

أفلِت الملف لتثبيته.

بعد إسقاط ملف .crx، سيسألك المتصفّح عما إذا كان من الممكن إدراج الإضافة وسيعرض تحذيرات.

تحذير بشأن إضافة علامة تبويب جديدة

الأذونات التي تتضمّن تحذيرات

ملاحظة: يتم تحديث جداول الأذونات وفقًا لأفضل الإمكانيات المتاحة، وقد تحتوي على اختلافات طفيفة مع التحذيرات الحالية. بالإضافة إلى ذلك، قد لا تعرض بعض الأذونات تحذيرات عند إقرانها بأذونات أخرى. على سبيل المثال، لن يظهر التحذير "tabs" إذا كانت الإضافة تطلب "<all_urls>" أيضًا. للتحقّق من أحدث التحذيرات المعروضة لأذونات الإضافات، اتّبِع الخطوات الواردة في عرض التحذيرات.

الإذن الوصف تحذير
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<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" يسمح هذا الإذن للإضافة باستخدام واجهة برمجة التطبيقات للموقع الجغرافي في 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 في البيان.