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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

החלפה של הרשאת ActiveTab

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

ללא ActiveTab:

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

באמצעות ActiveTab:

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

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

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

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

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

מתן גישה

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

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

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

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

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

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

הצגת האזהרות

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

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

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

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

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

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

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

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

משחררים את הקובץ כדי להתקין

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

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

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

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

הרשאה תיאור אזהרה
  • "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" מעניק לתוסף גישה ל-API chrome.debugger.
  • גישה לקצה העורפי של הכלי לניפוי באגים בדף
  • לקרוא ולשנות את כל הנתונים שלכם באתרים שאליהם אתם נכנסים
"declarativeNetRequest" מעניק לתוסף גישה ל-API chrome.declarativeNetRequest. חסימת תוכן בדף
"desktopCapture" התפקיד הזה מאפשר לתוסף גישה ל-API chrome.desktopCapture. צילום התוכן מהמסך
"downloads" מעניק לתוסף גישה ל-API chrome.downloads. ניהול ההורדות
"geolocation" התוסף יכול להשתמש ב-geolocation API של HTML5 בלי לבקש הרשאה מהמשתמש. זיהוי המיקום הפיזי שלכם
"history" מעניק לתוסף גישה לממשק ה-API chrome.history. קריאה ושינוי של היסטוריית הגלישה
"management" מעניק לתוסף גישה לממשק ה-API chrome.management. ניהול האפליקציות, התוספים והעיצובים
"nativeMessaging" מעניקה לתוסף גישה ל-API להעברת הודעות נייטיב. תקשורת עם אפליקציות מקוריות שמשתפים פעולה
"notifications" התפקיד הזה מאפשר לתוסף גישה ל-API chrome.notifications. הצגת התראות
"pageCapture" מעניק לתוסף גישה לממשק ה-API של chrome.pageCapture. לקרוא ולשנות את כל הנתונים שלכם באתרים שאליהם אתם נכנסים
"privacy" מעניקה לתוסף גישה ל-API chrome.privacy. שינוי של הגדרות שקשורות לפרטיות
"proxy" מעניק לתוסף גישה לממשק ה-API של chrome.proxy. לקרוא ולשנות את כל הנתונים שלכם באתרים שאליהם אתם נכנסים
"system.storage" מעניק לתוסף גישה לממשק ה-API של chrome.system.storage. זיהוי והוצאה של התקני אחסון
"tabCapture" התפקיד הזה מעניק לתוספים גישה אל chrome.tabCapture API. לקרוא ולשנות את כל הנתונים שלכם באתרים שאליהם אתם נכנסים
"tabs" התפקיד הזה מאפשר לתוסף גישה לשדות בעלי הרשאות של האובייקטים Tab שמשמשים את מספר ממשקי ה-API כולל chrome.tabs ו-chrome.windows. לחשבון בנסיבות רבות אין צורך להצהיר על ההרשאה ל-"tabs" כדי להשתמש בתוסף ממשקי ה-API האלה. קריאת היסטוריית הגלישה
"topSites" מעניק לתוסף גישה לממשק ה-API של chrome.topSites. איך לקרוא רשימה של האתרים שאליהם אתם נכנסים בתדירות הגבוהה ביותר
"ttsEngine" מעניק לתוסף גישה לממשק ה-API של chrome.ttsEngine. קריאת כל הטקסט שנאמר באמצעות דיבור מסונתז
"webNavigation" התפקיד הזה מעניק גישה לממשק ה-API של chrome.webNavigation. קריאת היסטוריית הגלישה

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

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

אם המשתמש מעדכן באופן ידני תוסף שכולל עכשיו את ההרשאה tabs (כרטיסיות), הוא יקבל אזהרה בדף הניהול.

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

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

התוסף הושבת

אישור ההרשאות

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