מצהירים על הרשאות ומזהירים משתמשים

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

ארגון ההרשאות

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

{
  "name": "Permissions Extension",
  ...
  // required permissions
  "permissions": [
    "activeTab",
    "contextMenus",
    "storage"
  ],
  // optional permissions
  "optional_permissions": [
    "topSites",
    "http://www.developer.chrome.com/*"
  ],
      ...
  "manifest_version": 2
}

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

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

זיהוי ההרשאות הנדרשות

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

אזהרות לגבי הרשאות של תוספים בהתקנה

לזהות את הפונקציונליות העיקרית של תוסף ואילו הרשאות נדרשות לו. כדאי להגדיר שהפיצ'רים יהיו אופציונליים אם צריך לתת להם הרשאות עם אזהרות.

הפעלת הרשאות אופציונליות באירועים

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

לחצן תוסף שמאפשר תכונות נוספות

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

אזהרה לגבי תוסף ל-topSites API

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

מחליפים את ההרשאה activeTab

ההרשאה activeTab מעניקה גישה זמנית לאתר שבו המשתמש נמצא ומאפשרת לתוסף להשתמש בהרשאה "tabs" בכרטיסייה הנוכחית. במקרים רבים, הגרסה הזו מחליפה את הצורך ב-"<all_urls>" ולא מוצגת אזהרה לגבי ההתקנה.

ללא activeTab:

ממשק משתמש להרשאות ללא activeTab

עם activeTab:

ממשק משתמש להרשאות עם activeTab

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

כשההרשאה activeTab מופעלת לכרטיסייה, התוסף יכול:

  • מתקשרים tabs.executeScript או tabs.insertCSS בכרטיסייה הזו.
  • תוכלו לקבל את כתובת ה-URL, הכותרת והסמל של הכרטיסייה הזו דרך API שמחזיר אובייקט tabs.Tab.
  • יירוט בקשות רשת בכרטיסייה למקור של המסגרת הראשית של הכרטיסייה באמצעות ה-API webRequest. התוסף מקבל באופן זמני הרשאות מארח עבור מקור המסגרת הראשית של הכרטיסייה.

תנועות המשתמש הבאות מפעילות את activeTab:

אישור גישה

אם תוסף צריך לגשת לכתובות URL של file:// או לפעול במצב פרטי, המשתמשים יצטרכו להפעיל גישה לתכונות האלה בתוך דף הפרטים של התוסף ב-chrome://extensions.

התר כתובות אתרים של קבצים ומצב פרטי בדף הפרטים של התוסף

תוסף יכול לזהות אם הוא מופעל במצב פרטי על ידי התקשרות אל extension.isAllowedIncognitoAccess() או באמצעות כתובות URL מסוג file:// עם extension.isAllowedFileSchemeAccess() .

הסבר על הרשאות

אזהרות לגבי הרשאות נועדו לתאר את היכולות ש-API מעניק למשתמשי התוסף, אבל יכול להיות שחלק מהאזהרות האלה לא יהיו ברורות בהתחלה. לדוגמה, ההוספה של ההרשאה "tabs" מובילה להצגת אזהרה שלכאורה אינה קשורה: התוסף יכול לקרוא את פעילות הגלישה. אפשר להשתמש ב-API chrome.tabs רק כדי לפתוח כרטיסיות חדשות, אבל אפשר להשתמש בו גם כדי לראות את כתובת ה-URL שמשויכת לכל כרטיסייה חדשה שנפתחה באמצעות האובייקטים tabs.Tab שלהם.

כשזה אפשרי, כדאי להטמיע הרשאות אופציונליות או ממשק API פחות חזק כדי למנוע הצגת אזהרות.

הצגת אזהרות

לא יוצגו אזהרות לגבי הרשאות אם תוסף נטען כקובץ לא ארוז. כדי לראות אזהרות לגבי הרשאות של תוספים, עוברים אל chrome://extensions, מוודאים שמצב הפיתוח מופעל ולוחצים על PACK Extension (חבילת תוסף).

מצב פיתוח מסומן ולאחר מכן לוחצים על &#39;חבילת תוסף&#39;

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

יש לציין נתיב תוסף וללחוץ על &#39;חבילת תוסף&#39;

Chrome ייצור שני קבצים, קובץ .crx וקובץ .pem, שמכיל את המפתח הפרטי של התוסף.

קובצי תוספים ארוזים

לא כדאי לאבד את המפתח הפרטי! צריך לשמור את הקובץ .pem בסוד ומאובטח, כי יהיה צריך לעדכן את התוסף.

כדי להתקין את הקובץ .crx, משחררים אותו בדף הניהול של תוסף Chrome.

שחרור הקובץ לצורך התקנה

אחרי שמשחררים את הקובץ .crx, הדפדפן ישאל אם אפשר להוסיף את התוסף ויציג אזהרות.

אזהרה לגבי תוסף כרטיסייה חדשה

הרשאות עם אזהרות

