הגנה על פרטיות המשתמשים

המשתמשים לא יתקינו תוסף אם הוא פוגע בפרטיות שלהם או מבקשים הרשאות נוספות שנראה שהם צריכים. בקשות הרשאה צריכות להיות הגיוניות למשתמשים ומוגבלות למידע הקריטי שנדרש להטמעת התוסף. תוספים שאוספים או מעבירים נתוני משתמש, חייבים לפעול בהתאם למדיניות שמפורטות בקטע הגנה על פרטיות המשתמשים.

הגנו על המשתמשים בתוספים ולכבד אותם על ידי הכללת אמצעי הזהירות האלה לשמירה על הזהות שלהם.

הפחתת ההרשאות הנדרשות

ממשקי ה-API שתוסף יכול לגשת אליהם מפורטים בשדה permissions של המניפסט. ככל שמוענקים יותר הרשאות, כך יש לתוקפים יותר דרכים ליירט מידע. יש לציין רק את ממשקי ה-API שהתוסף שלהם תלוי בהם, ויש לשקול אפשרויות פחות פולשניות. ככל שהתוסף מבקש פחות הרשאות, כך יוצגו למשתמש פחות אזהרות לגבי הרשאות. קיימת סבירות גבוהה יותר שמשתמשים יתקינו תוסף עם אזהרות מוגבלות.

אסור לתוספים לשמש כ "הוכחות עתידיות" לנתוני משתמשים על ידי בקשת הרשאות שלא נחוצות להם כרגע, אבל אפשר להטמיע אותן בעתיד. מומלץ לכלול הרשאות חדשות בעדכוני התוספים, ולשקול להגדיר אותן כאופציונליות.

activeTab

תוספים שמשתמשים בהרשאות מארח כדי להחדיר סקריפטים יכולים לעיתים קרובות להחליף את 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/" ],
  ...
}

הוספה של הרשאות אופציונליות מאפשרת לתוסף להסביר למה צריך לקבל הרשאה מסוימת כשהמשתמש מפעיל את התכונה הרלוונטית. התוסף יכול להציע למשתמש אפשרות להפעיל תכונות.

צילום מסך של חלון קופץ שמבקש להפעיל הרשאות

לחיצה על אישור! תפעיל את האירוע הבא ב-Service Worker.

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});
  }
}