الحفاظ على خصوصية المستخدم

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

حماية مستخدمي الإضافات واحترامهم من خلال تضمين هذه الاحتياطات للحفاظ على أمان هويتهم.

تقليل الأذونات المطلوبة

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

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

activeTab

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

{
  "name": "Very Secure Extension",
  "version": "1.0",
  "description": "Example of a Secure Extension",
  "permissions": ["activeTab"],
  "manifest_version": 3
}

لا يعرض إذن ActiveTab أي رسائل تحذير أثناء التثبيت.

تفعيل الأذونات الاختيارية

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

{
  "name": "Very Secure Extension",
  ...
  "optional_permissions": [ "tabs", ],
  "optional_host_permissions": ["https://www.google.com/" ],
  ...
}

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

لقطة شاشة لنافذة منبثقة تطلب منك تفعيل الأذونات

سيؤدي النقر على حسنًا! إلى تشغيل الحدث التالي في مشغّل الخدمات.

chrome.action.onClicked.addListener((event) => {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request(
    {
      permissions: ["tabs", "scripting"],
      origins: ['https://www.google.com/']
    },
    function (granted) {
      // The callback argument will be true if the user granted the permissions.
      if (granted) {
        // doSomething();
      } else {
        // doSomethingElse();
      }
    }
  );
});

بعد ذلك، سيُطلب من المستخدم تقديم الطلب التالي.

لقطة شاشة لطلب أذونات اختيارية

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

تقييد معلومات المستخدم وتأمينها

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

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

يتم توفير البيانات ووضع التصفّح المتخفي.

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

يَعد وضع التصفُّح المتخفي بأن النافذة لن تترك أي مسارات في الخلفية. عند التعامل مع البيانات من نوافذ التصفح المتخفي، يجب أن تلتزم الإضافات بهذا الوعد. إذا كانت إحدى الإضافات تحفظ سجلّ التصفُّح عادةً، يجب عدم حفظ السجلّ من نوافذ التصفّح المتخفي. ومع ذلك، يمكن للإضافات تخزين الإعدادات المفضّلة من أي نافذة، سواء في وضع التصفّح المتخفي أو غيره.

لمعرفة ما إذا كانت النافذة في وضع التصفّح المتخفي أم لا، اطّلِع على السمة incognito للعنصر tabs.Tab أو windows.Window ذي الصلة.

function saveTabData(tab) {
  if (tab.incognito) {
    return;
  } else {
    chrome.storage.local.set({data: tab.url});
  }
}