הערה: טבלאות ההרשאות מתעדכנות על בסיס התוצאה הטובה ביותר, וייתכן שיהיו בהן אי-התאמות קלות לעומת האזהרות הנוכחיות. בנוסף, יכול להיות שהרשאות מסוימות לא יציגו אזהרות כשהן מותאמות להרשאות אחרות. לדוגמה, האזהרה "tabs" לא תופיע אם התוסף יבקש גם "<all_urls>". כדי לבדוק את האזהרות האחרונות לגבי הרשאות לתוספים, פועלים לפי השלבים בקטע Viewing warnings (הצגת אזהרות).

הרשאה התיאור אזהרה
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
מעניק לתוסף גישה לכל המארחים. אפשר להימנע מהצהרה על הרשאות מארח באמצעות ההרשאה activeTab. לקרוא ולשנות את כל הנתונים שלכם באתרים שאליהם נכנסתם
"https://HostName.com/" מעניק לתוסף גישה אל "https://HostName.com/". אפשר להימנע מהצהרה על הרשאות מארח באמצעות ההרשאה activeTab. לקרוא ולשנות את הנתונים שלך ב-HostName.com
"bookmarks" מעניק לתוסף גישה לממשק ה-API של chrome.bookmarks. לקרוא ולשנות את הסימניות
"clipboardRead" חובה אם התוסף משתמש ב-document.execCommand('paste'). קריאת נתונים שהעתקתם והדבקתם
"clipboardWrite" התוסף מציין שהתוסף משתמש ב-document.execCommand('copy') או ב-document.execCommand('cut'). שינוי נתונים שהעתקתם והדבקתם
"contentSettings" מעניק לתוסף גישה אל chrome.contentSettings API. שינוי ההגדרות ששולטות בגישה של אתרים לתכונות כמו קובצי cookie, JavaScript, יישומי פלאגין, מיקום גיאוגרפי, מיקרופון, מצלמה וכו'.
"debugger" מעניק לתוסף גישה אל chrome.debugger API.
  • גישה לקצה העורפי של הכלי לניפוי באגים בדף
  • לקרוא ולשנות את כל הנתונים שלכם באתרים שאליהם נכנסתם
"declarativeNetRequest" מעניק לתוסף גישה אל chrome.declarativeNetRequest API. חסימת תוכן הדף
"desktopCapture" מעניק לתוסף גישה אל chrome.desktopCapture ה-API. צילום תוכן במסך
"downloads" מעניק לתוסף גישה לממשק ה-API של chrome.downloads. ניהול ההורדות
"geolocation" התוסף יוכל להשתמש בממשק ה-API למיקום גיאוגרפי של HTML5 בלי לבקש הרשאה מהמשתמש. זיהוי המיקום הפיזי
"history" מעניק לתוסף גישה אל chrome.history API. לקרוא ולשנות את היסטוריית הגלישה
"management" מעניק לתוסף גישה אל chrome.management API. ניהול האפליקציות, התוספים והעיצובים שלך
"nativeMessaging" מעניק לתוסף גישה אל ה-API לשליחת הודעות מותאמות. תקשורת עם אפליקציות מקוריות שעובדות בשיתוף פעולה
"notifications" מעניק לתוסף גישה ל-chrome.notifications API. הצגת התראות
"pageCapture" מעניק לתוסף גישה אל chrome.pageCapture ה-API. לקרוא ולשנות את כל הנתונים שלכם באתרים שאליהם נכנסתם
"privacy" מעניק לתוסף גישה אל chrome.privacy API. שינוי הגדרות הפרטיות שלכם
"proxy" מעניק לתוסף גישה ל-chrome.proxy API. לקרוא ולשנות את כל הנתונים שלכם באתרים שאליהם נכנסתם
"system.storage" מעניק לתוסף גישה לממשק ה-API של chrome.system.storage. זיהוי והוצאה של התקני אחסון
"tabCapture" מעניק לתוספים גישה לממשק ה-API של chrome.tabCapture. לקרוא ולשנות את כל הנתונים שלכם באתרים שאליהם נכנסתם
"tabs" מעניק לתוסף גישה לשדות מורשים של האובייקטים של Tab שמשמשים מספר ממשקי API, כולל chrome.tabs ו-chrome.windows. במקרים רבים, התוסף לא יצטרך להצהיר על ההרשאה "tabs" כדי להשתמש בממשקי ה-API האלה. לקרוא את היסטוריית הגלישה
"topSites" מעניק לתוסף גישה ל-chrome.topSites API. איך לקרוא רשימה של האתרים שאליהם נכנסת בתדירות הגבוהה ביותר
"ttsEngine" מעניק לתוסף גישה לממשק ה-API של chrome.ttsEngine. קריאת כל הטקסט הנאמר באמצעות דיבור מסונתז
"webNavigation" מעניק לתוסף גישה ל-chrome.webNavigation API. לקרוא את היסטוריית הגלישה

עדכון ההרשאות

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

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

הרשאה להוספת כרטיסיות

אם התוסף יתעדכן אוטומטית, הוא יושבת עד שהמשתמש יסכים להרשאות החדשות.

התוסף הושבת

הסכמה להרשאות

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