از حریم خصوصی کاربر محافظت کنید

اگر کاربران یک برنامه افزودنی را به خطر بیاندازند یا مجوزهای بیشتری را که به نظر می رسد نیاز دارند بخواهند نصب نمی کنند. درخواست های مجوز باید برای کاربران منطقی باشد و محدود به اطلاعات حیاتی لازم برای اجرای برنامه افزودنی باشد. برنامه‌های افزودنی که داده‌های کاربر را جمع‌آوری یا انتقال می‌دهند باید با خط‌مشی‌های تحت حفاظت از حریم خصوصی کاربر مطابقت داشته باشند.

با در نظر گرفتن این اقدامات احتیاطی برای ایمن نگه داشتن هویت از کاربران برنامه افزودنی محافظت و به آنها احترام بگذارید.

مجوزهای مورد نیاز را کاهش دهید

APIهایی که یک برنامه افزودنی می تواند به آنها دسترسی داشته باشد در قسمت permissions مانیفست مشخص شده اند. هرچه مجوزهای بیشتری داده شود، مهاجم راه های بیشتری برای رهگیری اطلاعات دارد. فقط APIهایی که یک برنامه افزودنی به آنها وابسته است باید فهرست شوند و باید به گزینه های کمتر تهاجمی توجه شود. هرچه یک برنامه افزودنی مجوز کمتری درخواست کند، هشدارهای مجوز کمتری به کاربر نشان داده می شود. احتمال نصب افزونه با اخطارهای محدود توسط کاربران بیشتر است.

برنامه‌های افزودنی نباید با درخواست مجوزهایی که در حال حاضر نیازی به آن ندارند، اما ممکن است در آینده اجرا شوند، به داده‌های کاربر «آینده اثبات» دسترسی داشته باشند. مجوزهای جدید را با به‌روزرسانی‌های برنامه افزودنی اضافه کنید و آنها را اختیاری کنید.

فعال تب

برنامه‌های افزودنی که از مجوزهای میزبان برای تزریق اسکریپت‌ها استفاده می‌کنند، اغلب می‌توانند به جای آن، activeTab جایگزین کنند. مجوز activeTab تنها زمانی که کاربر برنامه افزودنی را فراخوانی می کند ، به یک برنامه افزودنی دسترسی موقت به برگه فعال فعلی اعطا می کند. هنگامی که کاربر از برگه فعلی دور می شود یا آن را می بندد، دسترسی قطع می شود. به عنوان جایگزینی برای بسیاری از کاربردهای <all_urls> عمل می کند.

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

مجوز activeTab هیچ پیام هشداری را در حین نصب نمایش نمی دهد.

مجوزهای اختیاری را انتخاب کنید

با گنجاندن مجوزهای اختیاری، به کاربران این امکان را بدهید که انتخاب کنند به کدام ویژگی ها و مجوزها نیاز دارند. اگر یک ویژگی برای عملکرد اصلی یک برنامه افزودنی ضروری نیست، آن را اختیاری کنید و API یا دامنه را به قسمت optional_permissions منتقل کنید.

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

گنجاندن مجوزهای اختیاری به افزونه اجازه می‌دهد توضیح دهد که چرا وقتی کاربر ویژگی مربوطه را فعال می‌کند، به مجوز خاصی نیاز دارد. افزونه می تواند گزینه ای برای فعال کردن ویژگی ها به کاربر ارائه دهد.

تصویری از یک پنجره بازشو که درخواست فعال کردن مجوزها را دارد

کلیک کردن Okay! رویداد زیر را در سرویس‌کار راه‌اندازی می‌کند.

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 برای اتصال استفاده کنید و از نگهداری اطلاعات حساس کاربر در سمت سرویس گیرنده برنامه افزودنی خودداری کنید زیرا فضای ذخیره سازی افزونه رمزگذاری نشده است.

ذخیره داده و حالت ناشناس

برنامه‌های افزودنی می‌توانند داده‌ها را با استفاده از API ذخیره‌سازی یا با ایجاد درخواست‌های سرور که منجر به ذخیره داده‌ها می‌شوند، ذخیره کنند. هنگامی که برنامه افزودنی نیاز به ذخیره چیزی دارد، ابتدا در نظر بگیرید که آیا از یک پنجره ناشناس است یا خیر. به طور پیش‌فرض، برنامه‌های افزودنی در پنجره‌های ناشناس اجرا نمی‌شوند.

حالت ناشناس وعده می دهد که پنجره هیچ ردی از خود باقی نخواهد گذاشت. هنگام برخورد با داده‌های پنجره‌های ناشناس، برنامه‌های افزودنی باید این وعده را رعایت کنند. اگر یک برنامه افزودنی به طور معمول سابقه مرور را ذخیره می کند، تاریخچه را از پنجره های ناشناس ذخیره نکنید. با این حال، برنامه‌های افزودنی می‌توانند تنظیمات برگزیده را از هر پنجره‌ای، چه به صورت ناشناس و چه غیرمشخص، ذخیره کنند.

برای تشخیص اینکه آیا یک پنجره در حالت ناشناس است، ویژگی incognito مربوطه را بررسی کنید tabs.Tab یا شی windows.Window .

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