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

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

با در نظر گرفتن این اقدامات احتیاطی برای ایمن نگه داشتن هویت کاربران افزونه، از آنها محافظت کرده و به آنها احترام بگذارید. به یاد داشته باشید: هرچه یک افزونه به داده‌های کمتری دسترسی داشته باشد، داده‌های کمتری را می‌تواند به طور تصادفی فاش کند.

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

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

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

اکتیو تب

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

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

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

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

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

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

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

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

کلیک روی «Ok!» رویداد زیر را در اسکریپت پس‌زمینه فعال می‌کند.

document.querySelector('#button').addEventListener('click', function(event) {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request({
    permissions: ['tabs'],
    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 برای اتصال استفاده کنید و از نگهداری داده‌های حساس کاربر در سمت کلاینت افزونه خودداری کنید زیرا فضای ذخیره‌سازی افزونه رمزگذاری نشده است.